Bootstrap telegraf role
This commit is contained in:
commit
c7da2cb3a0
13 changed files with 7205 additions and 0 deletions
13
LICENCE
Normal file
13
LICENCE
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2019 Wilfried OLLIVIER <wollivier@fdn.fr>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
43
README.md
Normal file
43
README.md
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
galaxy-telegraf
|
||||||
|
===============
|
||||||
|
|
||||||
|
Install Telegraf on Debian
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
An InfluxDB service up and running
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
- db_name: influx db name
|
||||||
|
- db_user: influx db username
|
||||||
|
- db_pass: influx db password
|
||||||
|
|
||||||
|
- influx_host: influx host
|
||||||
|
- influx_port: influx db port
|
||||||
|
- influx_host: influx db host
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Example Playbook
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
||||||
|
|
||||||
|
- hosts: servers
|
||||||
|
roles:
|
||||||
|
- role: galaxy-telegraf
|
||||||
|
|
||||||
|
Run tests
|
||||||
|
---------
|
||||||
|
|
||||||
|
Needs galaxy-vagrant to run tests
|
||||||
|
|
||||||
|
Ensure galaxy-vagrant is up
|
||||||
|
|
||||||
|
ansible-playbook -i tests/inventory tests/test.yml
|
9
defaults/main.yml
Normal file
9
defaults/main.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
db_name: telegraf
|
||||||
|
db_user: telegraf
|
||||||
|
db_pass: not24get
|
||||||
|
|
||||||
|
influx_host: localhost
|
||||||
|
influx_proto: http
|
||||||
|
influx_port: 8086
|
6
handlers/main.yml
Normal file
6
handlers/main.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: reload telegraf
|
||||||
|
systemd:
|
||||||
|
name: telegraf
|
||||||
|
state: restarted
|
21
meta/main.yml
Normal file
21
meta/main.yml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
galaxy_info:
|
||||||
|
author: Wilfried OLLIVIER
|
||||||
|
description: Galaxy role to install telegraf with basic config on Debian
|
||||||
|
company: none
|
||||||
|
|
||||||
|
license: WTFPL
|
||||||
|
|
||||||
|
min_ansible_version: 2.4
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- Stretch
|
||||||
|
- Buster
|
||||||
|
|
||||||
|
galaxy_tags:
|
||||||
|
- telegraf
|
||||||
|
- debian
|
||||||
|
- timeseries
|
||||||
|
|
||||||
|
dependencies: []
|
61
tasks/main.yml
Normal file
61
tasks/main.yml
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
# https://docs.influxdata.com/telegraf/v1.11/introduction/installation/
|
||||||
|
|
||||||
|
- name: Ensure apt-transport-https
|
||||||
|
apt:
|
||||||
|
name: apt-transport-https
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Ensure python dependencies
|
||||||
|
apt:
|
||||||
|
name: [ 'python-requests', 'python-pip' ]
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Ensure Influx Data signing key
|
||||||
|
apt_key:
|
||||||
|
url: "{{ influx.repo }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Ensure Influx Data repo
|
||||||
|
apt_repository:
|
||||||
|
repo: deb https://repos.influxdata.com/debian {{ ansible_distribution_release }} stable
|
||||||
|
state: present
|
||||||
|
filename: influxdata
|
||||||
|
|
||||||
|
- name: Ensure Telegraf pkg
|
||||||
|
apt:
|
||||||
|
name: telegraf
|
||||||
|
update_cache: yes
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Push Telegraf config
|
||||||
|
template:
|
||||||
|
src: telegraf.conf.j2
|
||||||
|
dest: /etc/telegraf/telegraf.conf
|
||||||
|
notify: reload telegraf
|
||||||
|
|
||||||
|
- name: Push Telegraf base input config
|
||||||
|
template:
|
||||||
|
src: inputs/input.base.conf.j2
|
||||||
|
dest: /etc/telegraf/telegraf.d/input.base.conf
|
||||||
|
notify: reload telegraf
|
||||||
|
|
||||||
|
- name: Is Docker running ?
|
||||||
|
service_facts:
|
||||||
|
|
||||||
|
- name: Push Telegraf docker input config if needed
|
||||||
|
template:
|
||||||
|
src: inputs/input.docker.conf.j2
|
||||||
|
dest: /etc/telegraf/telegraf.d/input.docker.conf
|
||||||
|
notify: reload telegraf
|
||||||
|
when: "'docker' in services"
|
||||||
|
|
||||||
|
- name: Ensure Telegraf can access Docker socket
|
||||||
|
user: name=telegraf
|
||||||
|
group=telegraf
|
||||||
|
groups=docker
|
||||||
|
append=yes
|
||||||
|
when: "'docker' in services"
|
||||||
|
|
80
templates/inputs/input.base.conf.j2
Normal file
80
templates/inputs/input.base.conf.j2
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
###############################################################################
|
||||||
|
# INPUT PLUGINS #
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about cpu usage
|
||||||
|
[[inputs.cpu]]
|
||||||
|
## Whether to report per-cpu stats or not
|
||||||
|
percpu = true
|
||||||
|
## Whether to report total system cpu stats or not
|
||||||
|
totalcpu = true
|
||||||
|
## If true, collect raw CPU time metrics.
|
||||||
|
collect_cpu_time = false
|
||||||
|
## If true, compute and report the sum of all non-idle CPU states.
|
||||||
|
report_active = false
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about disk usage by mount point
|
||||||
|
[[inputs.disk]]
|
||||||
|
## By default stats will be gathered for all mount points.
|
||||||
|
## Set mount_points will restrict the stats to only the specified mount points.
|
||||||
|
# mount_points = ["/"]
|
||||||
|
|
||||||
|
## Ignore mount points by filesystem type.
|
||||||
|
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about disk IO by device
|
||||||
|
[[inputs.diskio]]
|
||||||
|
## By default, telegraf will gather stats for all devices including
|
||||||
|
## disk partitions.
|
||||||
|
## Setting devices will restrict the stats to the specified devices.
|
||||||
|
# devices = ["sda", "sdb", "vd*"]
|
||||||
|
## Uncomment the following line if you need disk serial numbers.
|
||||||
|
# skip_serial_number = false
|
||||||
|
#
|
||||||
|
## On systems which support it, device metadata can be added in the form of
|
||||||
|
## tags.
|
||||||
|
## Currently only Linux is supported via udev properties. You can view
|
||||||
|
## available properties for a device by running:
|
||||||
|
## 'udevadm info -q property -n /dev/sda'
|
||||||
|
## Note: Most, but not all, udev properties can be accessed this way. Properties
|
||||||
|
## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
|
||||||
|
# device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]
|
||||||
|
#
|
||||||
|
## Using the same metadata source as device_tags, you can also customize the
|
||||||
|
## name of the device via templates.
|
||||||
|
## The 'name_templates' parameter is a list of templates to try and apply to
|
||||||
|
## the device. The template may contain variables in the form of '$PROPERTY' or
|
||||||
|
## '${PROPERTY}'. The first template which does not contain any variables not
|
||||||
|
## present for the device is used as the device name tag.
|
||||||
|
## The typical use case is for LVM volumes, to get the VG/LV name instead of
|
||||||
|
## the near-meaningless DM-0 name.
|
||||||
|
# name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]
|
||||||
|
|
||||||
|
|
||||||
|
# Get kernel statistics from /proc/stat
|
||||||
|
[[inputs.kernel]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about memory usage
|
||||||
|
[[inputs.mem]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Get the number of processes and group them by status
|
||||||
|
[[inputs.processes]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about swap memory usage
|
||||||
|
[[inputs.swap]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about system load & uptime
|
||||||
|
[[inputs.system]]
|
||||||
|
## Uncomment to remove deprecated metrics.
|
||||||
|
# fielddrop = ["uptime_format"]
|
54
templates/inputs/input.docker.conf.j2
Normal file
54
templates/inputs/input.docker.conf.j2
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
###############################################################################
|
||||||
|
# INPUT PLUGINS #
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
# Read metrics about docker containers
|
||||||
|
[[inputs.docker]]
|
||||||
|
## Docker Endpoint
|
||||||
|
## To use TCP, set endpoint = "tcp://[ip]:[port]"
|
||||||
|
## To use environment variables (ie, docker-machine), set endpoint = "ENV"
|
||||||
|
endpoint = "unix:///var/run/docker.sock"
|
||||||
|
|
||||||
|
## Set to true to collect Swarm metrics(desired_replicas, running_replicas)
|
||||||
|
## Note: configure this in one of the manager nodes in a Swarm cluster.
|
||||||
|
## configuring in multiple Swarm managers results in duplication of metrics.
|
||||||
|
gather_services = false
|
||||||
|
|
||||||
|
## Only collect metrics for these containers. Values will be appended to
|
||||||
|
## container_name_include.
|
||||||
|
## Deprecated (1.4.0), use container_name_include
|
||||||
|
# container_names = []
|
||||||
|
|
||||||
|
## Containers to include and exclude. Collect all if empty. Globs accepted.
|
||||||
|
container_name_include = []
|
||||||
|
container_name_exclude = []
|
||||||
|
|
||||||
|
## Container states to include and exclude. Globs accepted.
|
||||||
|
## When empty only containers in the "running" state will be captured.
|
||||||
|
# container_state_include = []
|
||||||
|
# container_state_exclude = []
|
||||||
|
|
||||||
|
## Timeout for docker list, info, and stats commands
|
||||||
|
timeout = "5s"
|
||||||
|
|
||||||
|
## Whether to report for each container per-device blkio (8:0, 8:1...) and
|
||||||
|
## network (eth0, eth1, ...) stats or not
|
||||||
|
perdevice = true
|
||||||
|
|
||||||
|
## Whether to report for each container total blkio and network stats or not
|
||||||
|
total = false
|
||||||
|
|
||||||
|
## docker labels to include and exclude as tags. Globs accepted.
|
||||||
|
## Note that an empty array for both will include all labels as tags
|
||||||
|
docker_label_include = []
|
||||||
|
docker_label_exclude = []
|
||||||
|
|
||||||
|
## Which environment variables should we use as a tag
|
||||||
|
tag_env = ["JAVA_HOME", "HEAP_SIZE"]
|
||||||
|
|
||||||
|
## Optional TLS Config
|
||||||
|
# tls_ca = "/etc/telegraf/ca.pem"
|
||||||
|
# tls_cert = "/etc/telegraf/cert.pem"
|
||||||
|
# tls_key = "/etc/telegraf/key.pem"
|
||||||
|
## Use TLS but skip chain & host verification
|
||||||
|
# insecure_skip_verify = false
|
1264
templates/telegraf.conf.j2
Normal file
1264
templates/telegraf.conf.j2
Normal file
File diff suppressed because it is too large
Load diff
5644
templates/telegraf.conf.orig
Normal file
5644
templates/telegraf.conf.orig
Normal file
File diff suppressed because it is too large
Load diff
1
tests/inventory
Normal file
1
tests/inventory
Normal file
|
@ -0,0 +1 @@
|
||||||
|
galaxy-vagrant.example.com
|
5
tests/test.yml
Normal file
5
tests/test.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
- hosts: galaxy-vagrant.example.com
|
||||||
|
remote_user: root
|
||||||
|
roles:
|
||||||
|
- role: ../galaxy-telegraf
|
4
vars/main.yml
Normal file
4
vars/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
influx:
|
||||||
|
repo: https://repos.influxdata.com/influxdb.key
|
Loading…
Reference in a new issue