mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
55 Commits
Author | SHA1 | Date | |
---|---|---|---|
8fd9c2c9c9 | |||
4c0d09d11e | |||
9aad1a8d39 | |||
2c54dea8d2 | |||
f962f4ca82 | |||
194d3d6e92 | |||
5036595b79 | |||
3bd9681567 | |||
536dce400b | |||
0405d3d993 | |||
1533214071 | |||
26b473b0fb | |||
d486975c81 | |||
3201ec329c | |||
b95a67954f | |||
ad1a4430c6 | |||
ec63b2aa24 | |||
8dbb365ed0 | |||
f23fc6ea23 | |||
51c82e1c85 | |||
a3ca2db212 | |||
9c9dc33ac3 | |||
95d5161d33 | |||
86fabca61b | |||
b0dfe773a7 | |||
3826a37496 | |||
4d197aa8ea | |||
40230aa198 | |||
7512939626 | |||
e4ac118212 | |||
6e990c9a03 | |||
01d05b0a88 | |||
cf37fb1d2e | |||
4bd9a85f94 | |||
fe287f5d7c | |||
a733de5695 | |||
f28ba37db5 | |||
54f2b75af5 | |||
bbcd52e32f | |||
e2205aa7d8 | |||
66e20cd7f6 | |||
720e9c94da | |||
ec993c2066 | |||
fabb511365 | |||
6f7d970595 | |||
18cfcd8cff | |||
5692928cb3 | |||
aa391d97f9 | |||
64f62c8dc5 | |||
8a869e7a0e | |||
ef8ecffbdf | |||
37f3a8e208 | |||
a3951d52a8 | |||
3f7f83cfc4 | |||
677950be23 |
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,3 +1,7 @@
|
|||||||
.kitchen/
|
.idea
|
||||||
.kitchen.local.yml
|
.molecule
|
||||||
.idea/
|
tests/.cache
|
||||||
|
.cache
|
||||||
|
__pycache__
|
||||||
|
*.retry
|
||||||
|
pmip
|
||||||
|
19
.kitchen.yml
19
.kitchen.yml
@ -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:
|
|
20
.travis.yml
Normal file
20
.travis.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
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 ansible docker-py
|
||||||
|
|
||||||
|
script:
|
||||||
|
- molecule --version
|
||||||
|
- ansible --version
|
||||||
|
- molecule test
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
42
CHANGELOG.md
42
CHANGELOG.md
@ -5,6 +5,48 @@ Below an overview of all changes in the releases.
|
|||||||
|
|
||||||
Version (Release date)
|
Version (Release date)
|
||||||
|
|
||||||
|
0.6.0 (2017-01-02)
|
||||||
|
|
||||||
|
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #9 (By pull request: Ismael (Thanks!))
|
||||||
|
* Do "become" for the steps that require root access on Debian #10 (By pull request: Ismael (Thanks!))
|
||||||
|
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #11 (By pull request: Ismael (Thanks!))
|
||||||
|
* Removed imports #12
|
||||||
|
* Fixing molecule #15
|
||||||
|
* set telegraf hostname in defaults. #13 (By pull request: romainbureau (Thanks!))
|
||||||
|
* use version_compare filter … #14 (By pull request: lhoss (Thanks!))
|
||||||
|
* support missing agent settings upto telegraf v1.1 #16 (By pull request: lhoss (Thanks!))
|
||||||
|
* update the README with the latest v0.13 - v1.1 agent settings #17 (By pull request: lhoss (Thanks!))
|
||||||
|
|
||||||
|
0.5.1 (2016-08-24)
|
||||||
|
|
||||||
|
* fixed issue with ansible not getting the package #6 (By pull request: thecodeassassin (Thanks!))
|
||||||
|
|
||||||
|
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)
|
0.1.0 (2015-09-23)
|
||||||
|
|
||||||
* Updated `telegraf_agent_version` to 0.1.9
|
* Updated `telegraf_agent_version` to 0.1.9
|
||||||
|
5
Gemfile
5
Gemfile
@ -1,5 +0,0 @@
|
|||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem "test-kitchen"
|
|
||||||
gem "kitchen-docker"
|
|
||||||
gem "kitchen-ansible"
|
|
41
README.md
41
README.md
@ -1,6 +1,10 @@
|
|||||||
dj-wasabi.telegraf
|
dj-wasabi.telegraf
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
Build status:
|
||||||
|
|
||||||
|
[](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,22 @@ 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.9`
|
* `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`: Run 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
|
||||||
|
* `telegraf_agent_collection_jitter`: Jitter the collection by a random amount. Default: 0 (since v0.13)
|
||||||
|
* `telegraf_agent_metric_batch_size`: The agent metric batch size. Default: 1000 (since v0.13)
|
||||||
|
* `telegraf_agent_metric_buffer_limit`: The agent metric buffer limit. Default: 10000 (since v0.13)
|
||||||
|
* `telegraf_agent_quiet`: Run Telegraf in quiet mode (error messages only). Default: `False` (since v0.13)
|
||||||
|
* `telegraf_agent_logfile`: The agent logfile name. Default: '' (means to log to stdout) (since v1.1)
|
||||||
|
* `telegraf_agent_omit_hostname`: Do no set the "host" tag in the agent. Default: `False` (since v1.1)
|
||||||
|
|
||||||
|
Full agent settings reference: https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration
|
||||||
|
|
||||||
You can set tags for the host running telegraf:
|
You can set tags for the host running telegraf:
|
||||||
|
|
||||||
@ -36,7 +51,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,6 +77,7 @@ 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.
|
||||||
|
|
||||||
@ -104,10 +120,19 @@ 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
|
||||||
|
* lhoss
|
||||||
|
* thecodeassassin
|
||||||
|
* Ismael
|
||||||
|
* romainbureau
|
||||||
|
|
||||||
|
# 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
|
||||||
-------
|
-------
|
||||||
|
@ -1,19 +1,38 @@
|
|||||||
---
|
---
|
||||||
# defaults file for ansible-telegraf
|
# defaults file for ansible-telegraf
|
||||||
|
|
||||||
telegraf_agent_version: 0.1.9
|
#telegraf_agent_version: 0.10.1
|
||||||
|
telegraf_agent_version: 1.0.0
|
||||||
|
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
||||||
|
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
|
||||||
|
|
||||||
|
#v0.13 settings (not sure if supported in older version):
|
||||||
|
telegraf_agent_collection_jitter: 0
|
||||||
|
telegraf_agent_metric_batch_size: 1000
|
||||||
|
telegraf_agent_metric_buffer_limit: 10000
|
||||||
|
telegraf_agent_quiet: False
|
||||||
|
|
||||||
|
#v1.1 settings:
|
||||||
|
telegraf_agent_logfile: ""
|
||||||
|
telegraf_agent_omit_hostname: False
|
||||||
|
|
||||||
|
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 +41,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:
|
||||||
|
@ -6,4 +6,4 @@
|
|||||||
name=telegraf
|
name=telegraf
|
||||||
state=restarted
|
state=restarted
|
||||||
enabled=yes
|
enabled=yes
|
||||||
sudo: yes
|
become: yes
|
24
molecule.yml
Normal file
24
molecule.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
ansible:
|
||||||
|
playbook: playbook.yml
|
||||||
|
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
|
||||||
|
verifier:
|
||||||
|
name: testinfra
|
||||||
|
|
||||||
|
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
15
playbook.yml
Normal 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
|
@ -1,14 +1,59 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: "Fetch telegraf installation package | Debian"
|
- name: Ensure the system can use the HTTPS transport for APT.
|
||||||
action: get_url
|
stat:
|
||||||
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}_amd64.deb
|
path: /usr/lib/apt/methods/https
|
||||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb
|
register: apt_https_transport
|
||||||
mode=0440
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Install APT HTTPS transport.
|
||||||
|
apt:
|
||||||
|
name: "apt-transport-https"
|
||||||
|
state: present
|
||||||
|
when: not apt_https_transport.stat.exists
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Download Influxdb apt key.
|
||||||
|
apt_key:
|
||||||
|
url: "https://repos.influxdata.com/influxdb.key"
|
||||||
|
state: present
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Add Influxdb repository (using LSB).
|
||||||
|
apt_repository:
|
||||||
|
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
|
||||||
|
filename: "influxdb"
|
||||||
|
state: present
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
when: ansible_lsb is defined
|
||||||
|
|
||||||
|
- name: Add Influxdb repository.
|
||||||
|
apt_repository:
|
||||||
|
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
|
||||||
|
filename: "influxdb"
|
||||||
|
state: present
|
||||||
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
when: ansible_lsb is not defined
|
||||||
|
|
||||||
- name: "Install telegraf package | Debian"
|
- name: "Install telegraf package | Debian"
|
||||||
action: apt
|
action: apt
|
||||||
deb=/tmp/telegraf_{{ telegraf_agent_version }}_amd64.deb
|
name=telegraf
|
||||||
state=installed
|
state=installed
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
sudo: yes
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
@ -1,14 +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
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
sudo: yes
|
|
||||||
|
@ -9,12 +9,36 @@
|
|||||||
include: "Debian.yml"
|
include: "Debian.yml"
|
||||||
when: ansible_os_family == "Debian"
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
- name: "Copy the template"
|
- name: "Copy the template for versions < 0.10.0"
|
||||||
action: template
|
template:
|
||||||
src=etc-opt-telegraf-telegraf.conf.j2
|
src: etc-opt-telegraf-telegraf.conf.j2
|
||||||
dest=/etc/opt/telegraf/telegraf.conf
|
dest: /etc/opt/telegraf/telegraf.conf
|
||||||
owner=root
|
owner: root
|
||||||
group=root
|
group: root
|
||||||
mode=644
|
mode: 0644
|
||||||
sudo: yes
|
become: yes
|
||||||
|
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
||||||
|
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
|
||||||
|
become: yes
|
||||||
|
when: telegraf_agent_version|version_compare('0.10.0', '>=')
|
||||||
|
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: 0644
|
||||||
|
with_items: "{{ telegraf_plugins_extra }}"
|
||||||
|
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||||
|
become: yes
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
@ -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]
|
||||||
@ -62,45 +60,13 @@
|
|||||||
{{ items }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if item.specifications is defined and item.specifications is iterable %}
|
||||||
{% endfor %}
|
[[{{item.plugin}}.specifications]]
|
||||||
{% endif %}
|
{% for items in item.specifications %}
|
||||||
|
|
||||||
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
|
|
||||||
{% for item in telegraf_plugins_extra %}
|
|
||||||
[{{ 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 }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
44
templates/telegraf-extra-plugin.conf.j2
Normal file
44
templates/telegraf-extra-plugin.conf.j2
Normal 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 %}
|
88
templates/telegraf.conf.j2
Normal file
88
templates/telegraf.conf.j2
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# 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 = "{{ telegraf_agent_hostname }}"
|
||||||
|
round_interval = {{ telegraf_agent_round_interval | lower }}
|
||||||
|
flush_interval = "{{ telegraf_agent_flush_interval }}s"
|
||||||
|
flush_jitter = "{{ telegraf_agent_flush_jitter }}s"
|
||||||
|
{% if telegraf_agent_version|version_compare('0.13', '>=') %}
|
||||||
|
collection_jitter = "{{ telegraf_agent_collection_jitter }}s"
|
||||||
|
metric_batch_size = {{ telegraf_agent_metric_batch_size }}
|
||||||
|
metric_buffer_limit = {{ telegraf_agent_metric_buffer_limit }}
|
||||||
|
quiet = {{ telegraf_agent_quiet | lower }}
|
||||||
|
{% endif %}
|
||||||
|
{% if telegraf_agent_version|version_compare('1.1', '>=') %}
|
||||||
|
logfile = "{{ telegraf_agent_logfile }}"
|
||||||
|
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# 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 %}
|
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
- hosts: localhost
|
|
||||||
roles:
|
|
||||||
- role: ansible-telegraf
|
|
@ -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
|
|
@ -1,2 +0,0 @@
|
|||||||
require 'serverspec'
|
|
||||||
set :backend, :exec
|
|
6
tests/inventory
Normal file
6
tests/inventory
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
localhost
|
||||||
|
[group1]
|
||||||
|
telegraf-centos
|
||||||
|
|
||||||
|
[group2]
|
||||||
|
telegraf-debian
|
5
tests/test.yml
Normal file
5
tests/test.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
- hosts: localhost
|
||||||
|
remote_user: root
|
||||||
|
roles:
|
||||||
|
- ansible-zabbix-agent
|
23
tests/test_docker.py
Normal file
23
tests/test_docker.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
from testinfra.utils.ansible_runner import AnsibleRunner
|
||||||
|
|
||||||
|
testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all')
|
||||||
|
|
||||||
|
|
||||||
|
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
|
@ -1,2 +0,0 @@
|
|||||||
---
|
|
||||||
# vars file for .
|
|
Reference in New Issue
Block a user