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'. По умолчанию: True
  • telegraf_agent_flush_interval: Интервал сброса данных по умолчанию для всех выводов. По умолчанию: 10
  • telegraf_agent_flush_jitter: Добавляет случайный элемент к интервалу сброса. По умолчанию: 0
  • telegraf_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

Переменные для 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

О проекте

Installing and configuring Telegraf

Установить
ansible-galaxy install dj-wasabi/ansible-telegraf
Лицензия
mit
Загрузки
711490
Владелец
DevOps Engineer, Technical reviewer Packt Pub / Manning / BPB Online / O'Reilly Media