telegraf
dj-wasabi.telegraf
- dj-wasabi.telegraf
Статус сборки:
Эта роль устанавливает и настраивает Telegraf.
Telegraf — это агент, написанный на Go, для сбора метрик из системы, на которой он работает, или из других сервисов, и записи их в InfluxDB.
Цели дизайна — иметь минимальные требования к памяти с системой плагинов, чтобы разработчики в сообществе могли легко добавлять поддержку для сбора метрик из известных сервисов (таких как Hadoop, Postgres или Redis) и сторонних API (таких как Mailchimp, AWS CloudWatch или Google Analytics).
(https://github.com/influxdb/telegraf)
Требования
Поддерживаемые системы
Эта роль поддерживает следующие системы:
- Red Hat
- Debian
- Ubuntu
- Docker-контейнер
- (Open)Suse
- Windows (по возможности)
- FreeBSD (по возможности)
- Archlinux (только "онлайн" режим)
Поэтому вам понадобится одна из этих систем.. :-) Пожалуйста, отправьте запросы на изменение или предложения, если вы хотите использовать эту роль для других систем.
InfluxDB
Вам понадобится экземпляр InfluxDB, работающий где-то в вашей сети. Или 1 из других типов вывода, найденных на https://github.com/influxdata/telegraf/#output-plugins
Docker
Docker должен быть установлен на целевом хосте. Я могу порекомендовать следующие роли для установки Docker:
Это необходимо только в случае, если требуется конфигурация для Telegraf внутри Docker-контейнера (Когда telegraf_agent_docker: True
).
Обновление
0.7.0
Была проблема:
Если я настраиваю telegraf_plugins_extra, запускаю ansible, удаляю плагин и снова запускаю ansible, плагин остается на машине.
Переменные роли
Специфичные для Ansible переменные
Указание версии для установки:
telegraf_agent_version
: Версия Telegraf для установки. Еслиtelegraf_agent_package_state
установлено вlatest
, то это свойство и значение игнорируются. По умолчанию:1.10.0
Как необходимо устанавливать Telegraf
. Существует 4 метода установки Telegraf
на целевом хосте:
- Через менеджер пакетов, например,
yum
,apt
илиzypper
("repo"); - Через загрузку с сайта
https://dl.influxdata.com/
("online"); - Уже предоставленный и доступный на целевом хосте, но еще не установленный/не настроенный ("offline");
- Уже установленный на целевом хосте или сделанный вручную, но еще не настроенный ("manual");
Это можно настроить, установив telegraf_agent_package_method
на одно из соответствующих значений ( repo
, online
, offline
или manual
).
Пакет Telegraf
Эти свойства определяют, как и какой пакет будет установлен.
telegraf_agent_package
: Название пакета Telegraf для установки. Когдаtelegraf_agent_package_method
установлено вonline
илиoffline
, необходимо указать полный путь к файлу. Пример:telegraf_agent_package: /tmp/telegraf.rpm
. По умолчанию:telegraf_agent_package: telegraf
.telegraf_agent_package_method
: Метод установки, который будет использоваться. Можно выбрать из:repo
,offline
илиonline
.telegraf_agent_package_state
: Если пакет должен бытьpresent
илиlatest
. Если установленоlatest
,telegraf_agent_version
будет игнорироваться. По умолчанию:present
Конфигурация процесса агента Telegraf.
telegraf_agent_interval
: Интервал, установленный для отправки данных на сервер. По умолчанию:10
telegraf_agent_debug
: Запуск Telegraf в режиме отладки. По умолчанию:False
telegraf_agent_round_interval
: Округляет интервал сбора до 'interval'. По умолчанию: Truetelegraf_agent_flush_interval
: Интервал сброса данных по умолчанию для всех выводов. По умолчанию: 10telegraf_agent_flush_jitter
: Добавляет случайный элемент к интервалу сброса. По умолчанию: 0telegraf_agent_aws_tags
: Настройка тегов AWS ec2 в разделе тегов Telegraf. По умолчанию:False
telegraf_agent_aws_tags_prefix
: Определяет префикс для тегов AWS ec2. По умолчанию:""
telegraf_agent_collection_jitter
: Добавляет случайный элемент к сбору. По умолчанию: 0 (с версии v0.13)telegraf_agent_metric_batch_size
: Размер партии метрик агента. По умолчанию: 1000 (с версии v0.13)telegraf_agent_metric_buffer_limit
: Лимит буфера метрик агента. По умолчанию: 10000 (с версии v0.13)telegraf_agent_quiet
: Запуск Telegraf в тихом режиме (только сообщения об ошибках). По умолчанию:False
(с версии v0.13)telegraf_agent_logfile
: Имя файла журнала агента. По умолчанию: '' (означает логирование в stdout) (с версии v1.1)telegraf_agent_hostname
: Имя хоста агента. По умолчанию:ansible_fqdn
telegraf_agent_omit_hostname
: Не устанавливать тег "host" в агенте. По умолчанию:False
(с версии v1.1)
Специфичные для Docker переменные роли:
telegraf_agent_docker
: Установить Telegraf как контейнер Docker. По умолчанию:False
telegraf_agent_docker_name
: Имя контейнера Docker. По умолчанию:telegraf
telegraf_agent_docker_network_mode
: Режим сети контейнера Docker. По умолчанию:bridge
telegraf_agent_docker_restart_policy
: Политика перезапуска контейнера Docker. По умолчанию:unless-stopped
telegraf_agent_docker_image_version
: Версия образа Docker Telegraf, которая будет использоваться. По умолчанию значение соответствует значению, указанному дляtelegraf_agent_version
. Можно установить вlatest
, чтобы получить актуальный тегlatest
для предоставленного образа Docker.telegraf_uid_docker
: Переопределение идентификатора пользователя. По умолчанию:995
telegraf_gid_docker
: Переопределение идентификатора группы. По умолчанию:998
Полное руководство по настройкам агента: https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration.
Дополнительная информация
Проблемы с ansible_fqdn для получения имени хоста
Дополнительная информация о: проблемы с ansible_fqdn для получения имени хоста #105
Опишите проблему
На некоторых узлах я получаю странные имена хостов, в основном localhost.localdomain. На тех узлах правильная конфигурация в hostnamectl. Я заметил, что вы используете 'ansible_fqdn' по умолчанию.
Кажется, что ansible_fqdn и ansible_hostname могут давать разные результаты, и иногда даже очень странные, так как иногда происходит обращение к DNS (что не под контролем в тех случаях) для определения имён.
Предложение по исправлению
В моем плейбуке я добавил этот параметр:
telegraf_agent_hostname: "{{ ansible_nodename }}"
Настройка тегов
Вы можете установить теги для хоста, на котором работает telegraf:
telegraf_global_tags:
- tag_name: some_name
tag_value: some_value
Указываете вывод. По умолчанию установлен localhost, вы должны указать правильный сервер influxdb:
telegraf_agent_output:
- type: influxdb
config:
- urls = ["http://localhost:8086"]
- database = "telegraf"
tagpass:
- cpu = ["cpu0"]
Конфигурация будет напечатана построчно в конфигурации, поэтому вы также можете использовать:
config:
- # Печать строки документации
и она будет напечатана в конфигурационном файле.
Специфика Docker
Образ Docker
Используется официальный Образ Telegraf от Influxdata. telegraf_agent_version
будет соответствовать тегу изображения.
Монтирование Docker
Обратите внимание, что контейнер Docker монтирует в основном всю вашу систему (только для чтения), чтобы мониторить хост Docker Engine изнутри контейнера. Чтобы быть точным:
- /etc/telegraf:/etc/telegraf:ro
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run:ro
Более подробная информация: https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md.
Пример конфигурации Docker
telegraf_agent_docker: True
# Принудительный режим сети хоста, чтобы метрики трафика хоста Docker Engine могли быть собраны.
telegraf_agent_docker_network_mode: host
# Принудительно задать конкретный тег изображения.
telegraf_agent_version: 1.10.0-alpine
telegraf_plugins_default:
- plugin: cpu
config:
- percpu = true
- plugin: disk
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
ПРИМЕЧАНИЕ
Поддержка Windows является лучшей возможной (у меня нет возможности тестировать/проверять изменения на различных доступных экземплярах Windows). PR, специфичные для Windows, будут почти немедленно объединены, если кто-то не сможет предоставить механизм тестирования Windows через Travis или другую службу для Pull Requests.
telegraf_win_install_dir
: Директория, куда будет установлен Telegraf.telegraf_win_logfile
: Место расположения журнала Telegraf.telegraf_win_include
: Директория, которая будет содержать всю конфигурацию плагина.
Переменные для openSUSE
telegraf_zypper_baseurl
: URL до репозитория openSUSE, который содержит Telegraf (например, для openSUSE Leap: "http://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Leap_{{ ansible_distribution_version }}/"). Если это не указано, будет использован репозиторий по умолчанию.
Переменные для MacOS
ПРИМЕЧАНИЕ
Поддержка MacOS, как и поддержка Windows, является лучшей возможной и не поддерживается официально.
telegraf_mac_user
: Telegraf будет работать от имени этого пользователя (необходимо, так как запуск программ от других пользователей с помощью brew проблематичен).
Дополнительная информация
Существуют два свойства, которые похожи, но используются по-разному. Это:
telegraf_plugins_default
telegraf_plugins_extra
telegraf_plugins_default
С помощью свойства telegraf_plugins_default
устанавливается стандартный набор плагинов Telegraf. Вы можете переопределить его, добавив больше плагинов, которые должны быть включены по умолчанию.
telegraf_plugins_default:
- plugin: cpu
config:
- percpu = true
- plugin: disk
- plugin: io
- plugin: mem
- plugin: system
- plugin: swap
- plugin: netstat
Каждый агент telegraf имеет эти настройки как конфигурацию по умолчанию.
telegraf_plugins_extra
Второй параметр telegraf_plugins_extra
может использоваться для добавления плагинов, специфичных для целей серверов. Это хэш вместо списка, так что вы можете объединять значения из нескольких файлов переменных. Следующий пример демонстрирует использование этого параметра для серверов баз данных MySQL:
cat group_vars/mysql_database
telegraf_plugins_extra:
mysql:
config:
- servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]
Существует возможность удаления файлов дополнительных плагинов в /etc/telegraf/telegraf.d, если они не были сгенерированы с помощью этого плейбука с помощью переменной telegraf_plugins_extra_exclusive
.
Опции плагина Telegraf:
tags
: Ключ/значение для применения к измерениям определенного ввода. Может быть использовано на любом этапе для лучшей фильтрации, например, в выводах.tagpass
: (добавлено в Telegraf 0.1.5) имена тегов и массивы строк, которые используются для фильтрации метрик текущим плагином. Каждая строка в массиве проверяется на точное совпадение с именем тега, и если совпадает, метрика отправляется.tagdrop
: (добавлено в Telegraf 0.1.5) Обратное tagpass. Если тег совпадает, метрика не отправляется. Это проверяется для метрик, которые прошли проверку tagpass.interval
: Как часто собирать эту метрику. Нормальные плагины используют один глобальный интервал, но если один конкретный плагин должен быть запущен реже или чаще, вы можете настроить это здесь.filter.name
: Как если у вас есть дополнительный фильтр, который нужно настроить, например,grok
для плагинаlogparser
.filter.config
: Дополнительная конфигурация для - в примереfilter.name
- фильтраgrok
. (См. пример ниже)sub_inputs
: Если ввод требует других под-вводов, вы можете добавить их здесь (см. пример ниже).
Пример может выглядеть так:
telegraf_plugins_default:
- plugin: disk
interval: 12
tags:
- diskmetrics = "true"
tagpass:
- fstype = [ "ext4", "xfs" ]
- path = [ "/opt", "/home" ]
Если вы хотите определить процессоры, вы можете просто использовать переменную telegraf_processors
.
Пример может выглядеть так:
telegraf_processors:
- processor: rename
- processor: rename.replace
config:
- tag = "level"
- dest = "LogLevel"
Если вы хотите использовать фильтр grok
для лог-парсера:
telegraf_plugins_extra:
logparser:
plugin: logparser
config:
- files = ["/var/log/messages"]
- from_beginning = false
filter:
name: grok
config:
- patterns = ["invoked oom-killer"]
Если вы хотите включить под-инпуты с их собственной конфигурацией:
sqs:
plugin: cloudwatch
config:
- region = "eu-west-1"
- access_key = "foo"
- secret_key = "bar"
- period = "1m"
- delay = "2m"
- interval = "1m"
- namespace = "AWS/SQS"
- statistic_include = ["average"]
sub_inputs:
metrics:
- names = [
"ApproximateAgeOfOldestMessage",
"ApproximateNumberOfMessagesVisible",
]
metrics.dimensions:
- name = "QueueName"
- value = "*"
Зависимости
Нет зависимостей
Пример плейбука
- hosts: servers
roles:
- { role: dj-wasabi.telegraf }
Molecule
Эта роль настроена для тестирования с помощью Molecule. Вы можете найти дополнительную информацию о Molecule на этой странице: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
Лицензия
BSD
Информация об авторе
Пожалуйста, дайте мне знать, если у вас есть проблемы. Запросы на изменение также принимаются! :-)
mail: ikben [ at ] werner-dijkerman . nl
ansible-galaxy install dj-wasabi/ansible-telegraf