50 Commits
0.5.0 ... 0.7.0

Author SHA1 Message Date
1100ceddd6 Merge pull request #27 from dj-wasabi/release_0.7.0
Updating to release 0.7.0
2017-02-23 21:11:16 +02:00
40b25772f3 Updating to release 0.7.0 2017-02-23 19:45:11 +01:00
71f436f8ca Merge pull request #26 from tszym/remove-actions
Replace action by modules
2017-02-22 20:37:34 +02:00
c416bb20a7 Replace action by modules 2017-02-22 19:20:29 +01:00
ae8c1cbe7f Merge pull request #25 from tszym/rpm-repo
Use yum repository to install telegraf on RedHat
2017-02-22 19:05:49 +02:00
c6848506cf Fix a typo 2017-02-22 10:27:03 +01:00
0b82b8420e Use yum repository to install telegraf on RedHat family
The role does not use a direct download of the rpm package but use the
yum repository for InfluxData products as it is advised in the current
documentation for installation.
https://docs.influxdata.com/telegraf/v1.2/introduction/installation/
2017-02-22 10:27:03 +01:00
f7e7045e9f Remove unused vars 2017-02-22 10:27:03 +01:00
35b594cf36 Merge pull request #24 from emersondispatch/master
Remove for-loop in extra-plugin template
2017-02-21 22:10:45 +02:00
128faa55b6 Consolidate instead to a single extra-plugins conf file, to cover the case of multiple instances of same plugin 2017-02-21 10:40:19 -08:00
641981bfb3 Remove for-loop in extra-plugin template, because this is performed by the task itself. Was causing all extra plugin configurations to be written in each sub-configuration file 2017-02-20 20:24:19 -08:00
e29aa87c04 Merge pull request #23 from zend0/patch-1
Update Debian.yml
2017-02-09 20:13:12 +01:00
227c6f9418 Update Debian.yml
upd

