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)
|
||||
|
||||
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!))
|
||||
|
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)
|
||||
|
||||
@ -13,19 +12,25 @@ Design goals are to have a minimal memory footprint with a plugin system so that
|
||||
|
||||
(https://github.com/influxdb/telegraf)
|
||||
|
||||
Requirements
|
||||
------------
|
||||
## Requirements
|
||||
|
||||
|
||||
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:
|
||||
|
||||
* `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_debug`: Run Telegraf in debug mode. Default: `False`
|
||||
* `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:
|
||||
- urls = ["http://localhost:8086"]
|
||||
- database = "telegraf"
|
||||
tagpass:
|
||||
- diskmetrics = ["true"]
|
||||
|
||||
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: 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:
|
||||
|
||||
@ -92,6 +99,7 @@ The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific t
|
||||
|
||||
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.
|
||||
* `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.
|
||||
@ -103,18 +111,19 @@ An example might look like this:
|
||||
telegraf_plugins_default:
|
||||
- plugin: disk
|
||||
interval: 12
|
||||
tags:
|
||||
- diskmetrics = "true"
|
||||
tagpass:
|
||||
- fstype = [ "ext4", "xfs" ]
|
||||
- path = [ "/opt", "/home" ]
|
||||
|
||||
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
## Dependencies
|
||||
|
||||
No dependencies
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
## Example Playbook
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
@ -130,17 +139,15 @@ The following have contributed to this Ansible role:
|
||||
* Ismael
|
||||
* 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/
|
||||
|
||||
License
|
||||
-------
|
||||
## License
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
## Author Information
|
||||
|
||||
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: 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_debug: False
|
||||
telegraf_agent_round_interval: True
|
||||
@ -22,9 +20,6 @@ telegraf_agent_quiet: False
|
||||
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_output:
|
||||
|
@ -2,8 +2,8 @@
|
||||
# handlers file for ansible-telegraf
|
||||
|
||||
- name: "Restart Telegraf"
|
||||
action: service
|
||||
name=telegraf
|
||||
state=restarted
|
||||
enabled=yes
|
||||
service:
|
||||
name: telegraf
|
||||
state: restarted
|
||||
enabled: yes
|
||||
become: yes
|
12
playbook.yml
12
playbook.yml
@ -2,14 +2,14 @@
|
||||
- hosts: all
|
||||
pre_tasks:
|
||||
- name: "Installing which on CentOS"
|
||||
action: yum
|
||||
name=which
|
||||
state=installed
|
||||
yum:
|
||||
name: which
|
||||
state: installed
|
||||
when: ansible_distribution == 'CentOS'
|
||||
- name: "Installing wget on Debian"
|
||||
action: apt
|
||||
name=wget
|
||||
state=installed
|
||||
apt:
|
||||
name: wget
|
||||
state: installed
|
||||
when: ansible_distribution == 'Debian'
|
||||
roles:
|
||||
- role: ansible-telegraf
|
||||
|
@ -32,6 +32,7 @@
|
||||
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
|
||||
filename: "influxdb"
|
||||
state: present
|
||||
become: yes
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
@ -49,9 +50,9 @@
|
||||
when: ansible_lsb is not defined
|
||||
|
||||
- name: "Install telegraf package | Debian"
|
||||
action: apt
|
||||
name=telegraf
|
||||
state=installed
|
||||
apt:
|
||||
name: telegraf
|
||||
state: installed
|
||||
notify: "Restart Telegraf"
|
||||
become: yes
|
||||
tags:
|
||||
|
@ -1,14 +1,14 @@
|
||||
---
|
||||
|
||||
- name: "Enable EPEL"
|
||||
action: yum
|
||||
name=epel-release
|
||||
state=installed
|
||||
yum:
|
||||
name: epel-release
|
||||
state: installed
|
||||
|
||||
- name: "Installing some dependencies"
|
||||
action: yum
|
||||
name={{ item }}
|
||||
state=installed
|
||||
yum:
|
||||
name: "{{ item }}"
|
||||
state: installed
|
||||
with_items:
|
||||
- python-pip
|
||||
- python-devel
|
||||
@ -17,22 +17,24 @@
|
||||
- openssl-devel
|
||||
|
||||
- name: "Installing PIP dependensies"
|
||||
action: pip
|
||||
name={{ item }}
|
||||
state=present
|
||||
pip:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_items:
|
||||
- urllib3
|
||||
- pyopenssl
|
||||
- ndg-httpsclient
|
||||
|
||||
- name: "Fetch telegraf installation package | RedHat"
|
||||
action: get_url
|
||||
url="{{ telegraf_agent_rpm_url }}"
|
||||
dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
|
||||
mode=0440
|
||||
- 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"
|
||||
action: yum
|
||||
name=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
|
||||
state=installed
|
||||
yum:
|
||||
name: "telegraf-{{ telegraf_agent_version }}"
|
||||
state: installed
|
||||
notify: "Restart Telegraf"
|
||||
|
@ -13,9 +13,9 @@
|
||||
template:
|
||||
src: etc-opt-telegraf-telegraf.conf.j2
|
||||
dest: /etc/opt/telegraf/telegraf.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
become: yes
|
||||
when: telegraf_agent_version|version_compare('0.10.0', '<')
|
||||
notify: "Restart Telegraf"
|
||||
@ -24,9 +24,9 @@
|
||||
template:
|
||||
src: telegraf.conf.j2
|
||||
dest: /etc/telegraf/telegraf.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
become: yes
|
||||
when: telegraf_agent_version|version_compare('0.10.0', '>=')
|
||||
notify: "Restart Telegraf"
|
||||
@ -34,11 +34,10 @@
|
||||
- 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 }}"
|
||||
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"
|
@ -1,4 +1,3 @@
|
||||
|
||||
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
|
||||
{% for item in telegraf_plugins_extra %}
|
||||
[[inputs.{{ item.plugin }}]]
|
||||
@ -10,6 +9,12 @@
|
||||
{{ 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 %}
|
||||
|
@ -54,6 +54,12 @@
|
||||
{{ 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 %}
|
||||
|
@ -12,9 +12,9 @@ def test_telegraf_running_and_enabled(Service, SystemInfo):
|
||||
|
||||
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.user == "telegraf"
|
||||
assert telegraf.group == "telegraf"
|
||||
assert telegraf.mode == 0o640
|
||||
assert telegraf.contains('[[inputs.cpu]]')
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user