ELK: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 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сылки=

Версия 17: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 из темплейта

Cсылки