Skip to content

Telegraf

andyceo edited this page Dec 24, 2018 · 5 revisions

Конфигурирование Telegraf

Telegraf работает полностью на плагинах. Чтобы собрать какую-то метрику, надо активировать input-плагин, отправить куда=то - output-плагин. Включение плагина происходит простым упоминанием его конфига в файле конфигурации telegraf.conf. Если плагин не упомянут в конфигурации или закомментирован - плагин выключен.

Telegraf не умеет автоматически генерировать конфиг новой версии, объединенный с текущим. Можно получить пример конфига так:

telegraf -sample-config > /tmp/telegraf.conf

Или, если Telegraf в докере:

sudo docker container exec -ti <CONTAINER_ID> telegraf -sample-config > /tmp/telegraf.conf

Вот так можно создать файл конфигурации, в котором включены только сбор метрик cpu и памяти и отправка их InfluxDB:

telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > /tmp/telegraf.conf

Обычно этого и не требуется, или легко сделать вручную, т.к. в Telegraf только добавляют новых входов (inputs) и выходов (outputs).

Также можно просто посмотреть файл конфига в репозитории:

curl https://raw.githubusercontent.com/influxdata/telegraf/master/etc/telegraf.conf

Когда вы создали файл конфигурации, который вас устраивает, можно посмотреть, какие метрики будут собираться:

telegraf -config telegraf.conf -test

Telegraf соберет метрики и напечатает их в консоль.

Telegraf может фильтровать и роутить метрики на разные выходы. Документация здесь. Вкратце можно перечислить селекторы для выбора и обогащения имен метрик (измерений, MEASUREMENTS), тегов и полей: namepass, namedrop, name_suffix, tagpass, tagdrop, fieldpass, fielddrop, taginclude, tagexclude.

Плагин logparser (а также похожие file, tail)

Список встроенных в logparser готовых форматов можно найти здесь

Также logparser поддерживает и паттерны, определенные в Logstash.

Лучшая документация по grok - это документация к Logstash.

Отлаживать logparser можно только через полноценный запуск Telegraf (без параметра -test), т.к. этот плагин не поддерживает режим теста, поэтому вот пример элементарного конфига для начала отладки:

[agent]
  interval = "1s"
  flush_interval = "1s"
  
[[outputs.file]]
  files = ["stdout"]
  data_format = "json"

[[inputs.logparser]]
  files = [
    "/var/log/messages",
    "/data/nginx-logs/*.log",
  ]
  from_beginning = false
  [inputs.logparser.grok]
    measurement = "logs"
    patterns = ["%{LOG_STRING}"]
    custom_pattern_files = []
    custom_patterns = '''
      LOG_STRING %{GREEDYDATA:log_line:string}
    '''

[[inputs.tail]]
  name_override = "logs"
  files = [
    "/var/log/messages",
    "/data/nginx-logs/*.log",
  ]
  from_beginning = false
  pipe = false
  watch_method = "inotify"
  data_format = "grok"
  grok_patterns = ["%{LOG_STRING}"]
  grok_custom_pattern_files = []
  grok_custom_patterns = '''
    LOG_STRING %{GREEDYDATA:log_line:string}
  '''

[[inputs.file]]
  files = ["/var/log/apache/access.log"]
  data_format = "influx"

В секции [agent] указаны минимальные интервалы сбора и сброса данных, чтобы не ждать лишнего при отладке.

Если не задан data_format в секции [[outputs.file]], то данные будут выводиться в формате InfluxDB Line Protocol по умолчанию. Доступны многие форматы ввода и вывода данных. Здесь формат ввода не используется, но он используется, например, в плагинах file и tail.

В данном конфиге logparser, отсутствует name_override - потому что имя создаваемого измерения (MEASUREMENT) уже задано в блоке [inputs.logparser.grok], ключ measurement. Если задано и measurement, и name_override, последний имеет преимущество.

Если файл конфига для отладки находится в /tmp/telegraf.conf, то запуск производится так:

telegraf --config /tmp/telegraf.conf

Sidebar is under construction

Clone this wiki locally