34 Commits
0.0.1 ... 0.5.0

Author SHA1 Message Date
7512939626 Updated changelog 2016-07-17 15:31:01 +02:00
e4ac118212 Removed Travis Test; Update travis build; Added Molecule tests; Updated default installation version 2016-07-17 15:15:22 +02:00
6e990c9a03 Merge pull request #5 from stvnwrgs/feature/add_extra_plugins_to_telegrafd_folder
Feature/add extra plugins to telegrafd folder
2016-06-23 18:53:54 +02:00
01d05b0a88 added template for extra plugins 2016-06-23 12:56:59 +02:00
cf37fb1d2e moved extra plugins to extra configs in telegraf.d and changed the main.yml to more yml stylish definitions 2016-04-06 16:11:48 +02:00
4bd9a85f94 Updated the urls 2016-02-06 16:06:40 +01:00
fe287f5d7c Fixes for serverspec 2016-02-06 15:58:43 +01:00
a733de5695 Updating Readme 2016-02-05 20:01:27 +01:00
f28ba37db5 Removed default entry 'telegraf_plugins_extra' 2016-02-05 19:51:31 +01:00
54f2b75af5 Added build status 2016-01-31 19:31:48 +01:00
bbcd52e32f Fixed installation for Ubuntu 2016-01-31 18:49:58 +01:00
e2205aa7d8 Fixed test and added travis. 2016-01-31 18:41:25 +01:00
66e20cd7f6 Updated to 0.10.1 default version 2016-01-31 16:10:05 +01:00
720e9c94da Updated documentation and changelog for new version 2016-01-13 15:55:16 +01:00
ec993c2066 Made it work with telegraf 0.10.0 2016-01-13 15:50:54 +01:00
fabb511365 Updated CHANGELOG; added Gemfile.lock; Added aferrari-technisys as contributor 2015-11-14 16:08:31 +01:00
6f7d970595 Fixed kitchen test setup 2015-11-14 14:43:29 +01:00
18cfcd8cff Adding "net" to be used 2015-11-01 12:12:38 +01:00
5692928cb3 Removed options 2015-11-01 08:31:32 +01:00
aa391d97f9 Merge pull request #2 from aferrari-technisys/master
Update etc-opt-telegraf-telegraf.conf.j2
2015-10-29 15:31:39 +01:00
64f62c8dc5 Update etc-opt-telegraf-telegraf.conf.j2
Fix missing line into config result after apply template
2015-10-29 10:10:06 -03:00
8a869e7a0e Merge pull request #1 from aferrari-technisys/master
Improvement and upgrade for v0.2.0 of telegraf
2015-10-29 14:00:31 +01:00
ef8ecffbdf Update etc-opt-telegraf-telegraf.conf.j2
Added Specifications to Extra section too.
2015-10-29 09:56:35 -03:00
37f3a8e208 Update main.yml
Moved procstat to EXTRA section that need custom process name that can apply only in some hosts
2015-10-29 09:55:44 -03:00
a3951d52a8 Update README.md
Updated Readme for 0.2.0 version
2015-10-29 09:54:51 -03:00
3f7f83cfc4 Added iteration for specifications
with procstats plugin a new config value exist called "specifications" is similar to config but this plugin call specifications.
2015-10-29 09:49:39 -03:00
677950be23 Updated version and added plugins
Updated for 0.2.0 version and added plugins netstat and procstat that has new  "specifications" params
2015-10-29 09:47:54 -03:00
a41e4f9c84 Updated to release 0.1.0 2015-09-23 19:25:15 +02:00
890e48c82d Added possibility to use pass, drop, tagpass, tagdrop and interval 2015-09-23 19:24:57 +02:00
ac27a7a9eb Added notify on installation of package 2015-09-23 19:24:01 +02:00
7cc9e52d85 Updated to new telegraf version 2015-09-23 19:23:07 +02:00
43e5e633fd Added changelogd 2015-09-20 18:47:02 +02:00
2239f59c85 Added an ":" for correct usage 2015-09-20 16:27:19 +02:00
4196a74c22 Forgot to update meta file 2015-09-20 14:37:17 +02:00
23 changed files with 434 additions and 235 deletions

