Хранение логов (Elastic Stack)

Для централизованного сбора и анализа логов системы используются инструменты Elastic Stack.

Схема сбора логов:

_images/elk_architecture_2.png

Filebeat — служба, считывающая логи из файлов

Logstash — приложение первичной обработки данных

Elasticsearch — база данных с поисковым движком

Kibana — web-интерфейс

Конфигурация Logstash, Elasticsearch, Kibana

На данный момент приложения запущены на сервере 172.28.1.57

http://172.28.1.57:9200 - API Elasticsearch

http://172.28.1.57:5601 - Kibana


Приложения запускаются сервисом Docker Compose.

Структура каталогов и файлов:

/opt
└── elk
├── docker-compose.yml
├── postgresql-42.2.6.jar
├── data
└── settings
├── logstash.yml
├── pipelines.yml
├── filebeat.config
├── postgres.config
├── .logstash_jdbc_last_run
├── startup.options
├── jvm.options
└── log4j2.properties

Для запуска на новом сервере:

1) установить Docker Compose

2) создать папки, скоприровать файлы и выдать права доступа к ним

docker-compose.yml - файл конфигурации Docker Compose

postgresql-42.2.6.jar - jdbc драйвер postgresql, необходим для плагина импорта данных из базы Оркестратора


/data - каталог данных Elasticsearch

Создать каталог, установить принадлежность группе 1000 и выдать полные права:

sudo mkdir data

sudo chmod g+rwx data

sudo chgrp 1000 data

В файле sysctl.conf прописать параметр ядра vm.max_map_count=262144

$ grep vm.max_map_count /etc/sysctl.conf vm.max_map_count=262144

Информация по запуску Elasticsearch в докере: https://www.elastic.co/guide/en/elasticsearch/reference/7.3/docker.html


/settings - содержит конфигурационные файлы Logstash:

logstash.yml logstash.yml - конфигурация Logstash

pipelines.yml - конфигурация пайпланов

filebeat.config - конфигурация пайплайна сбора данных из лог-файлов

postgres.config - конфигурация пайплайна импорта данных из базы Оркестратора

.logstash_jdbc_last_run - файл, содержащий дату последнего изменения базы Оркестратора (создастся автоматически)

startup.options - стартовые параметры запуска

jvm.options - конфигурация JVM

log4j2.properties - параметры логгирования

Подробнее о конфигурации Logstash: https://www.elastic.co/guide/en/logstash/current/configuration.html

Примечание

При запуске на новом сервере нужно исправить адрес коннекта к базе в файле postgres.config

Служба Filebeat

На данный момент служба запущена на машине с Win10 - 172.28.0.134

Агенты Filebeat нужно запускать на тех машинах, с которых планируется собирать логи.

На Win10 агент запускается следующим образом:

1) скачать zip-архив с официального сайта, распаковать в нужную директорию

2) установить filebeat как службу

Выполнить в PowerShell:

PS > cd 'C:\Program Files\Filebeat'
PS C:\Program Files\Filebeat> .\install-service-filebeat.ps1

Предварительно исправить пути в файле install-service-filebeat.ps1

3) исправить конфигурационный файл filebeat.yml

В нем нужно указать директории, откуда считывать логи, паттерн начала новой записи, указать logstash в выходном канале.

Пример файла: filebeat.yml

4) запустить службу через «Панель управления»

Подробная инструкция по запуску и конфигурации: https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html

Kibana - инструмент визуализации данных

http://172.28.1.120:5601

Чтобы визуализировать сохраненные данные, нужно указать шаблон индекса.

Для этого нужно в кибане открыть вкладку Management и добавить Index Pattern вида filebeat-7.2.0-*

После этого во вкладке Discover можно просматривать сохраненные записи.

В дальнейшем эти данные можно визуализировать в виде диаграмм и объединять их в dashboards.


Перенос сохраненных визуализаций и дашбордов из одного экземпляра кибаны в другой:

Экспорт: https://www.elastic.co/guide/en/kibana/7.x/dashboard-api-export.html

Импорт: https://www.elastic.co/guide/en/kibana/7.x/dashboard-import-api.html

После импорта данных нужно будет исправить идентификаторы Index Pattern у всех визуализаций. Веб интерфейс сам предложит поменять Index Pattern при открытии визуализации.

Узнать идентификаторы Index Pattern-ов можно запросом:

GET .kibana/_search?q=type:index-pattern&size=100

Рекомендации для сохранения логов в файлы

  1. важные для сбора лог-файлы нужно хранить в конкретной директории;
  2. другие логи нужно вынести в другую папку или их расширение должно отличаться;
  3. расширение лог-файлов не должно удаляться или изменяться;
  4. время в логах писать по UTC.