mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
46 Commits
Author | SHA1 | Date | |
---|---|---|---|
567539a637 | |||
69526620d9 | |||
618b8fa540 | |||
f59d45a167 | |||
857a7a7938 | |||
dd28f645a9 | |||
0aba53bb17 | |||
8a8d826de4 | |||
499f217ed3 | |||
6f8bf1162c | |||
9d24186e01 | |||
8b0cfeac4d | |||
b88d46ad1a | |||
2003635e73 | |||
50c4043389 | |||
2086b24b79 | |||
cf84634ce4 | |||
eaa7210976 | |||
87c014da34 | |||
bf008bec0c | |||
0b285f7772 | |||
2c444d97a8 | |||
5785e4a690 | |||
1d57bf2af8 | |||
9f98ae6a76 | |||
35cd29007a | |||
8cdce07205 | |||
f826414f5f | |||
f6be7d6a4c | |||
5764b4bc90 | |||
07a6cb0135 | |||
140597e41d | |||
d744a12f6f | |||
0cb6770905 | |||
1ccb184813 | |||
88ba1e218f | |||
5b31515d1b | |||
38933cfc30 | |||
454ee8be7b | |||
d49c278506 | |||
e3c553e729 | |||
c5e6883c1b | |||
a4d3eb237c | |||
ced8fd8ad5 | |||
5f5d393a3f | |||
086dfab7d3 |
15
CHANGELOG.md
15
CHANGELOG.md
@ -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
175
README.md
@ -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!
|
||||
|
||||
|
@ -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'
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -4,6 +4,6 @@ extends: default
|
||||
|
||||
rules:
|
||||
line-length:
|
||||
max: 140
|
||||
max: 180
|
||||
level: warning
|
||||
truthy: disable
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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
59
tasks/docker.yml
Normal 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
|
@ -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
|
||||
|
@ -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 %}
|
@ -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 %}
|
@ -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 %}
|
Reference in New Issue
Block a user