openstack-ansible-ops/cluster_metrics/playbook-influx-telegraf.yml
Bjoern Teipel 2d2c1f1419 Telegraf playbook fixes
The vm_quota.py is missing as telegraf plugin but still
referenced inside the playbook-influx-telegraf.yml
playbook.
Additionally the my.cnf is not necessary to be present
on the telegraf hosts/containers, in order to function.
The override influxdb_protocol exposes the protocol to
be used for communicating with influxdb, usually HTTP

Change-Id: I90226d02e82d2516be4a4d84baff22e46ce709fb
2017-05-09 15:40:13 -05:00

91 lines
3.1 KiB
YAML

---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Deploy telegraf
hosts: "all"
gather_facts: true
user: root
tasks:
- name: Add influxdata apt-keys
apt_key:
url: "https://repos.influxdata.com/influxdb.key"
state: "present"
- name: Add influxdata repo
apt_repository:
repo: "deb https://repos.influxdata.com/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable"
state: "present"
update_cache: yes
- name: Install telegraf
apt:
pkg: "telegraf"
state: "latest"
- name: Create telegraf plugin dir
file:
path: "/opt/telegraf"
state: directory
mode: "0755"
- name: Drop telegraf plugin file(s)
template:
src: "templates/telegraf-plugins/{{ item.value.plugin_name }}"
dest: "/opt/telegraf/{{ item.value.plugin_name }}"
mode: '0755'
with_dict: "{{ command_plugins }}"
when:
- item.value.when_group | bool
- item.value.group == inventory_hostname or
inventory_hostname in item.value.group | default([])
- name: Drop telegraf config file
template:
src: templates/telegraf.conf.j2
dest: /etc/telegraf/telegraf.conf
register: telegraf_config
- name: Enable and restart telegraf
service:
name: "telegraf"
enabled: true
state: restarted
when: telegraf_config | changed
- name: Enable and start telegraf
service:
name: "telegraf"
enabled: true
state: started
when: not telegraf_config | changed
vars_files:
- vars.yml
vars:
commands : []
command_plugins:
ironic:
plugin_name: "ironic_nodes.py"
command:
- "python /opt/telegraf/ironic_nodes.py"
group: "{{ groups['utility_all'][0] }}"
when_group: "{{ (groups['ironic_api'] | default([]) | length) > 0 }}"
kvm:
plugin_name: "kvm_virsh.py"
command:
- "python /opt/telegraf/kvm_virsh.py"
group: "{{ groups['nova_compute'] }}"
when_group: "{{ (groups['nova_compute'] | default([]) | length) > 0 and (nova_virt_type | default('qemu') in ['kvm', 'qemu']) }}"
cinder_pools_usage:
plugin_name: "cinder_pools_usage.py"
command:
- "python /opt/telegraf/cinder_pools_usage.py"
group: "{{ groups['utility_all'][0] }}"
when_group: "{{ (groups['cinder_volumes'] | default([]) | length) > 0 }}"
influx_telegraf_targets:
- "{{ influxdb_protocol|default('http') }}://{{ influxdb_host|default(internal_lb_vip_address) }}:{{ influxdb_port }}"