add become: yes
2017-02-09 15:25:05 +04:00
cb215db02c Merge pull request #21 from oboukili/master
extra plugins tags
2017-01-20 12:34:37 +01:00
0597f0115c extra plugins tags 2017-01-20 11:58:17 +01:00
62a6158281 Merge pull request #20 from szibis/input_tags
Input tags support
2017-01-20 10:48:36 +01:00
fe9f970bde Fixes closing if for tags template 2017-01-20 10:01:13 +01:00
2696c2aca5 Merge pull request #19 from szibis/permissions
Fix telegraf confguration permissions
2017-01-19 19:31:48 +01:00
f3f67f4f7a Input tags support 2017-01-18 21:29:42 +01:00
8b522beab0 fix typo 2017-01-18 21:24:16 +01:00
4291b00a6e Fix telegraf permissions - tests fix 2017-01-18 21:14:28 +01:00
7694682e56 Fix telegraf permissions. Telegraf package adds user and group telegraf. 2017-01-18 21:10:39 +01:00
8fd9c2c9c9 Fix merge issue 2017-01-02 13:03:22 +01:00
4c0d09d11e Set release 0.6.0 2017-01-02 13:02:26 +01:00
9aad1a8d39 Merge pull request #17 from lhoss/readme-update-with-telegraf-v1.1-settings
update the README with the latest v0.13 - v1.1 agent settings
2017-01-02 12:41:59 +01:00
2c54dea8d2 update the README with the latest v0.13 - v1.1 agent settings 2017-01-02 10:27:23 +01:00
f962f4ca82 Merge pull request #15 from dj-wasabi/fix_molecule
Fixing molecule
2016-12-31 19:54:27 +01:00
194d3d6e92 Merge branch 'master' into fix_molecule 2016-12-30 18:45:12 +01:00
5036595b79 Merge pull request #16 from lhoss/support_newer_agent_settings
support missing agent settings upto telegraf v1.1
2016-12-30 18:44:35 +01:00
3bd9681567 Fixing merge issue 2016-12-30 18:38:52 +01:00
536dce400b Merge pull request #14 from lhoss/improve_version_compare
use version_compare filter …
2016-12-30 18:37:26 +01:00
0405d3d993 support missing agent settings upto telegraf v1.1 2016-12-30 18:36:29 +01:00
1533214071 FIxing ansible-lint issues 2016-12-30 18:35:49 +01:00
26b473b0fb Added some version commands 2016-12-30 18:03:51 +01:00
d486975c81 Fixing molecule 2016-12-30 17:55:21 +01:00
3201ec329c use version_compare filter (more readable, stable and no extra set_fact required) 2016-12-30 17:39:44 +01:00
b95a67954f Merge pull request #13 from romainbureau/master
set telegraf hostname in defaults.
2016-09-20 18:04:53 +02:00
ad1a4430c6 set telegraf hostname in defaults. 2016-09-20 15:33:07 +02:00
ec63b2aa24 Merge pull request #12 from dj-wasabi/fix_test
Removed imports
2016-09-11 20:04:28 +02:00
8dbb365ed0 Removed imports 2016-09-11 19:55:16 +02:00
f23fc6ea23 Merge pull request #11 from Ismael/fix_repo
Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid")
2016-09-11 19:52:52 +02:00
51c82e1c85 Merge pull request #10 from Ismael/fix_become
Do "become" for the steps that require root access on Debian
2016-09-11 19:52:00 +02:00
a3ca2db212 For Debian: Use ansible_lsb only if it's defined 2016-09-07 19:07:55 -03:00
9c9dc33ac3 Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid")
Use ansible_lsb.codename to set the path to the influxdb repo because "hybrid" distros (when you have testing+unstable, for example) don't work otherwise
2016-09-07 19:07:51 -03:00
95d5161d33 Do "become" for the steps that require root access on Debian
Actions with apt require being root. Add "become" to those.
"sudo" is deprecated, changed it to "become"
2016-09-07 18:52:46 -03:00
86fabca61b Merge pull request #7 from dj-wasabi/new_molecule_setup
Added new code for correct molecule verification
2016-08-24 19:17:20 +02:00
b0dfe773a7 Added new code for correct molecule verification 2016-08-24 19:09:23 +02:00
3826a37496 Added 0.5.1 2016-08-24 19:00:27 +02:00
4d197aa8ea Merge pull request #6 from mycujoo/master
fixed issue with ansible not getting the package
2016-08-12 09:03:50 +02:00
40230aa198 fixed issue with ansible not getting the package
Ansible was not getting the package properly on ubuntu 14.04 because of SSL problems. Could be resolved by installing additional pip packages but this is cleaner.
2016-08-11 16:58:35 +02:00
13 changed files with 219 additions and 91 deletions

View File

@ -9,9 +9,12 @@ before_install:
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-engine
install:
- pip install molecule
- pip install molecule ansible docker-py
script:
- molecule --version
- ansible --version
- molecule test
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/

View File

@ -5,6 +5,32 @@ Below an overview of all changes in the releases.
Version (Release date)
0.7.0 (2017-02-23)
* Replace action by modules #26 (By pull request: tszym (Thanks!))
* Use yum repository to install telegraf on RedHat #25 (By pull request: tszym (Thanks!))
* Remove for-loop in extra-plugin template #24 (By pull request: emersondispatch (Thanks!))
* Update Debian.yml #23 (By pull request: zend0 (Thanks!))
* extra plugins tags #21 (By pull request: oboukili (Thanks!))
* Input tags support #20 (By pull request: szibis (Thanks!))
* Fix telegraf confguration permissions #19 (By pull request: szibis (Thanks!))
0.6.0 (2017-01-02)
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #9 (By pull request: Ismael (Thanks!))
* Do "become" for the steps that require root access on Debian #10 (By pull request: Ismael (Thanks!))
* Fix the Influxdb repo for "hybrid" debian distros (like "jessie/sid") #11 (By pull request: Ismael (Thanks!))
* Removed imports #12
* Fixing molecule #15
* set telegraf hostname in defaults. #13 (By pull request: romainbureau (Thanks!))
* use version_compare filter … #14 (By pull request: lhoss (Thanks!))
* support missing agent settings upto telegraf v1.1 #16 (By pull request: lhoss (Thanks!))
* update the README with the latest v0.13 - v1.1 agent settings #17 (By pull request: lhoss (Thanks!))
0.5.1 (2016-08-24)
* fixed issue with ansible not getting the package #6 (By pull request: thecodeassassin (Thanks!))
0.5.0 (2016-07-17)
* Removed Test Kitchen tests

