46 Commits

Author SHA1 Message Date
567539a637 Updated Changelog for release 0.12.0 2019-03-12 19:51:10 +01:00
69526620d9 Merge pull request #94 from ph4r5h4d/master
Add processors section in Telegraf config
2019-03-12 16:25:37 +01:00
618b8fa540 Add processors sample to README 2019-03-12 17:50:26 +03:30
f59d45a167 Add processors section in Telegraf config
telegraf_processors: 
  - processor: rename
  - processor: rename.replace  
    config:
        - tag = "message"
        - dest = "messages"
2019-03-12 14:21:45 +03:30
857a7a7938 Merge pull request #93 from dj-wasabi/download-from-influxdb
Updated to Telegraf 1.10.0;Different installation methods
2019-03-11 07:26:45 +01:00
dd28f645a9 increasing limit 2019-03-10 12:45:51 +01:00
0aba53bb17 Updated to Telegraf 1.10.0;Different installation methods 2019-03-10 12:39:14 +01:00
8a8d826de4 Merge pull request #92 from sdurrheimer/master
Updating Telegraf default to 1.9.5
2019-02-27 19:11:36 +01:00
499f217ed3 Updating Telegraf default to 1.9.5
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-02-27 15:26:58 +01:00
6f8bf1162c Merge pull request #90 from sdurrheimer/master
Updating Telegraf default to 1.9.4
2019-02-07 21:39:29 +01:00
9d24186e01 Updating Telegraf default to 1.9.4
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-02-07 11:49:40 +01:00
8b0cfeac4d Merge pull request #88 from jgeusebroek/master
Docker enhancements
2019-02-02 17:09:10 +01:00
b88d46ad1a Disable apparmor for Telegraf container (otherwise the logs are swamped with errors). Ignored on other platforms. 2019-02-02 15:52:51 +01:00
2003635e73 Docker telegraf uid and gid configurable 2019-02-02 15:51:19 +01:00
50c4043389 Merge pull request #87 from sdurrheimer/master
Updating Telegraf default to 1.9.3
2019-01-23 16:19:36 +01:00
2086b24b79 Updating Telegraf default to 1.9.3
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-01-23 15:48:28 +01:00
cf84634ce4 Added register 2019-01-23 11:40:11 +01:00
eaa7210976 Merge pull request #86 from dj-wasabi/add-register-for-trying-again
Added register for installation of packages
2019-01-23 11:25:18 +01:00
87c014da34 Set molecule to latest 2019-01-23 10:12:11 +01:00
bf008bec0c Aded a register so installation can be done again. This would also reduce the amount of E405 lint errors 2019-01-23 09:58:00 +01:00
0b285f7772 Minor documentation changes 2019-01-23 09:53:21 +01:00
2c444d97a8 Merge pull request #85 from jgeusebroek/master
Add Docker container support
2019-01-22 19:35:33 +01:00
5785e4a690 Only restart container when docker is the target platform 2019-01-22 19:04:00 +01:00
1d57bf2af8 Fix test 2019-01-22 16:40:13 +01:00
9f98ae6a76 Add Docker container support 2019-01-22 16:24:21 +01:00
35cd29007a Merge pull request #84 from jgeusebroek/master
Remove legacy options
2019-01-22 15:07:26 +01:00
8cdce07205 Update README, remove legacy options 2019-01-21 18:08:55 +01:00
f826414f5f Remove legacy configuration options 2019-01-21 17:24:01 +01:00
f6be7d6a4c Merge pull request #83 from jgeusebroek/master
Fix tagpass and tagdrop
2019-01-21 16:52:22 +01:00
5764b4bc90 item != inputs 2019-01-21 15:37:43 +01:00
07a6cb0135 Fix tagpass & tagdrop on outputs 2019-01-21 15:34:07 +01:00
140597e41d Also fix tagpass and tagdrop for older configuration format 2019-01-21 15:04:33 +01:00
d744a12f6f Fix tagpass and tagdrop syntax 2019-01-21 15:02:32 +01:00
0cb6770905 Merge pull request #81 from pad92/patch-1
[bug] debian - add cache_valid_time
2019-01-17 15:04:46 +01:00
1ccb184813 add cache_valid_time
- influx keep only last version on they repo

