Telegraf - andyceo/documentation GitHub Wiki
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
готовых форматов можно найти здесь
Также 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