View File

@ -1,7 +1,6 @@
dj-wasabi.telegraf
=========
# dj-wasabi.telegraf
Build status:
## Build status:
[![Build Status](https://travis-ci.org/dj-wasabi/ansible-telegraf.svg?branch=master)](https://travis-ci.org/dj-wasabi/ansible-telegraf)
@ -13,24 +12,38 @@ Design goals are to have a minimal memory footprint with a plugin system so that
(https://github.com/influxdb/telegraf)
Requirements
------------
## Requirements
No requirements. (Yes, an Influxdb server somewhere on the network will help though ;-) )
Role Variables
--------------
## Upgrade
### 0.7.0
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:
* `telegraf_agent_version`: The version of Telegraf to install. Default: `1.0.0`
* `telegraf_agent_rpm_url`: The full path to the RPM file located on a webserver.
* `telegraf_agent_deb_url`: The full path to the DEB file located on a webserver.
* `telegraf_agent_interval`: The interval configured for sending data to the server. Default: `10`
* `telegraf_agent_debug`: Setting the Telegraf in debug mode. Default: `False`
* `telegraf_agent_debug`: Run Telegraf in debug mode. Default: `False`
* `telegraf_agent_round_interval`: Rounds collection interval to 'interval' Default: True
* `telegraf_agent_flush_interval`: Default data flushing interval for all outputs. Default: 10
* `telegraf_agent_flush_jitter`: Jitter the flush interval by a random amount. Default: 0
* `telegraf_agent_collection_jitter`: Jitter the collection by a random amount. Default: 0 (since v0.13)
* `telegraf_agent_metric_batch_size`: The agent metric batch size. Default: 1000 (since v0.13)
* `telegraf_agent_metric_buffer_limit`: The agent metric buffer limit. Default: 10000 (since v0.13)
* `telegraf_agent_quiet`: Run Telegraf in quiet mode (error messages only). Default: `False` (since v0.13)
* `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
You can set tags for the host running telegraf:
@ -45,6 +58,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"]
The config will be printed line by line into the configuration, so you could also use:
@ -71,7 +86,7 @@ With the property `telegraf_plugins_default` it is set to use the default set of
- plugin: swap
- plugin: netstat
Every telegraf agent has these as an default configuration.
Every telegraf agent has these as a default configuration.
The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific to the servers goal. Following is an example for using this parameter for MySQL database servers:
@ -84,6 +99,7 @@ The 2nd parameter `telegraf_plugins_extra` can be used to add plugins specific 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.
@ -95,18 +111,19 @@ An example might look like this:
telegraf_plugins_default:
- plugin: disk
interval: 12
tags:
- diskmetrics = "true"
tagpass:
- fstype = [ "ext4", "xfs" ]
- path = [ "/opt", "/home" ]
Dependencies
------------
## Dependencies
No dependencies
Example Playbook
----------------
## Example Playbook
- hosts: servers
roles:
@ -117,18 +134,20 @@ The following have contributed to this Ansible role:
* aferrari-technisys
* stvnwrgs
* lhoss
* thecodeassassin
* Ismael
* romainbureau
# Molecule
## Molecule
This roles is configured to be tested with Molecule. You can find on this page some more information regarding Molecule: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
License
-------
## License
BSD
Author Information
------------------
## Author Information
Please let me know if you have issues. Pull requests are also accepted! :-)

View File

@ -3,16 +3,22 @@
#telegraf_agent_version: 0.10.1
telegraf_agent_version: 1.0.0
telegraf_agent_version_sub_l: _beta2
telegraf_agent_version_sub_u: -beta2
telegraf_agent_hostname: "{{ ansible_fqdn }}"
telegraf_agent_interval: 10
telegraf_agent_debug: False
telegraf_agent_round_interval: True
telegraf_agent_flush_interval: 10
telegraf_agent_flush_jitter: 0
telegraf_agent_rpm_url: https://dl.influxdata.com/telegraf/releases/telegraf-{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_l }}.x86_64.rpm
telegraf_agent_deb_url: https://dl.influxdata.com/telegraf/releases/telegraf_{{ telegraf_agent_version }}{{ telegraf_agent_version_sub_u }}_amd64.deb
#v0.13 settings (not sure if supported in older version):
telegraf_agent_collection_jitter: 0
telegraf_agent_metric_batch_size: 1000
telegraf_agent_metric_buffer_limit: 10000
telegraf_agent_quiet: False
#v1.1 settings:
telegraf_agent_logfile: ""
telegraf_agent_omit_hostname: False
telegraf_agent_tags:

View File

@ -2,8 +2,8 @@
# handlers file for ansible-telegraf
- name: "Restart Telegraf"
action: service
name=telegraf
state=restarted
enabled=yes
sudo: yes
service:
name: telegraf
state: restarted
enabled: yes
become: yes

View File

@ -2,6 +2,12 @@
ansible:
playbook: playbook.yml
driver:
name: docker
verifier:
name: testinfra
docker:
containers:
- name: telegraf-centos

View File

@ -2,14 +2,14 @@
- hosts: all
pre_tasks:
- name: "Installing which on CentOS"
action: yum
name=which
state=installed
yum:
name: which
state: installed
when: ansible_distribution == 'CentOS'
- name: "Installing wget on Debian"
action: apt
name=wget
state=installed
apt:
name: wget
state: installed
when: ansible_distribution == 'Debian'
roles:
- role: ansible-telegraf

View File

@ -1,14 +1,60 @@
---
- name: "Fetch telegraf installation package | Debian"
action: get_url
url={{ telegraf_agent_deb_url }}
dest=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
mode=0440
- name: Ensure the system can use the HTTPS transport for APT.
stat:
path: /usr/lib/apt/methods/https
register: apt_https_transport
tags:
- telegraf
- packages
- name: Install APT HTTPS transport.
apt:
name: "apt-transport-https"
state: present
when: not apt_https_transport.stat.exists
become: yes
tags:
- telegraf
- packages
- name: Download Influxdb apt key.
apt_key:
url: "https://repos.influxdata.com/influxdb.key"
state: present
become: yes
tags:
- telegraf
- packages
- name: Add Influxdb repository (using LSB).
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_lsb.codename }} stable"
filename: "influxdb"
state: present
become: yes
tags:
- telegraf
- packages
when: ansible_lsb is defined
- name: Add Influxdb repository.
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution|lower }} {{ ansible_distribution_release }} stable"
filename: "influxdb"
state: present
become: yes
tags:
- telegraf
- packages
when: ansible_lsb is not defined
- name: "Install telegraf package | Debian"
action: apt
deb=/tmp/telegraf_{{ telegraf_agent_version }}-1_amd64.deb
state=installed
apt:
name: telegraf
state: installed
notify: "Restart Telegraf"
sudo: yes
become: yes
tags:
- telegraf
- packages

View File

@ -1,14 +1,14 @@
---
- name: "Enable EPEL"
action: yum
name=epel-release
state=installed
yum:
name: epel-release
state: installed
- name: "Installing some dependencies"
action: yum
name={{ item }}
state=installed
yum:
name: "{{ item }}"
state: installed
with_items:
- python-pip
- python-devel
@ -17,22 +17,24 @@
- openssl-devel
- name: "Installing PIP dependensies"
action: pip
name={{ item }}
state=present
pip:
name: "{{ item }}"
state: present
with_items:
- urllib3
- pyopenssl
- ndg-httpsclient
- name: "Fetch telegraf installation package | RedHat"
action: get_url
url="{{ telegraf_agent_rpm_url }}"
dest=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
mode=0440
- name: "Add yum repository | RedHat"
yum_repository:
name: influxdb
description: InfluxDB Repository - RHEL $releasever
baseurl: https://repos.influxdata.com/rhel/$releasever/$basearch/stable
gpgcheck: yes
gpgkey: https://repos.influxdata.com/influxdb.key
- name: "Install telegraf package | RedHat"
action: yum
name=/tmp/telegraf_{{ telegraf_agent_version }}.x86_64.rpm
state=installed
yum:
name: "telegraf-{{ telegraf_agent_version }}"
state: installed
notify: "Restart Telegraf"

View File

@ -9,40 +9,35 @@
include: "Debian.yml"
when: ansible_os_family == "Debian"
- name: "Set fact by remove the dots from version"
set_fact:
telegraf_ver: "{{ telegraf_agent_version.replace('.','') }}"
- name: "Copy the template for versions < 0.10.0"
template:
src: etc-opt-telegraf-telegraf.conf.j2
dest: /etc/opt/telegraf/telegraf.conf
owner: root
group: root
mode: 0644
when: telegraf_ver < 100
sudo: yes
owner: telegraf
group: telegraf
mode: 0640
become: yes
when: telegraf_agent_version|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: root
group: root
mode: 0644
when: telegraf_ver >= 100
sudo: yes
owner: telegraf
group: telegraf
mode: 0640
become: yes
when: telegraf_agent_version|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.plugin }}.conf"
owner: root
group: root
mode: 644
with_items: "{{ telegraf_plugins_extra }}"
dest: "/etc/telegraf/telegraf.d/extra-plugins.conf"
owner: telegraf
group: telegraf
mode: 0640
when: "telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable"
sudo: yes
become: yes
notify: "Restart Telegraf"

View File

@ -1,4 +1,3 @@
{% if telegraf_plugins_extra is defined and telegraf_plugins_extra is iterable %}
{% for item in telegraf_plugins_extra %}
[[inputs.{{ item.plugin }}]]
@ -10,6 +9,12 @@
{{ items }}
{% endfor %}
{% endif %}
{% if item.tags is defined and item.tags is iterable %}
[inputs.{{ item.plugin }}.tags]
{% for items in item.tags %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}

View File

@ -11,10 +11,20 @@
[agent]
interval = "{{ telegraf_agent_interval }}s"
debug = {{ telegraf_agent_debug | lower }}
hostname = "{{ ansible_fqdn }}"
hostname = "{{ telegraf_agent_hostname }}"
round_interval = {{ telegraf_agent_round_interval | lower }}
flush_interval = "{{ telegraf_agent_flush_interval }}s"
flush_jitter = "{{ telegraf_agent_flush_jitter }}s"
{% if telegraf_agent_version|version_compare('0.13', '>=') %}
collection_jitter = "{{ telegraf_agent_collection_jitter }}s"
metric_batch_size = {{ telegraf_agent_metric_batch_size }}
metric_buffer_limit = {{ telegraf_agent_metric_buffer_limit }}
quiet = {{ telegraf_agent_quiet | lower }}
{% endif %}
{% if telegraf_agent_version|version_compare('1.1', '>=') %}
logfile = "{{ telegraf_agent_logfile }}"
omit_hostname = {{ telegraf_agent_omit_hostname | lower }}
{% endif %}
###############################################################################
# OUTPUTS #
@ -44,6 +54,12 @@
{{ items }}
{% endfor %}
{% endif %}
{% if item.tags is defined and item.tags is iterable %}
[inputs.{{ item.plugin }}.tags]
{% for items in item.tags %}
{{ items }}
{% endfor %}
{% endif %}
{% if item.tagpass is defined and item.tagpass is iterable %}
[{{ item.plugin }}.tagpass]
{% for items in item.tagpass %}

View File

@ -1,3 +1,7 @@
from testinfra.utils.ansible_runner import AnsibleRunner
testinfra_hosts = AnsibleRunner('.molecule/ansible_inventory').get_hosts('all')
def test_telegraf_running_and_enabled(Service, SystemInfo):
telegraf = Service("telegraf")
@ -8,9 +12,9 @@ def test_telegraf_running_and_enabled(Service, SystemInfo):
def test_telegraf_dot_conf(File):
telegraf = File("/etc/telegraf/telegraf.conf")
assert telegraf.user == "root"
assert telegraf.group == "root"
assert telegraf.mode == 0o644
assert telegraf.user == "telegraf"
assert telegraf.group == "telegraf"
assert telegraf.mode == 0o640
assert telegraf.contains('[[inputs.cpu]]')