10
.gitignore vendored
View File

@ -1,3 +1,7 @@
.kitchen/ .idea
.kitchen.local.yml .molecule
.idea/ tests/.cache
.cache
__pycache__
*.retry
pmip

View File

@ -1,19 +0,0 @@
---
driver:
name: docker
provisioner:
name: ansible_playbook
ansible_yum_repo: "http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm"
hosts: localhost
platforms:
- name: centos-6.6
verifier:
ruby_bindir: '/usr/bin'
suites:
- name: default
run_list:
attributes:

17
.travis.yml Normal file
View File

@ -0,0 +1,17 @@
---
sudo: required
language: python
services:
- docker
before_install:
- sudo apt-get -qq update
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
install:
- pip install molecule
script:
- molecule test
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

55
CHANGELOG.md Normal file
View File

@ -0,0 +1,55 @@
dj-wasabi.telegraf
------------------
Below an overview of all changes in the releases.
Version (Release date)
0.5.0 (2016-07-17)
* Removed Test Kitchen tests
* Added Molecule tests and travis make use of them
* Updated default version to 1.0.0 beta2
* Feature/add extra plugins to telegrafd folder #5 (By pull request: stvnwrgs (Thanks!))
0.4.0 (2016-02-05)
* Fixed test for test-kitchen
* Added travis-ci test for testing default installation when PR is made
* Fixed Download url for Debian
* Removed default entry for telegraf_plugins_extra
0.3.0 (2016-01-13)
* Made it work with telegraf 0.10.0
* Default installation: 0.10.0
0.2.0 (2015-11-14)
* Fixed kitchen test setup
* Adding "net" to the telegraf_plugins_default property
* Update etc-opt-telegraf-telegraf.conf.j2 #2 (By pull request: aferrari-technisys (Thanks!))
* Improvement and upgrade for v0.2.0 of telegraf #1 (By pull request: aferrari-technisys (Thanks!))
0.1.0 (2015-09-23)
* Updated `telegraf_agent_version` to 0.1.9
* Added restart when package is changed (When updated for example)
* Added several plugin options:
* pass
* drop
* tagpass
* tagdrop
* interval
* Updated documentation
0.0.2 (2015-09-20)
* Updated README dus to missing colon
* Forgot to update the meta file
* Added Changelog file
0.0.1 (2015-09-20)
* Initial release

View File

@ -1,5 +0,0 @@
source "https://rubygems.org"
gem "test-kitchen"
gem "kitchen-docker"
gem "kitchen-ansible"

View File