set cache_valid_time to 15mintutes to avoid fail install of old telegraf version
2019-01-17 10:43:19 +01:00
88ba1e218f Merge pull request #79 from anthonysr-mc/2019_01_08_amazon_linux
Add Yum repo support for Amazon Linux
2019-01-09 10:41:02 +01:00
5b31515d1b Merge pull request #80 from sdurrheimer/master
Updating Telegraf default to 1.9.2
2019-01-09 10:39:44 +01:00
38933cfc30 Updating Telegraf default to 1.9.2
Signed-off-by: Steve Durrheimer <s.durrheimer@gmail.com>
2019-01-09 10:06:09 +01:00
454ee8be7b Add Yum repo support for Amazon Linux 2019-01-08 13:15:47 -08:00
d49c278506 Merge pull request #78 from ikke-t/fedora-dnf
Fix to work with Fedora Linux
2018-12-17 06:45:30 +01:00
e3c553e729 Need to pull RHEL packages for Fedora
It seems Influxdb does not provide packages for Fedora. Thus the package repository URL needs to be hard coded to RHEL7 if run from Fedora. This change recognises we are on Fedora, and fakes RHEL release to be 7 so URL gets right.
2018-12-17 00:14:19 +02:00
c5e6883c1b Fedora dnf breaks with yum module.
Fedora uses dnf instead of yum. If this change is not made, playbook fails with:
fatal: [xx.yy]: FAILED! => {"changed": false, "msg": "The Python 2 yum module is needed for this module. If you require Python 3 support use the `dnf` Ansible module instead."}
2018-12-16 23:45:47 +02:00
a4d3eb237c Merge pull request #76 from jdivy/windows
Add support for extra win_perf_counters and prevent python u'' strings
2018-12-13 18:42:28 +01:00
ced8fd8ad5 Merge pull request #77 from dj-wasabi/update-telegraf
Updating to newer version of Telegraf
2018-12-13 18:42:21 +01:00
5f5d393a3f Updating to newer version of Telegraf 2018-12-13 18:26:11 +01:00
086dfab7d3 Add support for extra win_perf_counters and prevent python u'' strings 2018-12-13 10:42:39 -06:00
15 changed files with 394 additions and 118 deletions

View File

@ -5,6 +5,21 @@ Below an overview of all changes in the releases.
Version (Release date)
0.12.0 (2019-03-12)
* Add support for extra win_perf_counters and prevent python u'' strings #76 (By pull request: jdivy (Thanks!))
* Fix to work with Fedora Linux #78 (By pull request: ikke-t (Thanks!))
* Add Yum repo support for Amazon Linux #79 (By pull request: anthonysr-mc (Thanks!))
* Updating Telegraf default to 1.9.2 #80 (and some to other versions as well) (By pull request: sdurrheimer (Thanks!))
* [bug] debian - add cache_valid_time #81 (By pull request: pad92 (Thanks!))
* Fix tagpass and tagdrop #83 (By pull request: jgeusebroek (Thanks!))
* Remove legacy options #84 (By pull request: jgeusebroek (Thanks!))
* Add Docker container support #85 (By pull request: jgeusebroek (Thanks!))
* Added register for installation of packages #86
* Docker enhancements #88 (By pull request: jgeusebroek (Thanks!))
* Updated to Telegraf 1.10.0;Different installation methods #93
* Add processors section in Telegraf config #94 (By pull request: ph4r5h4d (Thanks!))
0.11.0 (2018-12-11)
* Added support for plugins being managed exclusively by this playbook #60 (By pull request: gaizeror (Thanks!))

175
README.md
View File

