mirror of
https://github.com/dj-wasabi/ansible-telegraf.git
synced 2025-07-17 08:46:37 +00:00
Compare commits
94 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 | |||
55e366f3b2 | |||
925debe915 | |||
4c9d937b18 | |||
aed37346fb | |||
ad7ea9b04e | |||
1cffd3dbc0 | |||
1d03fa09ac | |||
160793b0e1 | |||
8e927ff480 | |||
8c61db9d28 | |||
73bcfaddf3 | |||
0c5d7c2de2 | |||
27033a85d2 | |||
aea77018a1 | |||
c9aac33197 | |||
23963f4292 | |||
aa78fc137e | |||
157f02f3f8 | |||
052142e642 | |||
8df7435e51 | |||
139943a832 | |||
126dbb8b22 | |||
85ee6f2c94 | |||
480ac75497 | |||
1cb38ca480 | |||
623759a56e | |||
54f305b80a | |||
c04c94b84a | |||
18f5dd81b9 | |||
09e3ee1505 | |||
386cab3328 | |||
4d9c8b4d4d | |||
7e940eb0af | |||
402d69494b | |||
79d0cdeb9f | |||
3cccb6ba50 | |||
2fc672f09c | |||
f8677ca119 | |||
f74ff634a7 | |||
1cd2798566 | |||
a49e82bf12 | |||
fa75297915 | |||
2a8184490c | |||
f74e649085 | |||
5317930b21 | |||
5b419ffa2d | |||
323e5f8831 | |||
db7b456f6d |
@ -5,6 +5,7 @@ services:
|
||||
- docker
|
||||
|
||||
install:
|
||||
- curl -sSlo requirements.txt https://raw.githubusercontent.com/dj-wasabi/ansible-ci-base/master/requirements.txt
|
||||
- pip install -r requirements.txt
|
||||
|
||||
script:
|
||||
|
31
CHANGELOG.md
31
CHANGELOG.md
@ -5,6 +5,37 @@ 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!))
|
||||
* Pin apt key ID #61 (By pull request: tszym (Thanks!))
|
||||
* Wen copying/removing plugins show only plugin name #62 (By pull request: mprasil (Thanks!))
|
||||
* Using base ci requirements.txt #64
|
||||
* telegraf-extra-plugin.conf.j2: fix template typo #65 (By pull request: gaelL (Thanks!))
|
||||
* Some small improvements #66
|
||||
* Want to use latest #67
|
||||
* Added Windows as OS #68
|
||||
* Added support for (Open)Suse #69
|
||||
* Added default pluging if nothing is configured #70
|
||||
* Replace 'ec2_facts' with 'ec2_metadata_facts' to fix a deprecation warning #72 (By pull request: Rylon (Thanks!))
|
||||
* A few enhancements and fixes to windows support #73 (By pull request: jdivy (Thanks!))
|
||||
* Renamed the tojson to to_json #74
|
||||
|
||||
0.10.0 (2018-08-12)
|
||||
|
||||
* Updating to telegraf 1.7.3
|
||||
|
193
README.md
193
README.md
@ -14,8 +14,31 @@ Design goals are to have a minimal memory footprint with a plugin system so that
|
||||
|
||||
## Requirements
|
||||
|
||||
### Supported systems
|
||||
This role supports the following systems:
|
||||
|
||||
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
|
||||
* Red Hat
|
||||
* Debian
|
||||
* Ubuntu
|
||||
* Docker container
|
||||
* Windows (Best effort)
|
||||
* (Open)Suse
|
||||
|
||||
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. 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
|
||||
@ -24,13 +47,32 @@ 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:
|
||||
### Ansible role specific variables
|
||||
|
||||
Specifying the version to be installed:
|
||||
|
||||
* `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_version`: The version of Telegraf to install. Default: `1.0.0`
|
||||
* `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
|
||||
@ -45,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:
|
||||
|
||||
@ -60,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:
|
||||
|
||||
@ -70,6 +124,67 @@ 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 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.
|
||||
* `telegraf_win_include`: The directory that will contain all plugin configuration.
|
||||
|
||||
## Extra information
|
||||
|
||||
There are two properties which are similar, but are used differently. Those are:
|
||||
|
||||
* `telegraf_plugins_default`
|
||||
@ -98,12 +213,11 @@ The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific t
|
||||
config:
|
||||
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
|
||||
|
||||
There is an option to delete extra-plugin files in /etc/telegraf/telegraf.d if they weren't generated by this playbook with `telegraf_plugins_extra_exclusive` variable.
|
||||
|
||||
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.
|
||||
@ -113,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
|
||||
|
||||
@ -133,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,7 +1,12 @@
|
||||
---
|
||||
# defaults file for ansible-telegraf
|
||||
|
||||
telegraf_agent_version: 1.7.3
|
||||
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
|
||||
telegraf_agent_debug: False
|
||||
@ -11,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
|
||||
@ -47,6 +60,21 @@ telegraf_plugins_default:
|
||||
|
||||
# extra configuration - /etc/telegraf/telegraf.d/*
|
||||
telegraf_plugins_extra: {}
|
||||
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'
|
||||
telegraf_win_service_args:
|
||||
- -service install
|
||||
- -config {{ telegraf_win_install_dir }}\telegraf\telegraf.conf
|
||||
- --config-directory {{ telegraf_win_include }}
|
||||
|
212
files/telegraf.init
Normal file
212
files/telegraf.init
Normal file
@ -0,0 +1,212 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# chkconfig: 2345 99 01
|
||||
# description: Telegraf daemon
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: telegraf
|
||||
# Required-Start: $all
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start telegraf at boot time
|
||||
### END INIT INFO
|
||||
|
||||
# this init script supports three different variations:
|
||||
# 1. New lsb that define start-stop-daemon
|
||||
# 2. Old lsb that don't have start-stop-daemon but define, log, pidofproc and killproc
|
||||
# 3. Centos installations without lsb-core installed
|
||||
#
|
||||
# In the third case we have to define our own functions which are very dumb
|
||||
# and expect the args to be positioned correctly.
|
||||
|
||||
# Command-line options that can be set in /etc/default/telegraf. These will override
|
||||
# any config file values.
|
||||
TELEGRAF_OPTS=
|
||||
|
||||
USER=telegraf
|
||||
GROUP=telegraf
|
||||
|
||||
if [ -r /lib/lsb/init-functions ]; then
|
||||
source /lib/lsb/init-functions
|
||||
fi
|
||||
|
||||
DEFAULT=/etc/default/telegraf
|
||||
|
||||
if [ -r $DEFAULT ]; then
|
||||
set -o allexport
|
||||
source $DEFAULT
|
||||
set +o allexport
|
||||
fi
|
||||
|
||||
if [ -z "$STDOUT" ]; then
|
||||
STDOUT=/dev/null
|
||||
fi
|
||||
if [ ! -f "$STDOUT" ]; then
|
||||
mkdir -p `dirname $STDOUT`
|
||||
fi
|
||||
|
||||
if [ -z "$STDERR" ]; then
|
||||
STDERR=/var/log/telegraf/telegraf.log
|
||||
fi
|
||||
if [ ! -f "$STDERR" ]; then
|
||||
mkdir -p `dirname $STDERR`
|
||||
fi
|
||||
|
||||
OPEN_FILE_LIMIT=65536
|
||||
|
||||
function pidofproc() {
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "Expected three arguments, e.g. $0 -p pidfile daemon-name"
|
||||
fi
|
||||
|
||||
if [ ! -f "$2" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pidfile=`cat $2`
|
||||
|
||||
if [ "x$pidfile" == "x" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ps --pid "$pidfile" | grep -q $(basename $3); then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
function killproc() {
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "Expected three arguments, e.g. $0 -p pidfile signal"
|
||||
fi
|
||||
|
||||
pid=`cat $2`
|
||||
|
||||
kill -s $3 $pid
|
||||
}
|
||||
|
||||
function log_failure_msg() {
|
||||
echo "$@" "[ FAILED ]"
|
||||
}
|
||||
|
||||
function log_success_msg() {
|
||||
echo "$@" "[ OK ]"
|
||||
}
|
||||
|
||||
# Process name ( For display )
|
||||
name=telegraf
|
||||
|
||||
# Daemon name, where is the actual executable
|
||||
daemon=/usr/bin/telegraf
|
||||
|
||||
# pid file for the daemon
|
||||
pidfile=/var/run/telegraf/telegraf.pid
|
||||
piddir=`dirname $pidfile`
|
||||
|
||||
if [ ! -d "$piddir" ]; then
|
||||
mkdir -p $piddir
|
||||
chown $USER:$GROUP $piddir
|
||||
fi
|
||||
|
||||
# Configuration file
|
||||
config=/etc/telegraf/telegraf.conf
|
||||
confdir=/etc/telegraf/telegraf.d
|
||||
|
||||
# If the daemon is not there, then exit.
|
||||
[ -x $daemon ] || exit 5
|
||||
|
||||
case $1 in
|
||||
start)
|
||||
# Checked the PID file exists and check the actual status of process
|
||||
if [ -e $pidfile ]; then
|
||||
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||
# If the status is SUCCESS then don't need to start again.
|
||||
if [ "x$status" = "x0" ]; then
|
||||
log_failure_msg "$name process is running"
|
||||
exit 0 # Exit
|
||||
fi
|
||||
fi
|
||||
|
||||
# Bump the file limits, before launching the daemon. These will carry over to
|
||||
# launched processes.
|
||||
ulimit -n $OPEN_FILE_LIMIT
|
||||
if [ $? -ne 0 ]; then
|
||||
log_failure_msg "set open file limit to $OPEN_FILE_LIMIT"
|
||||
fi
|
||||
|
||||
log_success_msg "Starting the process" "$name"
|
||||
if command -v startproc >/dev/null; then
|
||||
startproc -u "$USER" -g "$GROUP" -p "$pidfile" -q -- "$daemon" -pidfile "$pidfile" -config "$config" -config-directory "$confdir" $TELEGRAF_OPTS
|
||||
elif which start-stop-daemon > /dev/null 2>&1; then
|
||||
start-stop-daemon --chuid $USER:$GROUP --start --quiet --pidfile $pidfile --exec $daemon -- -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &
|
||||
else
|
||||
su -s /bin/sh -c "nohup $daemon -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &" $USER
|
||||
fi
|
||||
log_success_msg "$name process was started"
|
||||
;;
|
||||
|
||||
stop)
|
||||
# Stop the daemon.
|
||||
if [ -e $pidfile ]; then
|
||||
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||
if [ "$status" = 0 ]; then
|
||||
if killproc -p $pidfile SIGTERM && /bin/rm -rf $pidfile; then
|
||||
log_success_msg "$name process was stopped"
|
||||
else
|
||||
log_failure_msg "$name failed to stop service"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log_failure_msg "$name process is not running"
|
||||
fi
|
||||
;;
|
||||
|
||||
reload)
|
||||
# Reload the daemon.
|
||||
if [ -e $pidfile ]; then
|
||||
pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status="0" || status="$?"
|
||||
if [ "$status" = 0 ]; then
|
||||
if killproc -p $pidfile SIGHUP; then
|
||||
log_success_msg "$name process was reloaded"
|
||||
else
|
||||
log_failure_msg "$name failed to reload service"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
log_failure_msg "$name process is not running"
|
||||
fi
|
||||
;;
|
||||
|
||||
restart)
|
||||
# Restart the daemon.
|
||||
$0 stop && sleep 2 && $0 start
|
||||
;;
|
||||
|
||||
status)
|
||||
# Check the status of the process.
|
||||
if [ -e $pidfile ]; then
|
||||
if pidofproc -p $pidfile $daemon > /dev/null; then
|
||||
log_success_msg "$name Process is running"
|
||||
exit 0
|
||||
else
|
||||
log_failure_msg "$name Process is not running"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
log_failure_msg "$name Process is not running"
|
||||
exit 3
|
||||
fi
|
||||
;;
|
||||
|
||||
version)
|
||||
$daemon version
|
||||
;;
|
||||
|
||||
*)
|
||||
# For invalid arguments, print the usage message.
|
||||
echo "Usage: $0 {start|stop|restart|status|version}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
@ -6,4 +6,17 @@
|
||||
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
|
||||
start_mode: auto
|
||||
state: restarted
|
||||
|
@ -2,8 +2,8 @@
|
||||
galaxy_info:
|
||||
author: Werner Dijkerman
|
||||
description: Installing and configuring Telegraf
|
||||
company:
|
||||
license: license BSD
|
||||
company: myCompany.Dotcom
|
||||
license: MIT
|
||||
min_ansible_version: 2.4
|
||||
platforms:
|
||||
- name: EL
|
||||
@ -15,6 +15,14 @@ galaxy_info:
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
categories:
|
||||
- name: opensuse
|
||||
versions:
|
||||
- all
|
||||
- name: Windows
|
||||
versions:
|
||||
- all
|
||||
|
||||
galaxy_tags:
|
||||
- monitoring
|
||||
|
||||
dependencies: []
|
||||
|
@ -1,7 +1,14 @@
|
||||
FROM {{ item.image }}
|
||||
# Molecule managed
|
||||
|
||||
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
|
||||
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf bash && dnf clean all; \
|
||||
elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
|
||||
elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \
|
||||
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; fi
|
||||
{% if item.registry is defined %}
|
||||
FROM {{ item.registry.url }}/{{ item.image }}
|
||||
{% else %}
|
||||
FROM {{ item.image }}
|
||||
{% endif %}
|
||||
|
||||
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
|
||||
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python sudo python-devel python2-dnf bash && dnf clean all; \
|
||||
elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
|
||||
elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml && zypper clean -a; \
|
||||
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; \
|
||||
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates && xbps-remove -O; fi
|
||||
|
@ -2,14 +2,22 @@
|
||||
- name: Create
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: False
|
||||
gather_facts: false
|
||||
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||
vars:
|
||||
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
|
||||
molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}"
|
||||
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
||||
tasks:
|
||||
- name: Log into a Docker registry
|
||||
docker_login:
|
||||
username: "{{ item.registry.credentials.username }}"
|
||||
password: "{{ item.registry.credentials.password }}"
|
||||
email: "{{ item.registry.credentials.email | default(omit) }}"
|
||||
registry: "{{ item.registry.url }}"
|
||||
docker_host: "{{ item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
with_items: "{{ molecule_yml.platforms }}"
|
||||
when:
|
||||
- item.registry is defined
|
||||
- item.registry.credentials is defined
|
||||
- item.registry.credentials.username is defined
|
||||
|
||||
- name: Create Dockerfiles from image names
|
||||
template:
|
||||
src: "{{ molecule_scenario_directory }}/Dockerfile.j2"
|
||||
@ -20,6 +28,7 @@
|
||||
- name: Discover local Docker images
|
||||
docker_image_facts:
|
||||
name: "molecule_local/{{ item.item.name }}"
|
||||
docker_host: "{{ item.item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
with_items: "{{ platforms.results }}"
|
||||
register: docker_images
|
||||
|
||||
@ -27,21 +36,49 @@
|
||||
docker_image:
|
||||
path: "{{ molecule_ephemeral_directory }}"
|
||||
name: "molecule_local/{{ item.item.image }}"
|
||||
docker_host: "{{ item.item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
|
||||
force: "{{ item.item.force | default(True) }}"
|
||||
force: "{{ item.item.force | default(true) }}"
|
||||
pull: "{{ item.item.pull | default(omit) }}"
|
||||
with_items: "{{ platforms.results }}"
|
||||
when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0
|
||||
|
||||
- name: Create docker network(s)
|
||||
docker_network:
|
||||
name: "{{ item }}"
|
||||
docker_host: "{{ item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
state: present
|
||||
with_items: "{{ molecule_yml.platforms | molecule_get_docker_networks }}"
|
||||
|
||||
- name: Create molecule instance(s)
|
||||
docker_container:
|
||||
name: "{{ item.name }}"
|
||||
hostname: "{{ item.name }}"
|
||||
docker_host: "{{ item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
hostname: "{{ item.hostname | default(item.name) }}"
|
||||
image: "molecule_local/{{ item.image }}"
|
||||
state: started
|
||||
recreate: False
|
||||
log_driver: none
|
||||
command: "{{ item.command | default('sleep infinity') }}"
|
||||
recreate: false
|
||||
log_driver: json-file
|
||||
command: "{{ item.command | default('bash -c \"while true; do sleep 10000; done\"') }}"
|
||||
privileged: "{{ item.privileged | default(omit) }}"
|
||||
security_opts: "{{ item.security_opts | default(omit) }}"
|
||||
volumes: "{{ item.volumes | default(omit) }}"
|
||||
tmpfs: "{{ item.tmpfs | default(omit) }}"
|
||||
capabilities: "{{ item.capabilities | default(omit) }}"
|
||||
exposed_ports: "{{ item.exposed_ports | default(omit) }}"
|
||||
published_ports: "{{ item.published_ports | default(omit) }}"
|
||||
ulimits: "{{ item.ulimits | default(omit) }}"
|
||||
networks: "{{ item.networks | default(omit) }}"
|
||||
dns_servers: "{{ item.dns_servers | default(omit) }}"
|
||||
register: server
|
||||
with_items: "{{ molecule_yml.platforms }}"
|
||||
async: 7200
|
||||
poll: 0
|
||||
|
||||
- name: Wait for instance(s) creation to complete
|
||||
async_status:
|
||||
jid: "{{ item.ansible_job_id }}"
|
||||
register: docker_jobs
|
||||
until: docker_jobs.finished
|
||||
retries: 300
|
||||
with_items: "{{ server.results }}"
|
||||
|
@ -2,15 +2,31 @@
|
||||
- name: Destroy
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: False
|
||||
gather_facts: false
|
||||
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||
vars:
|
||||
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
||||
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
||||
tasks:
|
||||
- name: Destroy molecule instance(s)
|
||||
docker_container:
|
||||
name: "{{ item.name }}"
|
||||
docker_host: "{{ item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
state: absent
|
||||
force_kill: "{{ item.force_kill | default(True) }}"
|
||||
force_kill: "{{ item.force_kill | default(true) }}"
|
||||
register: server
|
||||
with_items: "{{ molecule_yml.platforms }}"
|
||||
async: 7200
|
||||
poll: 0
|
||||
|
||||
- name: Wait for instance(s) deletion to complete
|
||||
async_status:
|
||||
jid: "{{ item.ansible_job_id }}"
|
||||
register: docker_jobs
|
||||
until: docker_jobs.finished
|
||||
retries: 300
|
||||
with_items: "{{ server.results }}"
|
||||
|
||||
- name: Delete docker network(s)
|
||||
docker_network:
|
||||
name: "{{ item }}"
|
||||
docker_host: "{{ item.docker_host | default(lookup('env', 'DOCKER_HOST') or 'unix://var/run/docker.sock') }}"
|
||||
state: absent
|
||||
with_items: "{{ molecule_yml.platforms | molecule_get_docker_networks }}"
|
||||
|
@ -9,22 +9,76 @@ lint:
|
||||
config-file: molecule/default/yaml-lint.yml
|
||||
|
||||
platforms:
|
||||
- name: influxdb
|
||||
image: influxdb:1.7-alpine
|
||||
command: influxd
|
||||
groups:
|
||||
- tsdb
|
||||
networks:
|
||||
- name: telegraf
|
||||
environment:
|
||||
INFLUXDB_DB: telegraf
|
||||
- name: telegraf-centos
|
||||
image: milcom/centos7-systemd
|
||||
privileged: True
|
||||
groups:
|
||||
- telegraf
|
||||
networks:
|
||||
- name: telegraf
|
||||
- name: telegraf-debian
|
||||
image: minimum2scp/systemd-stretch
|
||||
privileged: True
|
||||
command: /sbin/init
|
||||
groups:
|
||||
- telegraf
|
||||
networks:
|
||||
- name: telegraf
|
||||
- name: telegraf-ubuntu
|
||||
image: solita/ubuntu-systemd:bionic
|
||||
privileged: True
|
||||
command: /sbin/init
|
||||
groups:
|
||||
- telegraf
|
||||
networks:
|
||||
- name: telegraf
|
||||
- name: telegraf-opensuse
|
||||
image: wdijkerman/molecule-systemd-leap
|
||||
privileged: True
|
||||
command: /sbin/init
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
groups:
|
||||
- telegraf
|
||||
networks:
|
||||
- name: telegraf
|
||||
|
||||
provisioner:
|
||||
name: ansible
|
||||
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:
|
||||
- urls = ["http://influxdb:8086"]
|
||||
- database = "telegraf"
|
||||
- precision = "s"
|
||||
telegraf_plugins_extra:
|
||||
percpu-usage:
|
||||
plugin: cpu
|
||||
config:
|
||||
- percpu = true
|
||||
- totalcpu = false
|
||||
- name_override = "percpu_usage"
|
||||
- fielddrop = ["cpu_time*"]
|
||||
|
||||
scenario:
|
||||
name: default
|
||||
verifier:
|
||||
|
@ -1,22 +1,4 @@
|
||||
---
|
||||
- hosts: all
|
||||
pre_tasks:
|
||||
- name: "Installing which on CentOS"
|
||||
yum:
|
||||
name: which
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'RedHat'
|
||||
|
||||
- name: "Installing wget on Debian"
|
||||
apt:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'Debian'
|
||||
with_items:
|
||||
- wget
|
||||
- gpg
|
||||
|
||||
- hosts: telegraf
|
||||
roles:
|
||||
- role: ansible-telegraf
|
||||
|
29
molecule/default/prepare.yml
Normal file
29
molecule/default/prepare.yml
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
|
||||
- hosts: telegraf
|
||||
tasks:
|
||||
- name: "Installing packages on CentOS"
|
||||
yum:
|
||||
name: which
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'RedHat'
|
||||
|
||||
- name: "Installing packages on Debian"
|
||||
apt:
|
||||
name:
|
||||
- wget
|
||||
- gpg
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'Debian'
|
||||
|
||||
- name: "Installing packages on Suse"
|
||||
zypper:
|
||||
name:
|
||||
- sysvinit-tools
|
||||
- insserv-compat
|
||||
- aaa_base
|
||||
state: present
|
||||
when:
|
||||
- ansible_os_family == 'Suse'
|
@ -3,13 +3,13 @@ import os
|
||||
import testinfra.utils.ansible_runner
|
||||
|
||||
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
||||
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('telegraf')
|
||||
|
||||
|
||||
def test_telegraf_running_and_enabled(Service, SystemInfo):
|
||||
telegraf = Service("telegraf")
|
||||
assert telegraf.is_enabled
|
||||
if SystemInfo.distribution == 'centos':
|
||||
if SystemInfo.distribution not in ['opensuse-leap']:
|
||||
assert telegraf.is_enabled
|
||||
assert telegraf.is_running
|
||||
|
||||
|
||||
@ -18,9 +18,31 @@ def test_telegraf_dot_conf(File):
|
||||
assert telegraf.user == "telegraf"
|
||||
assert telegraf.group == "telegraf"
|
||||
assert telegraf.mode == 0o640
|
||||
assert telegraf.contains('interval = "10s"')
|
||||
assert telegraf.contains('[[inputs.cpu]]')
|
||||
assert telegraf.contains('percpu = true')
|
||||
assert telegraf.contains('[[outputs.influxdb]]')
|
||||
assert telegraf.contains('["http://influxdb:8086"]')
|
||||
assert telegraf.contains('[[inputs.net]]')
|
||||
|
||||
|
||||
def test_telegraf_package(Package, SystemInfo):
|
||||
def test_telegraf_dot_d_dir(File):
|
||||
telegraf = File("/etc/telegraf/telegraf.d")
|
||||
assert telegraf.user == "root"
|
||||
assert telegraf.group == "root"
|
||||
assert telegraf.mode == 0o755
|
||||
assert telegraf.is_directory
|
||||
|
||||
|
||||
def test_telegraf_dot_d(File):
|
||||
telegraf = File("/etc/telegraf/telegraf.d/percpu-usage.conf")
|
||||
assert telegraf.user == "telegraf"
|
||||
assert telegraf.group == "telegraf"
|
||||
assert telegraf.mode == 0o640
|
||||
assert telegraf.contains('[[inputs.cpu]]')
|
||||
assert telegraf.contains('totalcpu = false')
|
||||
|
||||
|
||||
def test_telegraf_package(Package):
|
||||
telegraf = Package('telegraf')
|
||||
assert telegraf.is_installed
|
||||
|
@ -4,6 +4,6 @@ extends: default
|
||||
|
||||
rules:
|
||||
line-length:
|
||||
max: 140
|
||||
max: 180
|
||||
level: warning
|
||||
truthy: disable
|
||||
|
@ -1,4 +0,0 @@
|
||||
ansible==2.4.4.0
|
||||
docker==3.3.0
|
||||
molecule==2.13.1
|
||||
testinfra==1.12.0
|
@ -1,42 +1,93 @@
|
||||
---
|
||||
|
||||
- name: Ensure the system can use the HTTPS transport for APT.
|
||||
- name: "Debian | Set name if state == latest"
|
||||
set_fact:
|
||||
telegraf_agent_package: telegraf={{ telegraf_agent_version }}-{{ telegraf_agent_version_patch }}
|
||||
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
|
||||
register: apt_https_transport
|
||||
|
||||
- name: Install APT HTTPS transport.
|
||||
- name: "Debian | Install APT HTTPS transport"
|
||||
apt:
|
||||
name: "apt-transport-https"
|
||||
state: present
|
||||
when: not apt_https_transport.stat.exists
|
||||
register: are_telegraf_dependencies_packages_installed
|
||||
until: are_telegraf_dependencies_packages_installed is succeeded
|
||||
when:
|
||||
- not apt_https_transport.stat.exists
|
||||
become: yes
|
||||
|
||||
- name: Download Telegraf apt key.
|
||||
- name: "Debian | Download Telegraf apt key"
|
||||
apt_key:
|
||||
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: Add Telegraf repository (using LSB).
|
||||
- name: "Debian | Add Telegraf repository (using LSB)"
|
||||
apt_repository:
|
||||
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
|
||||
filename: "telegraf"
|
||||
state: present
|
||||
become: yes
|
||||
when: ansible_lsb is defined and ansible_lsb.codename is defined
|
||||
when:
|
||||
- telegraf_agent_package_method == "repo"
|
||||
- ansible_lsb is defined
|
||||
- ansible_lsb.codename is defined
|
||||
|
||||
- name: Add Telegraf repository.
|
||||
- name: "Debian | Add Telegraf repository"
|
||||
apt_repository:
|
||||
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
|
||||
filename: "telegraf"
|
||||
state: present
|
||||
become: yes
|
||||
when: ansible_lsb is not defined or ansible_lsb.codename is not defined
|
||||
when:
|
||||
- telegraf_agent_package_method == "repo"
|
||||
- ansible_lsb is not defined or ansible_lsb.codename is not defined
|
||||
|
||||
- name: "Install telegraf package | Debian"
|
||||
- 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"
|
||||
state: present
|
||||
name: "{{ telegraf_agent_package }}"
|
||||
state: "{{ telegraf_agent_package_state }}"
|
||||
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"
|
||||
|
@ -1,16 +1,38 @@
|
||||
---
|
||||
# description: RedHat specific installation
|
||||
|
||||
- name: "Add yum repository | RedHat"
|
||||
- name: "RedHat | Set name if state == latest"
|
||||
set_fact:
|
||||
telegraf_agent_package: telegraf-{{ telegraf_agent_version }}
|
||||
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: "Install telegraf package | RedHat"
|
||||
yum:
|
||||
name: "telegraf-{{ telegraf_agent_version }}"
|
||||
state: installed
|
||||
- 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"
|
||||
|
56
tasks/Suse.yml
Normal file
56
tasks/Suse.yml
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
|
||||
- name: "Suse | Adding Telegraf group"
|
||||
group:
|
||||
name: telegraf
|
||||
state: present
|
||||
|
||||
- name: "Suse | Adding Telegraf user"
|
||||
user:
|
||||
name: telegraf
|
||||
group: telegraf
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: "Suse | Install repo dependencies"
|
||||
zypper:
|
||||
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"
|
||||
zypper_repository:
|
||||
repo: "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/"
|
||||
name: The Go Programming Language (openSUSE_Factory)
|
||||
state: present
|
||||
runrefresh: True
|
||||
auto_import_keys: True
|
||||
become: yes
|
||||
|
||||
- name: "Suse | Install Telegraf"
|
||||
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"
|
||||
file:
|
||||
path: "{{ item.path }}"
|
||||
owner: "{{ item.owner }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- path: /etc/telegraf/telegraf.d/
|
||||
owner: root
|
||||
- path: /var/log/telegraf
|
||||
owner: telegraf
|
||||
|
||||
- name: "Suse | Install init file"
|
||||
copy:
|
||||
src: telegraf.init
|
||||
dest: /etc/init.d/telegraf
|
||||
mode: 0755
|
@ -1,60 +0,0 @@
|
||||
---
|
||||
# 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 is 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 is 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.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 and item.value.state|default('present') != 'absent'"
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
- name: "Remove telegraf extra plugins"
|
||||
file:
|
||||
path: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
|
||||
state: absent
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable and item.value.state|default('present') == 'absent'"
|
||||
become: yes
|
||||
notify: "Restart Telegraf"
|
||||
|
||||
- name: "Force restart service after reread config"
|
||||
meta: flush_handlers
|
124
tasks/configure_linux.yml
Normal file
124
tasks/configure_linux.yml
Normal file
@ -0,0 +1,124 @@
|
||||
---
|
||||
# description: Configure telegraf and get all relevent ec2 information
|
||||
|
||||
- name: Retrieve ec2 facts
|
||||
ec2_metadata_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 is version_compare('0.10.0', '<')
|
||||
notify:
|
||||
- Restart Telegraf
|
||||
- Restart Telegraf container
|
||||
|
||||
- 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 is version_compare('0.10.0', '>=')
|
||||
notify:
|
||||
- Restart Telegraf
|
||||
- Restart Telegraf container
|
||||
|
||||
- name: "Check if extra plugins directory exists in case of exclusive"
|
||||
stat:
|
||||
path: /etc/telegraf/telegraf.d
|
||||
register: telegraf_directory
|
||||
when:
|
||||
- telegraf_plugins_extra_exclusive
|
||||
|
||||
- name: "Delete telegraf extra plugin path"
|
||||
file:
|
||||
state: absent
|
||||
path: "/etc/telegraf/telegraf.d/"
|
||||
when:
|
||||
- telegraf_plugins_extra_exclusive
|
||||
- telegraf_directory.stat.exists
|
||||
become: yes
|
||||
notify:
|
||||
- Restart Telegraf
|
||||
- Restart Telegraf container
|
||||
|
||||
- name: "Create telegraf extra plugin path"
|
||||
file:
|
||||
state: directory
|
||||
path: "/etc/telegraf/telegraf.d/"
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0755
|
||||
when:
|
||||
- telegraf_plugins_extra_exclusive
|
||||
- telegraf_directory.stat.exists
|
||||
become: yes
|
||||
notify:
|
||||
- Restart Telegraf
|
||||
- Restart Telegraf container
|
||||
|
||||
- name: "Copy telegraf extra plugins"
|
||||
template:
|
||||
src: "telegraf-extra-plugin.conf.j2"
|
||||
dest: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
|
||||
owner: telegraf
|
||||
group: telegraf
|
||||
mode: 0640
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
loop_control:
|
||||
label: "{{ item.key }}"
|
||||
when:
|
||||
- telegraf_plugins_extra is defined
|
||||
- telegraf_plugins_extra is iterable
|
||||
- item.value.state|default('present') != 'absent'
|
||||
become: yes
|
||||
notify:
|
||||
- Restart Telegraf
|
||||
- Restart Telegraf container
|
||||
|
||||
- name: "Remove telegraf extra plugins"
|
||||
file:
|
||||
path: "/etc/telegraf/telegraf.d/{{ item.key }}.conf"
|
||||
state: absent
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
loop_control:
|
||||
label: "{{ item.key }}"
|
||||
when:
|
||||
- telegraf_plugins_extra is defined
|
||||
- telegraf_plugins_extra is iterable
|
||||
- item.value.state|default('present') == 'absent'
|
||||
become: yes
|
||||
notify:
|
||||
- Restart Telegraf
|
||||
- Restart Telegraf container
|
||||
|
||||
- name: "Force restart service after reread config"
|
||||
meta: flush_handlers
|
||||
|
||||
- name: "Start Telegraf (If it wasn't running)"
|
||||
service:
|
||||
name: telegraf
|
||||
state: started
|
||||
enabled: yes
|
||||
become: yes
|
||||
when: not telegraf_agent_docker
|
78
tasks/configure_windows.yml
Normal file
78
tasks/configure_windows.yml
Normal file
@ -0,0 +1,78 @@
|
||||
---
|
||||
|
||||
- name: "Windows | Create directory structure"
|
||||
win_file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ telegraf_win_install_dir }}"
|
||||
- "{{ telegraf_win_include }}"
|
||||
|
||||
- name: "Windows | Check if file is already downloaded"
|
||||
win_stat:
|
||||
path: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
|
||||
register: file_info
|
||||
|
||||
- name: "Windows | Download Telegraf Agent Zip file"
|
||||
win_get_url:
|
||||
url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}_windows_amd64.zip
|
||||
dest: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
|
||||
when:
|
||||
- not file_info.stat.exists
|
||||
|
||||
- name: "Windows | Unzip file"
|
||||
win_unzip:
|
||||
src: '{{ telegraf_win_install_dir }}\telegraf-{{ telegraf_agent_version }}_windows_amd64.zip'
|
||||
dest: "{{ telegraf_win_install_dir }}"
|
||||
creates: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe'
|
||||
|
||||
- name: "Windows | Configure Telegraf"
|
||||
win_template:
|
||||
src: telegraf.conf.j2
|
||||
dest: '{{ telegraf_win_install_dir }}\telegraf\telegraf.conf'
|
||||
notify: "Restart Windows Telegraf"
|
||||
|
||||
- name: "Windows | Copy telegraf extra plugins"
|
||||
win_template:
|
||||
src: "telegraf-extra-plugin.conf.j2"
|
||||
dest: '{{ telegraf_win_include }}\{{ item.key }}.conf'
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
loop_control:
|
||||
label: "{{ item.key }}"
|
||||
when:
|
||||
- telegraf_plugins_extra is defined
|
||||
- telegraf_plugins_extra is iterable
|
||||
- item.value.state|default('present') != 'absent'
|
||||
notify: "Restart Windows Telegraf"
|
||||
|
||||
- name: "Windows | Remove telegraf extra plugins"
|
||||
win_file:
|
||||
path: '{{ telegraf_win_include }}\{{ item.key }}.conf'
|
||||
state: absent
|
||||
with_dict: "{{ telegraf_plugins_extra }}"
|
||||
loop_control:
|
||||
label: "{{ item.key }}"
|
||||
when:
|
||||
- telegraf_plugins_extra is defined
|
||||
- telegraf_plugins_extra is iterable
|
||||
- item.value.state|default('present') == 'absent'
|
||||
notify: "Restart Windows Telegraf"
|
||||
|
||||
- name: "Windows | Register Service"
|
||||
win_command: '{{ telegraf_win_install_dir }}\telegraf\telegraf.exe {{ telegraf_win_service_args | join(" ") }}'
|
||||
register: telegraf_windows_install
|
||||
args:
|
||||
creates: '{{ telegraf_win_install_dir }}\.installed'
|
||||
|
||||
- name: "Windows | Create done file so it won't register itself again"
|
||||
win_file:
|
||||
path: '{{ telegraf_win_install_dir }}\.installed'
|
||||
state: touch
|
||||
when:
|
||||
- telegraf_windows_install is changed
|
||||
|
||||
- name: "Windows | Set service startup mode to auto and ensure it is started"
|
||||
win_service:
|
||||
name: Telegraf
|
||||
start_mode: auto
|
||||
state: started
|
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
|
@ -1,16 +1,32 @@
|
||||
---
|
||||
# tasks file for ansible-telegraf
|
||||
|
||||
- name: "Install the correct repository"
|
||||
- name: "Install on RedHat"
|
||||
include_tasks: "RedHat.yml"
|
||||
when: ansible_os_family == "RedHat"
|
||||
when:
|
||||
- ansible_os_family == "RedHat" and not telegraf_agent_docker
|
||||
|
||||
- name: "Install the correct repository"
|
||||
- name: "Install on Debian"
|
||||
include_tasks: "Debian.yml"
|
||||
when: ansible_os_family == "Debian"
|
||||
when:
|
||||
- ansible_os_family == "Debian" and not telegraf_agent_docker
|
||||
tags:
|
||||
- telegraf
|
||||
- packages
|
||||
|
||||
- name: "Configure telegraf"
|
||||
include_tasks: "configure.yml"
|
||||
- name: "Install on Suse"
|
||||
include_tasks: "Suse.yml"
|
||||
when: ansible_os_family == "Suse" and not telegraf_agent_docker
|
||||
|
||||
- include_tasks: "docker.yml"
|
||||
when: telegraf_agent_docker
|
||||
|
||||
- name: "Configure Telegraf"
|
||||
include_tasks: "configure_linux.yml"
|
||||
when:
|
||||
- ansible_os_family != "Windows"
|
||||
|
||||
- name: "Install / Configure telegraf on Windows"
|
||||
include_tasks: "configure_windows.yml"
|
||||
when:
|
||||
- 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 %}
|
@ -28,7 +28,11 @@
|
||||
quiet = {{ telegraf_agent_quiet | lower }}
|
||||
{% endif %}
|
||||
{% if telegraf_agent_version is version_compare('1.1', '>=') %}
|
||||
{% if ansible_os_family == "Windows" %}
|
||||
logfile = "{{ telegraf_win_logfile }}"
|
||||
{% else %}
|
||||
logfile = "{{ telegraf_agent_logfile }}"
|
||||
{% endif %}
|
||||
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
|
||||
{% endif %}
|
||||
|
||||
@ -42,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 %}
|
||||
|
||||
@ -67,34 +83,48 @@
|
||||
{% 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 }}
|
||||
{% 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(["*"]) | 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.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 %}
|
||||
|
||||
{% if telegraf_plugins_default is defined and telegraf_plugins_default|length == 0 %}
|
||||
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra.keys() | length == 0 %}
|
||||
# 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 %}
|
||||
{% endif %}
|
Reference in New Issue
Block a user