@ -1,6 +1,10 @@
dj-wasabi.telegraf dj-wasabi.telegraf
========= =========
Build status:
[![Build Status](https://travis-ci.org/dj-wasabi/ansible-telegraf.svg?branch=master)](https://travis-ci.org/dj-wasabi/ansible-telegraf)
This role will install and configure telegraf. This role will install and configure telegraf.
Telegraf is an agent written in Go for collecting metrics from the system it's running on, or from other services, and writing them into InfluxDB. Telegraf is an agent written in Go for collecting metrics from the system it's running on, or from other services, and writing them into InfluxDB.
@ -19,11 +23,14 @@ Role Variables
The following parameters can be set for the Telegraf agent: The following parameters can be set for the Telegraf agent:
* `telegraf_agent_version`: The version of Telegraf to install. Default: `0.1.8` * `telegraf_agent_version`: The version of Telegraf to install. Default: `1.0.0`
* `telegraf_agent_rpm_url`: The full path to the RPM file located on a webserver.
* `telegraf_agent_deb_url`: The full path to the DEB file located on a webserver.
* `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10` * `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10`
* `telegraf_agent_debug`: Setting the Telegraf in debug mode. Default: `False` * `telegraf_agent_debug`: Setting the Telegraf in debug mode. Default: `False`
* `telegraf_agent_utc`: Option for outputting data in UTC. Default: `True` * `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True
* `telegraf_agent_precision`: Precision to write data at. Valid values for Precision are n, u, ms, s, m, and h. Default: `s` * `telegraf_agent_flush_interval`: Default data flushing interval for all outputs. Default: 10
* `telegraf_agent_flush_jitter`: Jitter the flush interval by a random amount. Default: 0
You can set tags for the host running telegraf: You can set tags for the host running telegraf:
@ -36,7 +43,7 @@ Specifying an output. The default is set to localhost, you'll have to specify th
telegraf_agent_output: telegraf_agent_output:
- type: influxdb - type: influxdb
config: config:
- url = "http://localhost:8086" - urls = ["http://localhost:8086"]
- database = "telegraf" - database = "telegraf"
The config will be printed line by line into the configuration, so you could also use: The config will be printed line by line into the configuration, so you could also use:
@ -62,18 +69,38 @@ With the property `telegraf_plugins_default` it is set to use the default set of
- plugin: mem - plugin: mem
- plugin: system - plugin: system
- plugin: swap - plugin: swap
- plugin: netstat
Every telegraf agent has these as an default configuration. Every telegraf agent has these as an default configuration.
The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific to the servers goal. Following is an example for using this parameter for MySQL database servers: The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific to the servers goal. Following is an example for using this parameter for MySQL database servers:
cat group_vars/mysql_database cat group_vars/mysql_database
telegraf_plugins_extra telegraf_plugins_extra:
- plugin: mysql - plugin: mysql
config: config:
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"] - servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
Telegraf plugin options:
* `pass`: An array of strings that is used to filter metrics generated by the current plugin. Each string in the array is tested as a prefix against metric names and if it matches, the metric is emitted.
* `drop`: The inverse of pass, if a metric name matches, it is not emitted.
* `tagpass`: (added in Telegraf 0.1.5) tag names and arrays of strings that are used to filter metrics by the current plugin. Each string in the array is tested as an exact match against the tag name, and if it matches the metric is emitted.
* `tagdrop`: (added in Telegraf 0.1.5) The inverse of tagpass. If a tag matches, the metric is not emitted. This is tested on metrics that have passed the tagpass test.
* `interval`: How often to gather this metric. Normal plugins use a single global interval, but if one particular plugin should be run less or more often, you can configure that here.
An example might look like this:
telegraf_plugins_default:
- plugin: disk
interval: 12
tagpass:
- fstype = [ "ext4", "xfs" ]
- path = [ "/opt", "/home" ]
Dependencies Dependencies
------------ ------------
No dependencies No dependencies
@ -85,10 +112,15 @@ Example Playbook
roles: roles:
- { role: dj-wasabi.telegraf } - { role: dj-wasabi.telegraf }
Test Kitchen ##Contributors
------------ The following have contributed to this Ansible role:
This roles is configured to be tested with Test Kitchen. You can find on this page some more information regarding Test Kitchen: http://werner-dijkerman.nl/2015/08/20/using-test-kitchen-with-docker-and-serverspec-to-test-ansible-roles/ * aferrari-technisys
* stvnwrgs
# Molecule
This roles is configured to be tested with Molecule. You can find on this page some more information regarding Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
License License
------- -------

View File

@ -1,19 +1,27 @@
--- ---
# defaults file for ansible-telegraf # defaults file for ansible-telegraf
telegraf_agent_version: 0.1.8 #telegraf_agent_version: 0.10.1
telegraf_agent_version: 1.0.0
telegraf_agent_version_sub_l: _beta2
telegraf_agent_version_sub_u: -beta2
telegraf_agent_interval: 10 telegraf_agent_interval: 10
telegraf_agent_debug: False telegraf_agent_debug: False
telegraf_agent_utc: True telegraf_agent_round_interval: True
telegraf_agent_precision: s telegraf_agent_flush_interval: 10
telegraf_agent_flush_jitter: 0
telegraf_agent_rpm_url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_l }}.x86_64.rpm
telegraf_agent_deb_url: https://dl.influxdata.com/telegraf/releases/telegraf_{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_u }}_amd64.deb
telegraf_agent_tags: telegraf_agent_tags:
telegraf_agent_output: telegraf_agent_output:
- type: influxdb - type: influxdb
config: config:
- url = "http://localhost:8086" - urls = ["http://localhost:8086"]
- database = "telegraf" - database = "telegraf"
- precision = "s"
telegraf_plugins_default: telegraf_plugins_default:
- plugin: cpu - plugin: cpu
@ -22,7 +30,9 @@ telegraf_plugins_default:
- plugin: disk - plugin: disk
- plugin: io - plugin: io
- plugin: mem - plugin: mem
- plugin: net
- plugin: system - plugin: system
- plugin: swap - plugin: swap
- plugin: netstat
telegraf_plugins_extra: telegraf_plugins_extra:

View File

@ -1,139 +1,20 @@
--- ---
galaxy_info: galaxy_info:
author: your name author: Werner Dijkerman
description: description: Installing and configuring Telegraf
company: your company (optional) company:
# If the issue tracker for your role is not on github, uncomment the license: license BSD
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 1.2 min_ansible_version: 1.2
# platforms:
# Below are all platforms currently available. Just uncomment - name: EL
# the ones that apply to your role. If you don't see your versions:
# platform on this list, let us know and we'll get it added! - all
# - name: Ubuntu
#platforms: versions:
#- name: EL - all
# versions: - name: Debian
# - all versions:
# - 5 - all
# - 6 categories:
# - 7 - monitoring
#- name: GenericUNIX
# versions:
# - all
# - any
#- name: Fedora
# versions:
# - all
# - 16
# - 17
# - 18
# - 19
# - 20
# - 21
# - 22
#- name: Windows
# versions:
# - all
# - 2012R2
#- name: SmartOS
# versions:
# - all
# - any
#- name: opensuse
# versions:
# - all
# - 12.1
# - 12.2
# - 12.3
# - 13.1
# - 13.2
#- name: Amazon
# versions:
# - all
# - 2013.03
# - 2013.09
#- name: GenericBSD
# versions:
# - all
# - any
#- name: FreeBSD
# versions:
# - all
# - 8.0
# - 8.1
# - 8.2
# - 8.3
# - 8.4
# - 9.0
# - 9.1
# - 9.1
# - 9.2
#- name: Ubuntu
# versions:
# - all
# - lucid
# - maverick
# - natty
# - oneiric
# - precise
# - quantal
# - raring
# - saucy
# - trusty
# - utopic
# - vivid
#- name: SLES
# versions:
# - all
# - 10SP3
# - 10SP4
# - 11
# - 11SP1
# - 11SP2
# - 11SP3
#- name: GenericLinux
# versions:
# - all
# - any
#- name: Debian
# versions:
# - all
# - etch
# - jessie
# - lenny
# - squeeze
# - wheezy
#
# Below are all categories currently available. Just as with
# the platforms above, uncomment those that apply to your role.
#
#categories:
#- cloud
#- cloud:ec2
#- cloud:gce
#- cloud:rax
#- clustering
#- database
#- database:nosql
#- database:sql
#- development
#- monitoring
#- networking
#- packaging
#- system
#- web
dependencies: [] dependencies: []
# List your role dependencies here, one per line.
# Be sure to remove the '[]' above if you add dependencies
# to this list.

18
molecule.yml Normal file
View File

@ -0,0 +1,18 @@
---
ansible:
playbook: playbook.yml
docker:
containers:
- name: telegraf-centos
ansible_groups:
- group1
image: milcom/centos7-systemd
image_version: latest
privileged: True
- name: telegraf-debian
ansible_groups:
- group2
image: maint/debian-systemd
image_version: latest
privileged: True

15
playbook.yml Normal file
View File

@ -0,0 +1,15 @@
---
- hosts: all
pre_tasks:
- name: "Installing which on CentOS"
action: yum
name=which
state=installed
when: ansible_distribution == 'CentOS'
- name: "Installing wget on Debian"
action: apt
name=wget
state=installed
when: ansible_distribution == 'Debian'
roles:
- role: ansible-telegraf

View File

@ -2,12 +2,13 @@
- name: "Fetch telegraf installation package | Debian" - name: "Fetch telegraf installation package | Debian"
action: get_url action: get_url
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}_amd64.deb url={{ telegraf_agent_deb_url }}
dest=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb dest=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
mode=0440 mode=0440
- name: "Install telegraf package | Debian" - name: "Install telegraf package | Debian"
action: apt action: apt
deb=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb deb=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
state=installed state=installed
notify: "Restart Telegraf"
sudo: yes sudo: yes

View File

@ -1,13 +1,38 @@
--- ---
- name: "Enable EPEL"
action: yum
name=epel-release
state=installed
- name: "Installing some dependencies"
action: yum
name={{ item }}
state=installed
with_items:
- python-pip
- python-devel
- gcc
- libffi-devel
- openssl-devel
- name: "Installing PIP dependensies"
action: pip
name={{ item }}
state=present
with_items:
- urllib3
- pyopenssl
- ndg-httpsclient
- name: "Fetch telegraf installation package | RedHat" - name: "Fetch telegraf installation package | RedHat"
action: get_url action: get_url
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}-1.x86_64.rpm url="{{ telegraf_agent_rpm_url }}"
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
mode=0440 mode=0440
- name: "Install telegraf package | RedHat" - name: "Install telegraf package | RedHat"
action: yum action: yum
name=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm name=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
state=installed state=installed
sudo: yes notify: "Restart Telegraf"

View File

@ -9,12 +9,40 @@
include: "Debian.yml" include: "Debian.yml"
when: ansible_os_family == "Debian" when: ansible_os_family == "Debian"
- name: "Copy the template" - name: "Set fact by remove the dots from version"
action: template set_fact:
src=etc-opt-telegraf-telegraf.conf.j2 telegraf_ver: "{{ telegraf_agent_version.replace('.','') }}"
dest=/etc/opt/telegraf/telegraf.conf
owner=root - name: "Copy the template for versions < 0.10.0"
group=root template:
mode=644 src: etc-opt-telegraf-telegraf.conf.j2
dest: /etc/opt/telegraf/telegraf.conf
owner: root
group: root
mode: 0644
when: telegraf_ver < 100
sudo: yes
notify: "Restart Telegraf"
- name: "Copy the template for versions >= 0.10.0"
template:
src: telegraf.conf.j2
dest: /etc/telegraf/telegraf.conf
owner: root
group: root
mode: 0644
when: telegraf_ver >= 100
sudo: yes
notify: "Restart Telegraf"
- name: "Copy telegraf extra plugins"
template:
src: "telegraf-extra-plugin.conf.j2"
dest: "/etc/telegraf/telegraf.d/{{ item.plugin }}.conf"
owner: root
group: root
mode: 644
with_items: "{{ telegraf_plugins_extra }}"
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
sudo: yes sudo: yes
notify: "Restart Telegraf" notify: "Restart Telegraf"

View File

@ -12,8 +12,6 @@
interval = "{{ telegraf_agent_interval }}s" interval = "{{ telegraf_agent_interval }}s"
debug = {{ telegraf_agent_debug | lower }} debug = {{ telegraf_agent_debug | lower }}
hostname = "{{ ansible_fqdn }}" hostname = "{{ ansible_fqdn }}"
utc = {{ telegraf_agent_utc | lower }}
precision = "{{ telegraf_agent_precision }}"
# Configuration for influxdb server to send metrics to # Configuration for influxdb server to send metrics to
[outputs] [outputs]
@ -30,23 +28,45 @@
{% if telegraf_plugins_default is defined and telegraf_plugins_default is iterable %} {% if telegraf_plugins_default is defined and telegraf_plugins_default is iterable %}
{% for item in telegraf_plugins_default %} {% for item in telegraf_plugins_default %}
[{{ item.plugin }}] [{{ item.plugin }}]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %} {% if item.config is defined and item.config is iterable %}
{% for items in item.config %} {% for items in item.config %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %} [{{ item.plugin }}.tagdrop]
{% for item in telegraf_plugins_extra %} {% for items in item.tagdrop %}
[{{ item.plugin }}] {{ items }}
{% if item.config is defined and item.config is iterable %} {% endfor %}
{% for items in item.config %} {% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }} {{ items }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@ -0,0 +1,44 @@
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[[inputs.{{ item.plugin }}]]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -0,0 +1,78 @@
# Telegraf configuration
[tags]
{% if telegraf_agent_tags is defined and telegraf_agent_tags is iterable %}
{% for item in telegraf_agent_tags %}
{{ item.tag_name }} = "{{ item.tag_value }}"
{% endfor %}
{% endif %}
# Configuration for telegraf agent
[agent]
interval = "{{ telegraf_agent_interval }}s"
debug = {{ telegraf_agent_debug | lower }}
hostname = "{{ ansible_fqdn }}"
round_interval = {{ telegraf_agent_round_interval | lower }}
flush_interval = "{{ telegraf_agent_flush_interval }}s"
flush_jitter = "{{ telegraf_agent_flush_jitter }}s"
###############################################################################
# OUTPUTS #
###############################################################################
{% if telegraf_agent_output is defined and telegraf_agent_output is iterable %}
{% for item in telegraf_agent_output %}
[[outputs.{{ item.type }}]]
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endfor %}
{% endif %}
###############################################################################
# INPUTS #
###############################################################################
{% if telegraf_plugins_default is defined and telegraf_plugins_default is iterable %}
{% for item in telegraf_plugins_default %}
[[inputs.{{ item.plugin }}]]
{% if item.interval is defined %}
interval = "{{ item.interval }}s"
{% endif %}
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.pass is defined and item.pass is iterable %}
[{{ item.plugin }}.pass]
{% for items in item.pass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.drop is defined and item.drop is iterable %}
[{{ item.plugin }}.drop]
{% for items in item.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.specifications is defined and item.specifications is iterable %}
[[{{item.plugin}}.specifications]]
{% for items in item.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

View File

@ -1,4 +0,0 @@
---
- hosts: localhost
roles:
- role: ansible-telegraf

View File

@ -1,27 +0,0 @@
require 'serverspec'
require 'spec_helper'
describe 'Telegraf Packages' do
describe package('telegraf') do
it { should be_installed }
end
end
describe 'Telegraf Services' do
describe service('telegraf') do
it { should be_enabled }
end
end
describe 'Telegraf Configuration' do
describe file('/etc/opt/telegraf/telegraf.conf') do
it { should be_file}
it { should be_owned_by 'root'}
it { should be_grouped_into 'root'}
it { should contain "[cpu]" }
it { should contain "[mem]" }
it { should contain "url = \"http://localhost:8086\"" }
end
end

View File

@ -1,2 +0,0 @@
require 'serverspec'
set :backend, :exec

6
tests/inventory Normal file
View File

@ -0,0 +1,6 @@
localhost
[group1]
telegraf-centos
[group2]
telegraf-debian

5
tests/test.yml Normal file
View File

@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- ansible-zabbix-agent

19
tests/test_docker.py Normal file
View File

@ -0,0 +1,19 @@
def test_telegraf_running_and_enabled(Service, SystemInfo):
telegraf = Service("telegraf")
assert telegraf.is_enabled
if SystemInfo.distribution == 'centos':
assert telegraf.is_running
def test_telegraf_dot_conf(File):
telegraf = File("/etc/telegraf/telegraf.conf")
assert telegraf.user == "root"
assert telegraf.group == "root"
assert telegraf.mode == 0o644
assert telegraf.contains('[[inputs.cpu]]')
def test_telegraf_package(Package, SystemInfo):
telegraf = Package('telegraf')
assert telegraf.is_installed

View File

@ -1,2 +0,0 @@
---
# vars file for .