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 из темплейта