ELK: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 61: | Строка 61: | ||
* elasticsearch-http - имя модуля |
* elasticsearch-http - имя модуля |
||
+ | * index("syslog-ng-${YEAR}${MONTH}${DAY}") - Такая запись позволяет просто ротировать индексы, естественно можно делать часовые или по имени источника |
||
− | * index("syslog-ng-${YEAR}${MONTH}${DAY}") |
||
+ | * type("syslog-ng") - <B>ВАЖНО</B> это поле нельзя оставлять пустым! Иначе с Elasticsearch 6 не работает, пояснение ниже |
||
− | * type("syslog-ng") |
||
− | * url("127.0.0.1:9200/_bulk") |
+ | * url("127.0.0.1:9200/_bulk") - HTTP endpoint |
* workers(4) |
* workers(4) |
||
− | * batch_lines(128) |
+ | * batch_lines(128) - |
+ | * batch_timeout(10000) - при большом значении syslog-ng держит в себе, в результате возникает отставание и логи видны не сразу (хотя если верить описанию то должен срабатывать когда ИЛИ прошло время ИЛИ когда скопилось достаточно сообщений) |
||
− | * batch_timeout(10000) |
||
− | * timeout(100) |
+ | * timeout(100) - HTTP timeout |
* template("$(format-json --scope rfc5424 --scope dot-nv-pairs --rekey .* --shift 1 --scope nv-pairs --key ISODATE @timestamp=${ISODATE})") |
* template("$(format-json --scope rfc5424 --scope dot-nv-pairs --rekey .* --shift 1 --scope nv-pairs --key ISODATE @timestamp=${ISODATE})") |
||
+ | |||
+ | У меня была проблема с тем что логи писались по UTC т е отставали на три часа - эту проблему решило удаление <B>--exclude DATE</b> из темплейта |
||
=Cсылки= |
=Cсылки= |
Версия 16:58, 5 августа 2021
ELK на минималках
Эта заметка описывает минимальную конфигурацию для частного случая - получения в syslog сообщений от свитчей.
Логика работы
- свитч отправляет сообщение по UDP
- syslog-ng ловит сообщение и пишет его в файл
- файл разбирает filebeat и отправляет данные в логстеш
- logstash пишет в elasticserach
- логи в elasticsearch смотреть через kibana
- Кроме этого syslog-ng пишет все логи в Elasticsearch напрямую но в другой индекс (который хранится меньше времени)
- старые файлы удаляет logrotate
- старые индексы удаляет TODO!!!
Syslog-Ng
Starting with syslog-ng version 3.6.1 the default system() source on Linux systems using systemd uses journald as its standard system() source.
Общая настройка syslog-ng
Elasticsearch
- Важно: elasticsearch/elasticsearch2 примеры настройки которых встречаются в интернете уже не поддерживаются и в моем дистрибутиве отсутвуют.
Пример конфигурационного файла
destination d_elasticsearch_http { elasticsearch-http( index("syslog-ng-${YEAR}${MONTH}${DAY}") type("syslog-ng") url("127.0.0.1:9200/_bulk") # workers(4) batch_lines(128) # batch_timeout(10000) timeout(100) template("$(format-json --scope rfc5424 --scope dot-nv-pairs --rekey .* --shift 1 --scope nv-pairs --key ISODATE @timestamp=${ISODATE})") ); }; destination d_elastic_debug { file("/var/log/elasticsearch_debug.log");. }; log { source(s_src); destination(d_elasticsearch_http); flags(flow-control); };
- elasticsearch-http - имя модуля
- index("syslog-ng-${YEAR}${MONTH}${DAY}") - Такая запись позволяет просто ротировать индексы, естественно можно делать часовые или по имени источника
- type("syslog-ng") - ВАЖНО это поле нельзя оставлять пустым! Иначе с Elasticsearch 6 не работает, пояснение ниже
- url("127.0.0.1:9200/_bulk") - HTTP endpoint
- workers(4)
- batch_lines(128) -
- batch_timeout(10000) - при большом значении syslog-ng держит в себе, в результате возникает отставание и логи видны не сразу (хотя если верить описанию то должен срабатывать когда ИЛИ прошло время ИЛИ когда скопилось достаточно сообщений)
- timeout(100) - HTTP timeout
- template("$(format-json --scope rfc5424 --scope dot-nv-pairs --rekey .* --shift 1 --scope nv-pairs --key ISODATE @timestamp=${ISODATE})")
У меня была проблема с тем что логи писались по UTC т е отставали на три часа - эту проблему решило удаление --exclude DATE из темплейта