mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
22 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 |
10
CHANGELOG.md
10
CHANGELOG.md
@ -5,6 +5,16 @@ 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)
|
0.6.0 (2017-01-02)
|
||||||
|
|
||||||
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #9 (By pull request: Ismael (Thanks!))
|
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #9 (By pull request: Ismael (Thanks!))
|
||||||
|
45
README.md
45
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,19 +12,25 @@ 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: `1.0.0`
|
* `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`: Run 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
|
||||||
@ -53,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:
|
||||||
|
|
||||||
@ -79,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:
|
||||||
|
|
||||||
@ -92,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.
|
||||||
@ -103,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:
|
||||||
@ -130,17 +139,15 @@ The following have contributed to this Ansible role:
|
|||||||
* Ismael
|
* Ismael
|
||||||
* romainbureau
|
* romainbureau
|
||||||
|
|
||||||
# Molecule
|
## 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/
|
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
|
||||||
-------
|
|
||||||
|
|
||||||
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! :-)
|
||||||
|
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
#telegraf_agent_version: 0.10.1
|
#telegraf_agent_version: 0.10.1
|
||||||
telegraf_agent_version: 1.0.0
|
telegraf_agent_version: 1.0.0
|
||||||
telegraf_agent_hostname: "{{ ansible_fqdn }}"
|
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_round_interval: True
|
telegraf_agent_round_interval: True
|
||||||
@ -22,9 +20,6 @@ telegraf_agent_quiet: False
|
|||||||
telegraf_agent_logfile: ""
|
telegraf_agent_logfile: ""
|
||||||
telegraf_agent_omit_hostname: False
|
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:
|
||||||
|
@ -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
|
||||||
become: yes
|
become: yes
|
12
playbook.yml
12
playbook.yml
@ -2,14 +2,14 @@
|
|||||||
- hosts: all
|
- hosts: all
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
- name: "Installing which on CentOS"
|
- name: "Installing which on CentOS"
|
||||||
action: yum
|
yum:
|
||||||
name=which
|
name: which
|
||||||
state=installed
|
state: installed
|
||||||
when: ansible_distribution == 'CentOS'
|
when: ansible_distribution == 'CentOS'
|
||||||
- name: "Installing wget on Debian"
|
- name: "Installing wget on Debian"
|
||||||
action: apt
|
apt:
|
||||||
name=wget
|
name: wget
|
||||||
state=installed
|
state: installed
|
||||||
when: ansible_distribution == 'Debian'
|
when: ansible_distribution == 'Debian'
|
||||||
roles:
|
roles:
|
||||||
- role: ansible-telegraf
|
- role: ansible-telegraf
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
|
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
|
||||||
filename: "influxdb"
|
filename: "influxdb"
|
||||||
state: present
|
state: present
|
||||||
|
become: yes
|
||||||
tags:
|
tags:
|
||||||
- telegraf
|
- telegraf
|
||||||
- packages
|
- packages
|
||||||
@ -49,9 +50,9 @@
|
|||||||
when: ansible_lsb is not defined
|
when: ansible_lsb is not defined
|
||||||
|
|
||||||
- name: "Install telegraf package | Debian"
|
- name: "Install telegraf package | Debian"
|
||||||
action: apt
|
apt:
|
||||||
name=telegraf
|
name: telegraf
|
||||||
state=installed
|
state: installed
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
become: yes
|
become: yes
|
||||||
tags:
|
tags:
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: "Enable EPEL"
|
- name: "Enable EPEL"
|
||||||
action: yum
|
yum:
|
||||||
name=epel-release
|
name: epel-release
|
||||||
state=installed
|
state: installed
|
||||||
|
|
||||||
- name: "Installing some dependencies"
|
- name: "Installing some dependencies"
|
||||||
action: yum
|
yum:
|
||||||
name={{ item }}
|
name: "{{ item }}"
|
||||||
state=installed
|
state: installed
|
||||||
with_items:
|
with_items:
|
||||||
- python-pip
|
- python-pip
|
||||||
- python-devel
|
- python-devel
|
||||||
@ -17,22 +17,24 @@
|
|||||||
- openssl-devel
|
- openssl-devel
|
||||||
|
|
||||||
- name: "Installing PIP dependensies"
|
- name: "Installing PIP dependensies"
|
||||||
action: pip
|
pip:
|
||||||
name={{ item }}
|
name: "{{ item }}"
|
||||||
state=present
|
state: present
|
||||||
with_items:
|
with_items:
|
||||||
- urllib3
|
- urllib3
|
||||||
- pyopenssl
|
- pyopenssl
|
||||||
- ndg-httpsclient
|
- ndg-httpsclient
|
||||||
|
|
||||||
- name: "Fetch telegraf installation package | RedHat"
|
- name: "Add yum repository | RedHat"
|
||||||
action: get_url
|
yum_repository:
|
||||||
url="{{ telegraf_agent_rpm_url }}"
|
name: influxdb
|
||||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
|
description: InfluxDB Repository - RHEL $releasever
|
||||||
mode=0440
|
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 }}.x86_64.rpm
|
name: "telegraf-{{ telegraf_agent_version }}"
|
||||||
state=installed
|
state: installed
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
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: 0644
|
mode: 0640
|
||||||
become: yes
|
become: yes
|
||||||
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
@ -24,9 +24,9 @@
|
|||||||
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: 0644
|
mode: 0640
|
||||||
become: yes
|
become: yes
|
||||||
when: telegraf_agent_version|version_compare('0.10.0', '>=')
|
when: telegraf_agent_version|version_compare('0.10.0', '>=')
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
||||||
@ -34,11 +34,10 @@
|
|||||||
- name: "Copy telegraf extra plugins"
|
- name: "Copy telegraf extra plugins"
|
||||||
template:
|
template:
|
||||||
src: "telegraf-extra-plugin.conf.j2"
|
src: "telegraf-extra-plugin.conf.j2"
|
||||||
dest: "/etc/telegraf/telegraf.d/{{ item.plugin }}.conf"
|
dest: "/etc/telegraf/telegraf.d/extra-plugins.conf"
|
||||||
owner: root
|
owner: telegraf
|
||||||
group: root
|
group: telegraf
|
||||||
mode: 0644
|
mode: 0640
|
||||||
with_items: "{{ telegraf_plugins_extra }}"
|
|
||||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||||
become: yes
|
become: yes
|
||||||
notify: "Restart Telegraf"
|
notify: "Restart Telegraf"
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
|
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
|
||||||
{% for item in telegraf_plugins_extra %}
|
{% for item in telegraf_plugins_extra %}
|
||||||
[[inputs.{{ item.plugin }}]]
|
[[inputs.{{ item.plugin }}]]
|
||||||
@ -10,6 +9,12 @@
|
|||||||
{{ items }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% 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 %}
|
{% if item.tagpass is defined and item.tagpass is iterable %}
|
||||||
[{{ item.plugin }}.tagpass]
|
[{{ item.plugin }}.tagpass]
|
||||||
{% for items in item.tagpass %}
|
{% for items in item.tagpass %}
|
||||||
|
@ -54,6 +54,12 @@
|
|||||||
{{ items }}
|
{{ items }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% 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 %}
|
{% if item.tagpass is defined and item.tagpass is iterable %}
|
||||||
[{{ item.plugin }}.tagpass]
|
[{{ item.plugin }}.tagpass]
|
||||||
{% for items in item.tagpass %}
|
{% for items in item.tagpass %}
|
||||||
|
@ -12,9 +12,9 @@ def test_telegraf_running_and_enabled(Service, SystemInfo):
|
|||||||
|
|
||||||
def test_telegraf_dot_conf(File):
|
def test_telegraf_dot_conf(File):
|
||||||
telegraf = File("/etc/telegraf/telegraf.conf")
|
telegraf = File("/etc/telegraf/telegraf.conf")
|
||||||
assert telegraf.user == "root"
|
assert telegraf.user == "telegraf"
|
||||||
assert telegraf.group == "root"
|
assert telegraf.group == "telegraf"
|
||||||
assert telegraf.mode == 0o644
|
assert telegraf.mode == 0o640
|
||||||
assert telegraf.contains('[[inputs.cpu]]')
|
assert telegraf.contains('[[inputs.cpu]]')
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user