mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
57 Commits
Author | SHA1 | Date | |
---|---|---|---|
1100ceddd6 | |||
40b25772f3 | |||
71f436f8ca | |||
c416bb20a7 | |||
ae8c1cbe7f | |||
c6848506cf | |||
0b82b8420e | |||
f7e7045e9f | |||
35b594cf36 | |||
128faa55b6 | |||
641981bfb3 | |||
e29aa87c04 | |||
227c6f9418 | |||
cb215db02c | |||
0597f0115c | |||
62a6158281 | |||
fe9f970bde | |||
2696c2aca5 | |||
f3f67f4f7a | |||
8b522beab0 | |||
4291b00a6e | |||
7694682e56 | |||
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 |
9
.gitignore
vendored
9
.gitignore
vendored
@ -1,4 +1,7 @@
|
|||||||
.kitchen/
|
.idea
|
||||||
.kitchen.local.yml
|
.molecule
|
||||||
.idea/
|
tests/.cache
|
||||||
|
.cache
|
||||||
|
__pycache__
|
||||||
|
*.retry
|
||||||
pmip
|
pmip
|
||||||
|
22
.kitchen.yml
22
.kitchen.yml
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
driver:
|
|
||||||
name: docker
|
|
||||||
provision_command: sed -i '/tsflags=nodocs/d' /etc/yum.conf
|
|
||||||
|
|
||||||
provisioner:
|
|
||||||
name: ansible_playbook
|
|
||||||
ansible_yum_repo: "http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm"
|
|
||||||
hosts: localhost
|
|
||||||
require_chef_for_busser: false
|
|
||||||
require_ruby_for_busser: true
|
|
||||||
|
|
||||||
platforms:
|
|
||||||
- name: centos-6.7
|
|
||||||
|
|
||||||
verifier:
|
|
||||||
ruby_bindir: '/usr/bin'
|
|
||||||
|
|
||||||
suites:
|
|
||||||
- name: default
|
|
||||||
run_list:
|
|
||||||
attributes:
|
|
21
.travis.yml
21
.travis.yml
@ -1,15 +1,20 @@
|
|||||||
---
|
---
|
||||||
|
sudo: required
|
||||||
language: python
|
language: python
|
||||||
python: "2.7"
|
services:
|
||||||
|
- docker
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get -qq update
|
||||||
- sudo apt-get install -qq python-apt python-pycurl
|
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- pip install ansible==1.9.4
|
- pip install molecule ansible docker-py
|
||||||
- echo -e 'localhost ansible_connection=local' > test/inventory
|
|
||||||
- echo -e '[defaults]\nroles_path = ../\nhostfile = ./test/inventory' > ansible.cfg
|
|
||||||
script:
|
script:
|
||||||
- ansible-playbook test/integration/default.yml --syntax-check
|
- molecule --version
|
||||||
- ansible-playbook test/integration/default.yml --connection=local --sudo
|
- ansible --version
|
||||||
|
- molecule test
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
33
CHANGELOG.md
33
CHANGELOG.md
@ -5,6 +5,39 @@ Below an overview of all changes in the releases.
|
|||||||
|
|
||||||
Version (Release date)
|
Version (Release date)
|
||||||
|
|
||||||
|
0.7.0 (2017-02-23)
|
||||||
|
|
||||||
|
* Replace action by modules #26 (By pull request: tszym (Thanks!))
|
||||||
|
* Use yum repository to install telegraf on RedHat #25 (By pull request: tszym (Thanks!))
|
||||||
|
* Remove for-loop in extra-plugin template #24 (By pull request: emersondispatch (Thanks!))
|
||||||
|
* Update Debian.yml #23 (By pull request: zend0 (Thanks!))
|
||||||
|
* extra plugins tags #21 (By pull request: oboukili (Thanks!))
|
||||||
|
* Input tags support #20 (By pull request: szibis (Thanks!))
|
||||||
|
* Fix telegraf confguration permissions #19 (By pull request: szibis (Thanks!))
|
||||||
|
|
||||||
|
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)
|
0.4.0 (2016-02-05)
|
||||||
|
|
||||||
* Fixed test for test-kitchen
|
* Fixed test for test-kitchen
|
||||||
|
5
Gemfile
5
Gemfile
@ -1,5 +0,0 @@
|
|||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem "test-kitchen"
|
|
||||||
gem "kitchen-docker"
|
|
||||||
gem "kitchen-ansible"
|
|
41
Gemfile.lock
41
Gemfile.lock
@ -1,41 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
faraday (0.9.2)
|
|
||||||
multipart-post (>= 1.2, < 3)
|
|
||||||
highline (1.7.8)
|
|
||||||
kitchen-ansible (0.0.30)
|
|
||||||
librarian-ansible
|
|
||||||
test-kitchen
|
|
||||||
kitchen-docker (2.3.0)
|
|
||||||
test-kitchen (>= 1.0.0)
|
|
||||||
librarian (0.1.2)
|
|
||||||
highline
|
|
||||||
thor (~> 0.15)
|
|
||||||
librarian-ansible (1.0.6)
|
|
||||||
faraday
|
|
||||||
librarian (~> 0.1.0)
|
|
||||||
mixlib-shellout (2.2.3)
|
|
||||||
multipart-post (2.0.0)
|
|
||||||
net-scp (1.2.1)
|
|
||||||
net-ssh (>= 2.6.5)
|
|
||||||
net-ssh (2.9.2)
|
|
||||||
safe_yaml (1.0.4)
|
|
||||||
test-kitchen (1.4.2)
|
|
||||||
mixlib-shellout (>= 1.2, < 3.0)
|
|
||||||
net-scp (~> 1.1)
|
|
||||||
net-ssh (~> 2.7, < 2.10)
|
|
||||||
safe_yaml (~> 1.0)
|
|
||||||
thor (~> 0.18)
|
|
||||||
thor (0.19.1)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
kitchen-ansible
|
|
||||||
kitchen-docker
|
|
||||||
test-kitchen
|
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
1.10.6
|
|
64
README.md
64
README.md
@ -1,7 +1,6 @@
|
|||||||
dj-wasabi.telegraf
|
# dj-wasabi.telegraf
|
||||||
=========
|
|
||||||
|
|
||||||
Build status:
|
## Build status:
|
||||||
|
|
||||||
[](https://travis-ci.org/dj-wasabi/ansible-telegraf)
|
[](https://travis-ci.org/dj-wasabi/ansible-telegraf)
|
||||||
|
|
||||||
@ -13,22 +12,38 @@ Design goals are to have a minimal memory footprint with a plugin system so that
|
|||||||
|
|
||||||
(https://github.com/influxdb/telegraf)
|
(https://github.com/influxdb/telegraf)
|
||||||
|
|
||||||
Requirements
|
## Requirements
|
||||||
------------
|
|
||||||
|
|
||||||
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
|
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
|
||||||
|
|
||||||
Role Variables
|
## Upgrade
|
||||||
--------------
|
### 0.7.0
|
||||||
|
|
||||||
|
There was an issue:
|
||||||
|
|
||||||
|
If I configure a telegraf_plugins_extra, run ansible, delete the plugin and run ansible again, the plugin stays on the machine.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 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.10.0`
|
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.0.0`
|
||||||
* `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_round_interval`: Rounds collection interval to 'interval' Default: True
|
* `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True
|
||||||
* `telegraf_agent_flush_interval`: Default data flushing interval for all outputs. Default: 10
|
* `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_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:
|
||||||
|
|
||||||
@ -43,6 +58,8 @@ Specifying an output. The default is set to localhost, you'll have to specify th
|
|||||||
config:
|
config:
|
||||||
- urls = ["http://localhost:8086"]
|
- urls = ["http://localhost:8086"]
|
||||||
- database = "telegraf"
|
- database = "telegraf"
|
||||||
|
tagpass:
|
||||||
|
- diskmetrics = ["true"]
|
||||||
|
|
||||||
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:
|
||||||
|
|
||||||
@ -69,7 +86,7 @@ With the property `telegraf_plugins_default` it is set to use the default set of
|
|||||||
- plugin: swap
|
- plugin: swap
|
||||||
- plugin: netstat
|
- plugin: netstat
|
||||||
|
|
||||||
Every telegraf agent has these as an default configuration.
|
Every telegraf agent has these as a 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:
|
||||||
|
|
||||||
@ -82,6 +99,7 @@ The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific t
|
|||||||
|
|
||||||
Telegraf plugin options:
|
Telegraf plugin options:
|
||||||
|
|
||||||
|
* `tags` An k/v tags to apply to a specific input's measurements. Can be used on any stage for better filtering for example in outputs.
|
||||||
* `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.
|
* `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.
|
* `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.
|
* `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.
|
||||||
@ -93,18 +111,19 @@ An example might look like this:
|
|||||||
telegraf_plugins_default:
|
telegraf_plugins_default:
|
||||||
- plugin: disk
|
- plugin: disk
|
||||||
interval: 12
|
interval: 12
|
||||||
|
tags:
|
||||||
|
- diskmetrics = "true"
|
||||||
tagpass:
|
tagpass:
|
||||||
- fstype = [ "ext4", "xfs" ]
|
- fstype = [ "ext4", "xfs" ]
|
||||||
- path = [ "/opt", "/home" ]
|
- path = [ "/opt", "/home" ]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Dependencies
|
## Dependencies
|
||||||
------------
|
|
||||||
No dependencies
|
No dependencies
|
||||||
|
|
||||||
Example Playbook
|
## Example Playbook
|
||||||
----------------
|
|
||||||
|
|
||||||
- hosts: servers
|
- hosts: servers
|
||||||
roles:
|
roles:
|
||||||
@ -114,20 +133,21 @@ Example Playbook
|
|||||||
The following have contributed to this Ansible role:
|
The following have contributed to this Ansible role:
|
||||||
|
|
||||||
* aferrari-technisys
|
* aferrari-technisys
|
||||||
|
* stvnwrgs
|
||||||
|
* lhoss
|
||||||
|
* thecodeassassin
|
||||||
|
* Ismael
|
||||||
|
* romainbureau
|
||||||
|
|
||||||
|
## Molecule
|
||||||
|
|
||||||
Test Kitchen
|
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/
|
||||||
------------
|
|
||||||
|
|
||||||
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/
|
## License
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
BSD
|
BSD
|
||||||
|
|
||||||
Author Information
|
## Author Information
|
||||||
------------------
|
|
||||||
|
|
||||||
Please let me know if you have issues. Pull requests are also accepted! :-)
|
Please let me know if you have issues. Pull requests are also accepted! :-)
|
||||||
|
|
||||||
|
@ -1,13 +1,25 @@
|
|||||||
---
|
---
|
||||||
# defaults file for ansible-telegraf
|
# defaults file for ansible-telegraf
|
||||||
|
|
||||||
telegraf_agent_version: 0.10.1
|
#telegraf_agent_version: 0.10.1
|
||||||
|
telegraf_agent_version: 1.0.0
|
||||||
|
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
||||||
telegraf_agent_interval: 10
|
telegraf_agent_interval: 10
|
||||||
telegraf_agent_debug: False
|
telegraf_agent_debug: False
|
||||||
telegraf_agent_round_interval: True
|
telegraf_agent_round_interval: True
|
||||||
telegraf_agent_flush_interval: 10
|
telegraf_agent_flush_interval: 10
|
||||||
telegraf_agent_flush_jitter: 0
|
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_tags:
|
telegraf_agent_tags:
|
||||||
|
|
||||||
telegraf_agent_output:
|
telegraf_agent_output:
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# handlers file for ansible-telegraf
|
# handlers file for ansible-telegraf
|
||||||
|
|
||||||
- name: "Restart Telegraf"
|
- name: "Restart Telegraf"
|
||||||
action: service
|
service:
|
||||||
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"
|
||||||
|
yum:
|
||||||
|
name: which
|
||||||
|
state: installed
|
||||||
|
when: ansible_distribution == 'CentOS'
|
||||||
|
- name: "Installing wget on Debian"
|
||||||
|
apt:
|
||||||
|
name: wget
|
||||||
|
state: installed
|
||||||
|
when: ansible_distribution == 'Debian'
|
||||||
|
roles:
|
||||||
|
- role: ansible-telegraf
|
@ -1,14 +1,60 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- 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 }}-1_amd64.deb
|
path: /usr/lib/apt/methods/https
|
||||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1_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
|
||||||
|
become: yes
|
||||||
|
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
|
apt:
|
||||||
deb=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
|
name: telegraf
|
||||||
state=installed
|
state: installed
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
sudo: yes
|
become: yes
|
||||||
|
tags:
|
||||||
|
- telegraf
|
||||||
|
- packages
|
||||||
|
@ -1,14 +1,40 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: "Fetch telegraf installation package | RedHat"
|
- name: "Enable EPEL"
|
||||||
action: get_url
|
yum:
|
||||||
url=http://get.influxdb.org/telegraf/telegraf-{{ telegraf_agent_version }}-1.x86_64.rpm
|
name: epel-release
|
||||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm
|
state: installed
|
||||||
mode=0440
|
|
||||||
|
- name: "Installing some dependencies"
|
||||||
|
yum:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: installed
|
||||||
|
with_items:
|
||||||
|
- python-pip
|
||||||
|
- python-devel
|
||||||
|
- gcc
|
||||||
|
- libffi-devel
|
||||||
|
- openssl-devel
|
||||||
|
|
||||||
|
- name: "Installing PIP dependensies"
|
||||||
|
pip:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: present
|
||||||
|
with_items:
|
||||||
|
- urllib3
|
||||||
|
- pyopenssl
|
||||||
|
- ndg-httpsclient
|
||||||
|
|
||||||
|
- name: "Add yum repository | RedHat"
|
||||||
|
yum_repository:
|
||||||
|
name: influxdb
|
||||||
|
description: InfluxDB Repository - RHEL $releasever
|
||||||
|
baseurl: https://repos.influxdata.com/rhel/$releasever/$basearch/stable
|
||||||
|
gpgcheck: yes
|
||||||
|
gpgkey: https://repos.influxdata.com/influxdb.key
|
||||||
|
|
||||||
- name: "Install telegraf package | RedHat"
|
- name: "Install telegraf package | RedHat"
|
||||||
action: yum
|
yum:
|
||||||
name=/tmp/telegraf_{{ telegraf_agent_version }}-1.x86_64.rpm
|
name: "telegraf-{{ telegraf_agent_version }}"
|
||||||
state=installed
|
state: installed
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
sudo: yes
|
|
||||||
|
@ -9,28 +9,35 @@
|
|||||||
include: "Debian.yml"
|
include: "Debian.yml"
|
||||||
when: ansible_os_family == "Debian"
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
- name: "Set fact by remove the dots from version"
|
|
||||||
action: set_fact
|
|
||||||
telegraf_ver="{{ telegraf_agent_version.replace('.','') }}"
|
|
||||||
|
|
||||||
- name: "Copy the template for versions < 0.10.0"
|
- 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: telegraf
|
||||||
group=root
|
group: telegraf
|
||||||
mode=644
|
mode: 0640
|
||||||
when: telegraf_ver < 100
|
become: yes
|
||||||
sudo: yes
|
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
|
|
||||||
- name: "Copy the template for versions >= 0.10.0"
|
- name: "Copy the template for versions >= 0.10.0"
|
||||||
action: template
|
template:
|
||||||
src=telegraf.conf.j2
|
src: telegraf.conf.j2
|
||||||
dest=/etc/telegraf/telegraf.conf
|
dest: /etc/telegraf/telegraf.conf
|
||||||
owner=root
|
owner: telegraf
|
||||||
group=root
|
group: telegraf
|
||||||
mode=644
|
mode: 0640
|
||||||
when: telegraf_ver >= 100
|
become: yes
|
||||||
sudo: 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/extra-plugins.conf"
|
||||||
|
owner: telegraf
|
||||||
|
group: telegraf
|
||||||
|
mode: 0640
|
||||||
|
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||||
|
become: yes
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
|
@ -68,50 +68,5 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% 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 }}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
{% if item.specifications is defined and item.specifications is iterable %}
|
|
||||||
[[{{item.plugin}}.specifications]]
|
|
||||||
{% for items in item.specifications %}
|
|
||||||
{{ items }}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
49
templates/telegraf-extra-plugin.conf.j2
Normal file
49
templates/telegraf-extra-plugin.conf.j2
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{% 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.tags is defined and item.tags is iterable %}
|
||||||
|
[inputs.{{ item.plugin }}.tags]
|
||||||
|
{% for items in item.tags %}
|
||||||
|
{{ 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 %}
|
@ -11,10 +11,20 @@
|
|||||||
[agent]
|
[agent]
|
||||||
interval = "{{ telegraf_agent_interval }}s"
|
interval = "{{ telegraf_agent_interval }}s"
|
||||||
debug = {{ telegraf_agent_debug | lower }}
|
debug = {{ telegraf_agent_debug | lower }}
|
||||||
hostname = "{{ ansible_fqdn }}"
|
hostname = "{{ telegraf_agent_hostname }}"
|
||||||
round_interval = {{ telegraf_agent_round_interval | lower }}
|
round_interval = {{ telegraf_agent_round_interval | lower }}
|
||||||
flush_interval = "{{ telegraf_agent_flush_interval }}s"
|
flush_interval = "{{ telegraf_agent_flush_interval }}s"
|
||||||
flush_jitter = "{{ telegraf_agent_flush_jitter }}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 #
|
# OUTPUTS #
|
||||||
@ -44,48 +54,9 @@
|
|||||||
{{ items }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if item.tagpass is defined and item.tagpass is iterable %}
|
{% if item.tags is defined and item.tags is iterable %}
|
||||||
[{{ item.plugin }}.tagpass]
|
[inputs.{{ item.plugin }}.tags]
|
||||||
{% for items in item.tagpass %}
|
{% for items in item.tags %}
|
||||||
{{ 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 %}
|
|
||||||
|
|
||||||
|
|
||||||
{% 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 }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% 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/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 == "telegraf"
|
||||||
|
assert telegraf.group == "telegraf"
|
||||||
|
assert telegraf.mode == 0o640
|
||||||
|
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