Skip to content

Instantly share code, notes, and snippets.

@joeypiccola
Created November 19, 2019 02:35
Show Gist options
  • Save joeypiccola/2244baee485a868fc46034c9906e46bd to your computer and use it in GitHub Desktop.
Save joeypiccola/2244baee485a868fc46034c9906e46bd to your computer and use it in GitHub Desktop.
general telegraf config for ras pi
---
- name: Set hostname
become: true
tags: host
hostname:
name: "{{ hostvars[inventory_hostname].hostname }}"
- name: Copy over hosts file
become: true
tags: host
template:
src: "{{ role_path }}/files/hosts"
dest: /etc/hosts
owner: root
mode: 0644
- name: Install apt packages
become: true
apt:
force_apt_get: true
pkg:
- python-rpi.gpio
- python3-rpi.gpio
- i2c-tools
- build-essential
- python-pip
- python-dev
- python-smbus
- python3-pip
state: present
- name: Install pip3 packages
become: true
pip:
name:
- adafruit-circuitpython-bme280
state: present
executable: pip3
- name: Import InfluxData GPG signing key
tags: tg
apt_key:
url: https://repos.influxdata.com/influxdb.key
state: present
- name: Add InfluxData repository
tags: tg
apt_repository:
repo: deb https://repos.influxdata.com/debian stretch stable
state: present
when: telegraf_install_url is not defined or telegraf_install_url == None
- name: Install telegraf packages
tags: tg
apt:
pkg: telegraf
state: latest
- name: Copy over python script
become: true
tags: python
template:
src: "{{ role_path }}/files/Get-BME280Stats.py"
dest: "{{ python_script_path }}"
owner: pi
mode: 0755
- name: Copy over telegraf.conf
tags: tg, host
template:
src: "{{ role_path }}/files/telegraf.conf"
dest: "{{ telegraf_conf_path }}"
register: telegrafconf
- name: Set telegraf user groups
tags: tg
user:
groups:
- i2c
- telegraf
name: telegraf
- name: Restart telegraf
tags: tg
service:
name: telegraf
state: restarted
when: telegrafconf.changed
- name: Ensure Telegraf is running and set to start
tags: tg
service:
name: telegraf
state: started
enabled: yes
# Telegraf Configuration
# Global tags can be specified here in key="value" format.
[global_tags]
# Configuration for telegraf agent
[agent]
## Default data collection interval for all inputs
interval = "{{ telegraf_agent_interval }}"
## Rounds collection interval to 'interval'
## ie, if interval="10s" then always collect on :00, :10, :20, etc.
round_interval = true
## Telegraf will send metrics to outputs in batches of at most
## metric_batch_size metrics.
## This controls the size of writes that Telegraf sends to output plugins.
metric_batch_size = 1000
## For failed writes, telegraf will cache metric_buffer_limit metrics for each
## output, and will flush this buffer on a successful write. Oldest metrics
## are dropped first when this buffer fills.
## This buffer only fills when writes fail to output plugin(s).
metric_buffer_limit = 10000
## Collection jitter is used to jitter the collection by a random amount.
## Each plugin will sleep for a random time within jitter before collecting.
## This can be used to avoid many plugins querying things like sysfs at the
## same time, which can have a measurable effect on the system.
collection_jitter = "0s"
## Default flushing interval for all outputs. Maximum flush_interval will be
## flush_interval + flush_jitter
flush_interval = "10s"
## Jitter the flush interval by a random amount. This is primarily to avoid
## large write spikes for users running a large number of telegraf instances.
## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
flush_jitter = "0s"
## By default or when set to "0s", precision will be set to the same
## timestamp order as the collection interval, with the maximum being 1s.
## ie, when interval = "10s", precision will be "1s"
## when interval = "250ms", precision will be "1ms"
## Precision will NOT be used for service inputs. It is up to each individual
## service input to set the timestamp at the appropriate precision.
## Valid time units are "ns", "us" (or "µs"), "ms", "s".
precision = ""
## Logging configuration:
## Run telegraf with debug log messages.
debug = false
## Run telegraf in quiet mode (error log messages only).
quiet = false
## Specify the log file name. The empty string means to log to stderr.
# logfile = "/home/pi/tlog.log"
## Override default hostname, if empty use os.Hostname()
hostname = ""
## If set to true, do no set the "host" tag in the telegraf agent.
omit_hostname = false
###############################################################################
# OUTPUT PLUGINS #
###############################################################################
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
## Multiple URLs can be specified for a single cluster, only ONE of the
urls = ["{{ telegraf_output_urls }}"]
## The target database for metrics; will be created as needed.
database = "{{ telegraf_output_database }}"
## HTTP User-Agent
user_agent = "telegraf"
###############################################################################
# INPUT PLUGINS #
###############################################################################
[[inputs.exec]]
command = "{{ python_script_path }}"
data_format = "json"
name_suffix = "_{{ hostvars[inventory_hostname].hostname }}_{{ hostvars[inventory_hostname].location }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment