mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
23 Commits
Author | SHA1 | Date | |
---|---|---|---|
3df05b4738 | |||
4fcb2ac9d2 | |||
8f5cc0959d | |||
51ac4b7640 | |||
2f3b11241d | |||
d0258da789 | |||
a49a079664 | |||
af96592932 | |||
875b1a5ee8 | |||
aafd65f4b1 | |||
6d04f839e0 | |||
2c896aa512 | |||
e6d715e81a | |||
316772ba64 | |||
1d413000a4 | |||
63249b4fba | |||
c1758eaa74 | |||
0f001e68c2 | |||
57f5395c7d | |||
eb986ae494 | |||
cc40194a65 | |||
06a63e3580 | |||
5829b6bc02 |
@ -5,7 +5,7 @@ services:
|
||||
- docker
|
||||
|
||||
install:
|
||||
- pip install molecule ansible docker
|
||||
- pip install molecule ansible docker==2.7.0
|
||||
|
||||
script:
|
||||
- molecule --version
|
||||
|
@ -5,6 +5,15 @@ Below an overview of all changes in the releases.
|
||||
|
||||
Version (Release date)
|
||||
|
||||
0.9.0 (2018-05-06)
|
||||
|
||||
* plugins: be able to specify the filename of extra plugings #40 (By pull request: gaelL (Thanks!))
|
||||
* Fix markdown #41 (By pull request: Angristan (Thanks!))
|
||||
* Allow to override RedHat release version #43 (By pull request: tszym (Thanks!))
|
||||
* Improved comments, split up role, moved tags and added defaults #45 (By pull request: boxrick (Thanks!))
|
||||
* Fix Travis Tests #42
|
||||
* Convert the telegraf_plugins_extra varaible to a hash so that we can … #46 (By pull request: tjend (Thanks!))
|
||||
|
||||
0.8.0 (2017-10-30)
|
||||
|
||||
* Updating to Molecule V2
|
||||
|
35
README.md
35
README.md
@ -36,6 +36,8 @@ The following parameters can be set for the Telegraf agent:
|
||||
* `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_jitter`: Jitter the flush interval by a random amount. Default: 0
|
||||
* `telegraf_agent_aws_tags`: Configure AWS ec2 tags into Telegraf tags section Default: `False`
|
||||
* `telegraf_agent_aws_tags_prefix`: Define a prefix for AWS ec2 tags. Default: `""`
|
||||
* `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)
|
||||
@ -68,7 +70,7 @@ The config will be printed line by line into the configuration, so you could als
|
||||
|
||||
and it will be printed in the configuration file.
|
||||
|
||||
There are two properties which are the same, but are used differently. Those are:
|
||||
There are two properties which are similar, but are used differently. Those are:
|
||||
|
||||
* `telegraf_plugins_default`
|
||||
* `telegraf_plugins_extra`
|
||||
@ -88,11 +90,11 @@ With the property `telegraf_plugins_default` it is set to use the default set of
|
||||
|
||||
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. It is a hash instead of a list, so that you can merge values from multiple var files together. Following is an example for using this parameter for MySQL database servers:
|
||||
|
||||
cat group_vars/mysql_database
|
||||
telegraf_plugins_extra:
|
||||
- plugin: mysql
|
||||
mysql:
|
||||
config:
|
||||
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
|
||||
|
||||
@ -129,15 +131,28 @@ No dependencies
|
||||
roles:
|
||||
- { role: dj-wasabi.telegraf }
|
||||
|
||||
##Contributors
|
||||
## Contributors
|
||||
|
||||
The following have contributed to this Ansible role:
|
||||
|
||||
* aferrari-technisys
|
||||
* stvnwrgs
|
||||
* lhoss
|
||||
* thecodeassassin
|
||||
* Ismael
|
||||
* romainbureau
|
||||
* Thomas Szymanski
|
||||
* Alejandro
|
||||
* Slawomir Skowron
|
||||
* Ismael
|
||||
* Laurent Hoss
|
||||
* Anthony ARNAUD
|
||||
* Rick Box
|
||||
* Emerson Knapp
|
||||
* gaelL
|
||||
* Steven Wirges
|
||||
* zend0
|
||||
* Angristan
|
||||
* Olivier Boukili
|
||||
* Romain BUREAU
|
||||
* TheCodeAssassin
|
||||
* tjend
|
||||
|
||||
Thank you all!
|
||||
|
||||
## Molecule
|
||||
|
||||
|
@ -8,6 +8,8 @@ telegraf_agent_debug: False
|
||||
telegraf_agent_round_interval: True
|
||||
telegraf_agent_flush_interval: 10
|
||||
telegraf_agent_flush_jitter: 0
|
||||
telegraf_agent_aws_tags: False
|
||||
telegraf_agent_aws_tags_prefix: ""
|
||||
|
||||
# v0.13 settings (not sure if supported in older version):
|
||||
telegraf_agent_collection_jitter: 0
|
||||
@ -28,6 +30,7 @@ telegraf_agent_output:
|
||||
- database = "telegraf"
|
||||
- precision = "s"
|
||||
|
||||
# defaults - /etc/telegraf/telegraf.conf
|
||||
telegraf_plugins_default:
|
||||
- plugin: cpu
|
||||
config:
|
||||
@ -39,5 +42,11 @@ telegraf_plugins_default:
|
||||
- plugin: system
|
||||
- plugin: swap
|
||||
- plugin: netstat
|
||||
- plugin: processes
|
||||
- plugin: kernel
|
||||
|
||||
telegraf_plugins_extra:
|
||||
# extra configuration - /etc/telegraf/telegraf.d/*
|
||||
telegraf_plugins_extra: {}
|
||||
|
||||
# RedHat specific settings for convenience
|
||||
telegraf_redhat_releasever: "$releasever"
|
||||
|
@ -3,7 +3,7 @@
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: False
|
||||
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||
# no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||
vars:
|
||||
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
|
||||
@ -39,7 +39,7 @@
|
||||
image: "molecule_local/{{ item.image }}"
|
||||
state: started
|
||||
recreate: False
|
||||
log_driver: syslog
|
||||
log_driver: none
|
||||
command: "{{ item.command | default('sleep infinity') }}"
|
||||
privileged: "{{ item.privileged | default(omit) }}"
|
||||
volumes: "{{ item.volumes | default(omit) }}"
|
||||
|
@ -4,9 +4,6 @@
|
||||
stat:
|
||||
path: /usr/lib/apt/methods/https
|
||||
register: apt_https_transport
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
||||
- name: Install APT HTTPS transport.
|
||||
apt:
|
||||
@ -14,18 +11,12 @@
|
||||
state: present
|
||||
when: not apt_https_transport.stat.exists
|
||||
become: yes
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
||||
- name: Download Telegraf apt key.
|
||||
apt_key:
|
||||
url: "https://repos.influxdata.com/influxdb.key"
|
||||
state: present
|
||||
become: yes
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
||||
- name: Add Telegraf repository (using LSB).
|
||||
apt_repository:
|
||||
@ -33,9 +24,6 @@
|
||||
filename: "telegraf"
|
||||
state: present
|
||||
become: yes
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
when: ansible_lsb is defined and ansible_lsb.codename is defined
|
||||
|
||||
- name: Add Telegraf repository.
|
||||
@ -44,17 +32,11 @@
|
||||
filename: "telegraf"
|
||||
state: present
|
||||
become: yes
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
when: ansible_lsb is not defined or ansible_lsb.codename is not defined
|
||||
|
||||
- name: "Install telegraf package | Debian"
|
||||
apt:
|
||||
name: telegraf
|
||||
name: "telegraf"
|
||||
state: installed
|
||||
notify: "Restart Telegraf"
|
||||
become: yes
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
@ -1,10 +1,11 @@
|
||||
---
|
||||
# description: RedHat specific installation
|
||||
|
||||
- name: "Add yum repository | RedHat"
|
||||
yum_repository:
|
||||
name: influxdb
|
||||
description: InfluxDB Repository - RHEL $releasever
|
||||
baseurl: https://repos.influxdata.com/rhel/$releasever/$basearch/stable
|
||||
baseurl: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
|
||||
gpgcheck: yes
|
||||
gpgkey: https://repos.influxdata.com/influxdb.key
|
||||
|
||||
|
51
tasks/configure.yml
Normal file
51
tasks/configure.yml
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
# description: Configure telegraf and get all relevent ec2 information
|
||||
|
||||
- name: Retrieve ec2 facts
|
||||
ec2_facts:
|
||||
when: telegraf_agent_aws_tags
|
||||
|
||||
- name: Retrieve all ec2 tags on the instance
|
||||
ec2_tag:
|
||||
region: '{{ ansible_ec2_placement_region }}'
|
||||
resource: '{{ ansible_ec2_instance_id }}'
|
||||
state: list
|
||||
when: telegraf_agent_aws_tags
|
||||
register: ec2_tags
|
||||
|
||||
- name: "Copy the template for versions < 0.10.0"
|
||||
template:
|
||||
src: etc-opt-telegraf-telegraf.conf.j2
|
||||
dest: /etc/opt/telegraf/telegraf.conf
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
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: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
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.value.filename | default(item.key) }}.conf"
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
- name: "Force restart service after reread config"
|
||||
meta: flush_handlers
|
@ -8,37 +8,9 @@
|
||||
- name: "Install the correct repository"
|
||||
include: "Debian.yml"
|
||||
when: ansible_os_family == "Debian"
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
||||
- name: "Copy the template for versions < 0.10.0"
|
||||
template:
|
||||
src: etc-opt-telegraf-telegraf.conf.j2
|
||||
dest: /etc/opt/telegraf/telegraf.conf
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
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: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
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: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
with_items: "{{ telegraf_plugins_extra }}"
|
||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
- name: "Configure telegraf"
|
||||
include: "configure.yml"
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Telegraf configuration
|
||||
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
|
||||
|
||||
[tags]
|
||||
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
|
||||
@ -7,6 +7,12 @@
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if telegraf_agent_aws_tags == true and ec2_tags is defined and ec2_tags != None %}
|
||||
{% for key, value in ec2_tags.tags.iteritems()%}
|
||||
{{telegraf_agent_aws_tags_prefix}}{{ key }} = "{{ value }}"
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# Configuration for telegraf itself
|
||||
[agent]
|
||||
interval = "{{ telegraf_agent_interval }}s"
|
||||
|
@ -1,45 +1,47 @@
|
||||
[[inputs.{{ item.plugin }}]]
|
||||
{% if item.interval is defined %}
|
||||
interval = "{{ item.interval }}s"
|
||||
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
|
||||
|
||||
[[inputs.{{ item.key }}]]
|
||||
{% if item.value.interval is defined %}
|
||||
interval = "{{ item.value.interval }}s"
|
||||
{% endif %}
|
||||
{% if item.config is defined and item.config is iterable %}
|
||||
{% for items in item.config %}
|
||||
{% if item.value.config is defined and item.value.config is iterable %}
|
||||
{% for items in item.value.config %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.tags is defined and item.tags is iterable %}
|
||||
[inputs.{{ item.plugin }}.tags]
|
||||
{% for items in item.tags %}
|
||||
{% if item.value.tags is defined and item.value.tags is iterable %}
|
||||
[inputs.{{ item.key }}.tags]
|
||||
{% for items in item.value.tags %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.tagpass is defined and item.tagpass is iterable %}
|
||||
[{{ item.plugin }}.tagpass]
|
||||
{% for items in item.tagpass %}
|
||||
{% if item.value.tagpass is defined and item.value.tagpass is iterable %}
|
||||
[{{ item.key }}.tagpass]
|
||||
{% for items in item.value.tagpass %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.tagdrop is defined and item.tagdrop is iterable %}
|
||||
[{{ item.plugin }}.tagdrop]
|
||||
{% for items in item.tagdrop %}
|
||||
{% if item.value.tagdrop is defined and item.value.tagdrop is iterable %}
|
||||
[{{ item.key }}.tagdrop]
|
||||
{% for items in item.value.tagdrop %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.pass is defined and item.pass is iterable %}
|
||||
[{{ item.plugin }}.pass]
|
||||
{% for items in item.pass %}
|
||||
{% if item.value.pass is defined and item.value.pass is iterable %}
|
||||
[{{ item.key }}.pass]
|
||||
{% for items in item.value.pass %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.drop is defined and item.drop is iterable %}
|
||||
[{{ item.plugin }}.drop]
|
||||
{% for items in item.drop %}
|
||||
{% if item.value.drop is defined and item.value.drop is iterable %}
|
||||
[{{ item.key }}.drop]
|
||||
{% for items in item.value.drop %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if item.specifications is defined and item.specifications is iterable %}
|
||||
[[{{item.plugin}}.specifications]]
|
||||
{% for items in item.specifications %}
|
||||
{% if item.value.specifications is defined and item.value.specifications is iterable %}
|
||||
[[{{item.key}}.specifications]]
|
||||
{% for items in item.value.specifications %}
|
||||
{{ items }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Telegraf configuration
|
||||
### MANAGED BY {{ role_path|basename }} ANSIBLE ROLE ###
|
||||
|
||||
[global_tags]
|
||||
{% if telegraf_global_tags is defined and telegraf_global_tags is iterable %}
|
||||
@ -7,6 +7,12 @@
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if telegraf_agent_aws_tags == true and ec2_tags is defined and ec2_tags != None %}
|
||||
{% for key, value in ec2_tags.tags.iteritems()%}
|
||||
{{telegraf_agent_aws_tags_prefix}}{{ key }} = "{{ value }}"
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
# Configuration for telegraf agent
|
||||
[agent]
|
||||
interval = "{{ telegraf_agent_interval }}s"
|
||||
|
Reference in New Issue
Block a user