@ -14,21 +14,31 @@ Design goals are to have a minimal memory footprint with a plugin system so that
## Requirements
### Operating systems
This role will work on the following operating systems:
### Supported systems
This role supports the following systems:
* Red Hat
* Debian
* Ubuntu
* Docker container
* Windows (Best effort)
* (Open)Suse
So, you'll need one of those operating systems.. :-)
Please sent Pull Requests or suggestions when you want to use this role for other Operating systems.
So, you'll need one of those systems.. :-)
Please sent Pull Requests or suggestions when you want to use this role for other systems.
### InfluxDB
You'll need an InfluxDB instance running somewhere on your network.
You'll need an InfluxDB instance running somewhere on your network. Or 1 of the other output types found on https://github.com/influxdata/telegraf/#output-plugins
### Docker
Docker needs to be installed on the target host. I can recommend these roles to install Docker:
* [jgeusebroek.docker](https://galaxy.ansible.com/jgeusebroek/docker)
* [geerlingguy.docker](https://galaxy.ansible.com/geerlingguy/docker)
This is only the case when the configuration is needed for a Telegraf inside a Docker container (When `telegraf_agent_docker: True`).
## Upgrade
### 0.7.0
@ -39,13 +49,30 @@ There was an issue:
## Role Variables
### Overall variables
### Ansible role specific variables
The following parameters can be set for the Telegraf agent:
Specifying the version to be installed:
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.9.0`
* `telegraf_agent_package`: The name of the Telegraf package. Default: `telegraf`
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.10.0`
How `Telegraf` needs to be installed. There are 3 methods in getting `Telegraf` installed on the target host:
* Via the package manager, like `yum`, `apt` or `zypper` ("repo");
* Via a download from the `https://dl.influxdata.com/` site ("online");
* Already provided and is already available on the target host, but not yet installed/configured ("offline");
This can be configured by setting `telegraf_agent_package_method` to one of the appropriate values ( `repo`, `online` or `offline`).
#### Telegraf Package
These properties set in how and what package will be installed.
* `telegraf_agent_package`: The name of the Telegraf package to install. When `telegraf_agent_package_method` is set to `online` or `offline`, it needs to have the full path of the file. Example: `telegraf_agent_package: /tmp/telegraf.rpm`. Default: `telegraf_agent_package: telegraf`.
* `telegraf_agent_package_method`: The installation method to be used. Can choose between: `repo`, `offline` or `online`.
* `telegraf_agent_package_state`: If the package should be `present` or `latest`. When set to `latest`, `telegraf_agent_version` will be ignored. Default: `present`
### Telegraf agent process configuration.
* `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
@ -60,7 +87,19 @@ The following parameters can be set for the Telegraf agent:
* `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
### Docker specific role variables:
* `telegraf_agent_docker`: Install Telegraf as a docker container. Default: `False`
* `telegraf_agent_docker_name`: Name of the docker container. Default: `telegraf`
* `telegraf_agent_docker_network_mode`: Networking mode of the docker container. Default: `bridge`
* `telegraf_agent_docker_restart_policy`: Docker container restart policy. Default: `unless-stopped`
* `telegraf_uid_docker`: Override user id. Default: `995`
* `telegraf_gid_docker`: Override group id. Default: `998`
Full agent settings reference: [https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration](https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration).
## Extra information
### Setting tags
You can set tags for the host running telegraf:
@ -75,8 +114,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"]
tagpass:
- cpu = ["cpu0"]
The config will be printed line by line into the configuration, so you could also use:
@ -85,11 +124,60 @@ The config will be printed line by line into the configuration, so you could als
and it will be printed in the configuration file.
### Docker specifics
#### Docker image
The official [Influxdata Telegraf image](https://hub.docker.com/_/telegraf) is used. `telegraf_agent_version` will translate to the image tag.
#### Docker mounts
Please note that the Docker container bind mounts basicly your whole system (read-only) to monitor the Docker Engine Host from within the container. To be precise:
- /etc/telegraf:/etc/telegraf:ro
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run:ro
More information: [https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md](https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md).
#### Example Docker configuration
telegraf_agent_docker: True
# Force host networking mode, so Docker Engine Host traffic metrics can be gathered.
telegraf_agent_docker_network_mode: host
# Force a specific image tag.
telegraf_agent_version: 1.10.0-alpine
telegraf_plugins_default:
- plugin: cpu
config:
- percpu = "true"
- plugin: disk
tags:
- diskmetrics = "true"
tagpass:
- fstype = [ "ext4", "xfs" ]
tagdrop:
- path = [ "/etc", "/etc/telegraf", "/etc/hostname", "/etc/hosts", "/etc/resolv.conf" ]
- plugin: io
- plugin: mem
- plugin: system
- plugin: swap
- plugin: netstat
- plugin: processes
- plugin: docker
config:
- endpoint = "unix:///var/run/docker.sock"
- timeout = "5s"
## Windows specific Variables
**NOTE**
_Supporting Windows is an best effort (I don't have the possibility to either test/verify changes on the various amount of available Windows instances). PR's specific to Windows will almost immediately be merged, unless some one is able to provide a Windows test mechanism via Travis for Pull Requests._
_Supporting Windows is an best effort (I don't have the possibility to either test/verify changes on the various amount of available Windows instances). PR's specific to Windows will almost immediately be merged, unless some one is able to provide a Windows test mechanism via Travis or other service for Pull Requests._
* `telegraf_win_install_dir`: The directory where Telegraf will be installed.
* `telegraf_win_logfile`: The location to the logfile of Telegraf.
@ -130,8 +218,6 @@ There is an option to delete extra-plugin files in /etc/telegraf/telegraf.d if 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.
* `tagdrop`: (added in Telegraf 0.1.5) The inverse of tagpass. If a tag matches, the metric is not emitted. This is tested on metrics that have passed the tagpass test.
* `interval`: How often to gather this metric. Normal plugins use a single global interval, but if one particular plugin should be run less or more often, you can configure that here.
@ -141,13 +227,22 @@ An example might look like this:
telegraf_plugins_default:
- plugin: disk
interval: 12
tags:
- diskmetrics = "true"
tags:
- diskmetrics = "true"
tagpass:
- fstype = [ "ext4", "xfs" ]
- path = [ "/opt", "/home" ]
If you want to define processors you can simply use `telegraf_processors` variable.
An example might look like this:
```
telegraf_processors:
- processor: rename
- processor: rename.replace
config:
- tag = "level"
- dest = "LogLevel"
```
## Dependencies
@ -161,24 +256,34 @@ No dependencies
## Contributors
The following have contributed to this Ansible role:
The following have contributed to this Ansible role (Provided with: `git shortlog -s -n`):
* 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
* Werner Dijkerman
* Thomas Szymanski
* Jeroen Geusebroek
* or
* Alejandro
* Troy Jendra
* Slawomir Skowron
* gaelL
* Laurent Hoss
* Ismael
* Anthony ARNAUD
* Ilkka Tengvall
* Rick Box
* Steven Wirges
* Jack Ivy
* Emerson Knapp
* zend0
* Angristan
* Miroslav Prasil
* Olivier Boukili
* Pascal
* Romain BUREAU
* Ryan Conway
* Steve Durrheimer
* TheCodeAssassin
* aroglian
Thank you all!

View File

@ -1,9 +1,11 @@
---
# defaults file for ansible-telegraf
telegraf_agent_version: 1.9.0
telegraf_agent_version: 1.10.0
telegraf_agent_version_patch: 1
telegraf_agent_package: telegraf
telegraf_agent_package_path: /tmp
telegraf_agent_package_method: repo
telegraf_agent_package_state: present
telegraf_agent_hostname: "{{ ansible_fqdn }}"
telegraf_agent_interval: 10
@ -14,6 +16,14 @@ telegraf_agent_flush_jitter: 0
telegraf_agent_aws_tags: False
telegraf_agent_aws_tags_prefix: ""
# Docker specific settings
telegraf_uid_docker: 998
telegraf_gid_docker: 995
telegraf_agent_docker: False
telegraf_agent_docker_name: telegraf
telegraf_agent_docker_network_mode: bridge
telegraf_agent_docker_restart_policy: unless-stopped
# v0.13 settings (not sure if supported in older version):
telegraf_agent_collection_jitter: 0
telegraf_agent_metric_batch_size: 1000
@ -55,6 +65,12 @@ telegraf_plugins_extra_exclusive: False
# RedHat specific settings for convenience
telegraf_redhat_releasever: "$releasever"
telegraf_yum_baseurl:
amazon: "https://repos.influxdata.com/centos/6/$basearch/stable"
centos: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
default: "https://repos.influxdata.com/{{ ansible_distribution|lower }}/{{ telegraf_redhat_releasever }}/$basearch/stable"
redhat: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
telegraf_win_install_dir: 'C:\Telegraf'
telegraf_win_logfile: 'C:\\Telegraf\\telegraf.log'
telegraf_win_include: 'C:\Telegraf\telegraf_agent.d'

View File

@ -6,8 +6,15 @@
name: telegraf
state: restarted
enabled: yes
when: not telegraf_agent_docker
become: yes
- name: "Restart Telegraf container"
docker_container:
name: "{{ telegraf_agent_docker_name }}"
restart: True
when: telegraf_agent_docker
- name: "Restart Windows Telegraf"
win_service:
name: Telegraf

View File

@ -57,8 +57,13 @@ provisioner:
lint:
name: ansible-lint
inventory:
host_vars:
telegraf-debian:
telegraf_agent_package: /tmp/telegraf_amd64.deb
telegraf_agent_package_method: online
group_vars:
all:
telegraf_agent_package_state: latest
telegraf_agent_output:
- type: influxdb
config:

View File

@ -4,6 +4,6 @@ extends: default
rules:
line-length:
max: 140
max: 180
level: warning
truthy: disable

View File

@ -6,6 +6,16 @@
when:
- telegraf_agent_package_state != "latest"
- name: "Debian | Set telegraf_agent_package_arch"
set_fact:
telegraf_agent_package_arch: "{{ ansible_architecture }}"
- name: "Debian | Set telegraf_agent_package_arch specific for x86_64"
set_fact:
telegraf_agent_package_arch: "amd64"
when:
- ansible_architecture == "x86_64"
- name: "Debian | Ensure the system can use the HTTPS transport for APT"
stat:
path: /usr/lib/apt/methods/https
@ -15,6 +25,8 @@
apt:
name: "apt-transport-https"
state: present
register: are_telegraf_dependencies_packages_installed
until: are_telegraf_dependencies_packages_installed is succeeded
when:
- not apt_https_transport.stat.exists
become: yes
@ -24,7 +36,11 @@
url: "https://repos.influxdata.com/influxdb.key"
id: 2582E0C5
state: present
register: are_telegraf_dependencies_keys_installed
until: are_telegraf_dependencies_keys_installed is succeeded
become: yes
when:
- telegraf_agent_package_method == "repo"
- name: "Debian | Add Telegraf repository (using LSB)"
apt_repository:
@ -33,6 +49,7 @@
state: present
become: yes
when:
- telegraf_agent_package_method == "repo"
- ansible_lsb is defined
- ansible_lsb.codename is defined
@ -43,12 +60,34 @@
state: present
become: yes
when:
- telegraf_agent_package_method == "repo"
- ansible_lsb is not defined or ansible_lsb.codename is not defined
- name: "Debian | Install telegraf package"
- name: "Debian | Download Telegraf package (online)"
get_url:
url: https://dl.influxdata.com/telegraf/releases/telegraf_{{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}_{{ telegraf_agent_package_arch }}.deb
dest: "{{ telegraf_agent_package }}"
when:
- telegraf_agent_package_method == "online"
- name: "Debian | Install Telegraf package"
apt:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
force: True
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
become: yes
when:
- telegraf_agent_package_method == "repo"
- name: "Debian | Install Telegraf package"
apt:
deb: "{{ telegraf_agent_package }}"
state: "present"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"
become: yes
when:
- telegraf_agent_package_method != "repo"

View File

@ -7,16 +7,32 @@
when:
- telegraf_agent_package_state != "latest"
- name: Use RHEL 7 packages for Fedora
set_fact:
telegraf_redhat_releasever: 7
when: ansible_distribution == "Fedora"
- name: "RedHat | Add yum repository"
yum_repository:
name: influxdb
description: InfluxDB Repository - RHEL $releasever
baseurl: "https://repos.influxdata.com/rhel/{{ telegraf_redhat_releasever }}/$basearch/stable"
baseurl: "{{ telegraf_yum_baseurl[ansible_distribution|lower] | default(telegraf_yum_baseurl['default']) }}"
gpgcheck: yes
gpgkey: https://repos.influxdata.com/influxdb.key
when:
- telegraf_agent_package_method == "repo"
- name: "RedHat | Install telegraf package"
yum:
- name: "RedHat | Download Telegraf package (online)"
get_url:
url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}.{{ ansible_architecture }}.rpm
dest: "{{ telegraf_agent_package }}"
when:
- telegraf_agent_package_method == "online"
- name: "RedHat | Install Telegraf package"
package:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
notify: "Restart Telegraf"

View File

@ -1,11 +1,11 @@
---
- name: "Suse | Adding telegraf group"
- name: "Suse | Adding Telegraf group"
group:
name: telegraf
state: present
- name: "Suse | Adding telegraf user"
- name: "Suse | Adding Telegraf user"
user:
name: telegraf
group: telegraf
@ -17,6 +17,8 @@
name: ["python-libxml2", "python-xml"]
update_cache: True
state: present
register: are_telegraf_dependencies_packages_installed
until: are_telegraf_dependencies_packages_installed is succeeded
become: yes
- name: "Suse | Install basic repo file"
@ -32,6 +34,8 @@
zypper:
name: "{{ telegraf_agent_package }}"
state: "{{ telegraf_agent_package_state }}"
register: is_telegraf_package_installed
until: is_telegraf_package_installed is succeeded
become: yes
- name: "Suse | Create directories for telegraf"

View File

@ -25,7 +25,9 @@
become: yes
when:
- telegraf_agent_version is version_compare('0.10.0', '<')
notify: "Restart Telegraf"
notify:
- Restart Telegraf
- Restart Telegraf container
- name: "Copy the template for versions >= 0.10.0"
template:
@ -37,7 +39,9 @@
become: yes
when:
- telegraf_agent_version is version_compare('0.10.0', '>=')
notify: "Restart Telegraf"
notify:
- Restart Telegraf
- Restart Telegraf container
- name: "Check if extra plugins directory exists in case of exclusive"
stat:
@ -54,7 +58,9 @@
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
notify: "Restart Telegraf"
notify:
- Restart Telegraf
- Restart Telegraf container
- name: "Create telegraf extra plugin path"
file:
@ -67,7 +73,9 @@
- telegraf_plugins_extra_exclusive
- telegraf_directory.stat.exists
become: yes
notify: "Restart Telegraf"
notify:
- Restart Telegraf
- Restart Telegraf container
- name: "Copy telegraf extra plugins"
template:
@ -84,7 +92,9 @@
- telegraf_plugins_extra is iterable
- item.value.state|default('present') != 'absent'
become: yes
notify: "Restart Telegraf"
notify:
- Restart Telegraf
- Restart Telegraf container
- name: "Remove telegraf extra plugins"
file:
@ -98,7 +108,9 @@
- telegraf_plugins_extra is iterable
- item.value.state|default('present') == 'absent'
become: yes
notify: "Restart Telegraf"
notify:
- Restart Telegraf
- Restart Telegraf container
- name: "Force restart service after reread config"
meta: flush_handlers
@ -109,3 +121,4 @@
state: started
enabled: yes
become: yes
when: not telegraf_agent_docker

59
tasks/docker.yml Normal file
View File

@ -0,0 +1,59 @@
---
- name: Adding Telegraf group
group:
name: telegraf
state: present
gid: "{{ telegraf_gid_docker }}"
- name: Adding Telegraf user
user:
name: telegraf
group: telegraf
state: present
create_home: False
home: /etc/telegraf
uid: "{{ telegraf_uid_docker }}"
system: True
become: yes
- name: Create /etc/telegraf (home) directory
file:
path: /etc/telegraf
owner: telegraf
group: telegraf
mode: 0750
state: directory
become: yes
- name: Create /etc/telegraf.d directory
file:
path: /etc/telegraf/telegraf.d
owner: telegraf
group: telegraf
mode: 0750
state: directory
become: yes
- name: Ensure Telegraf Docker container is running
docker_container:
name: "{{ telegraf_agent_docker_name }}"
image: "telegraf:{{ telegraf_agent_version }}"
state: started
restart_policy: "{{ telegraf_agent_docker_restart_policy }}"
command: -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
network_mode: "{{ telegraf_agent_docker_network_mode }}"
security_opts:
- apparmor:unconfined
volumes:
- /etc/telegraf:/etc/telegraf:ro
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run:ro
env:
HOST_MOUNT_PREFIX: /hostfs
HOST_ETC: /hostfs/etc
HOST_PROC: /hostfs/proc
HOST_SYS: /hostfs/sys

View File

@ -4,21 +4,24 @@
- name: "Install on RedHat"
include_tasks: "RedHat.yml"
when:
- ansible_os_family == "RedHat"
- ansible_os_family == "RedHat" and not telegraf_agent_docker
- name: "Install on Debian"
include_tasks: "Debian.yml"
when:
- ansible_os_family == "Debian"
- ansible_os_family == "Debian" and not telegraf_agent_docker
tags:
- telegraf
- packages
- name: "Install on Suse"
include_tasks: "Suse.yml"
when: ansible_os_family == "Suse"
when: ansible_os_family == "Suse" and not telegraf_agent_docker
- name: "Configure telegraf"
- include_tasks: "docker.yml"
when: telegraf_agent_docker
- name: "Configure Telegraf"
include_tasks: "configure_linux.yml"
when:
- ansible_os_family != "Windows"
@ -26,4 +29,4 @@
- name: "Install / Configure telegraf on Windows"
include_tasks: "configure_windows.yml"
when:
- ansible_os_family == "Windows"
- ansible_os_family == "Windows" and not telegraf_agent_docker

View File

@ -27,6 +27,18 @@
{% for items in item.config %}
{{ items }}
{% endfor %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[outputs.{{ item.type }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[outputs.{{ item.type }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
@ -43,36 +55,17 @@
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
[inputs.{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
[inputs.{{ 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 %}
{% endif %}

View File

@ -16,32 +16,24 @@
{% endfor %}
{% endif %}
{% if item.value.tagpass is defined and item.value.tagpass is iterable %}
[{{ item.value.plugin | default(item.key) }}.tagpass]
[inputs.{{ item.value.plugin | default(item.key) }}.tagpass]
{% for items in item.value.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.tagdrop is defined and item.value.tagdrop is iterable %}
[{{ item.value.plugin | default(item.key) }}.tagdrop]
[inputs.{{ item.value.plugin | default(item.key) }}.tagdrop]
{% for items in item.value.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.pass is defined and item.value.pass is iterable %}
[{{ item.value.plugin | default(item.key) }}.pass]
{% for items in item.value.pass %}
{{ items }}
{% if item.value.objects is defined and item.value.objects is iterable %}
{% for object in item.value.objects %}
[[inputs.{{ item.value.plugin | default(item.key) }}.object]]
ObjectName = {{ object.name | to_json }}
Instances = {{ object.instances | default(["*"]) | to_json }}
Counters = {{ object.counters | default(["*"]) | to_json }}
Measurement = {{ object.measurement | default("win_perf_counters") | to_json }}
IncludeTotal = {{ object.total | default(false) | string | lower }}
{% endfor %}
{% endif %}
{% if item.value.drop is defined and item.value.drop is iterable %}
[{{ item.value.plugin | default(item.key) }}.drop]
{% for items in item.value.drop %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.value.specifications is defined and item.value.specifications is iterable %}
[[{{item.value.plugin | default(item.key)}}.specifications]]
{% for items in item.value.specifications %}
{{ items }}
{% endfor %}
{% endif %}
{% endif %}

View File

@ -46,6 +46,18 @@
{% for items in item.config %}
{{ items }}
{% endfor %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[outputs.{{ item.type }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[outputs.{{ item.type }}.tagdrop]
{% for items in item.tagdrop %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
@ -71,45 +83,27 @@
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
[inputs.{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagdrop is defined and item.tagdrop is iterable %}
[{{ item.plugin }}.tagdrop]
[inputs.{{ 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.objects is defined and item.objects is iterable %}
{% for object in item.objects %}
[[inputs.{{ item.plugin }}.object]]
ObjectName = {{ object.name | to_json }}
Instances = {{ object.instances | default(["*"]) }}
Counters = {{ object.counters | default(["*"]) }}
Instances = {{ object.instances | default(["*"]) | to_json }}
Counters = {{ object.counters | default(["*"]) | to_json }}
Measurement = {{ object.measurement | default("win_perf_counters") | to_json }}
IncludeTotal = {{ object.total | default(false) | string | lower }}
{% 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 %}
@ -118,4 +112,19 @@
# No plugins configured, added a mem plugin so telegraf doesn't stop working.
[[inputs.mem]]
{% endif %}
{% endif %}
###############################################################################
# PROCESSORS #
###############################################################################
{% if telegraf_processors is defined and telegraf_processors is iterable %}
{% for item in telegraf_processors %}
[[processors.{{ item.processor }}]]
{% if item.config is defined and item.config is iterable %}
{% for items in item.config %}
{{ items }}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}