Настройка минимального ELK (Elastic стека) для сбора логов приложения или web сервера.

Не для кого не секрет, что удобное, централизованное место сбора и обработки логов в наше время является хорошим тоном при построение архитектуры для вашего приложения и вашей команды разработчиков.

Часто встречаться проекты с очень небольшими бюджетами и маленькими инфраструктурами. Расчитывать такие проекты на большой распределенный кластер Elastic — не могут, т.к. стек очень требователен к ресурсам: оперативной памяти (java такая java), кол-во нод в кластере (минимум 3), дисковое пространство (для реплицирования индексов) и т.д. …

Я предлагаю рассмотреть вариант бюджетного Elastic c Kibana и собирать логи, к примеру, от web сайта — забирать nginx access логи c помощью Filebeat.

Поднимать будем в докере, код конфигурационных файлов и docker-compose файл ниже:

Обращаем внимание на версию ELK. Также внимательно к параметру ES_JAVA_OPTS — сколько оперативной памяти будет выделено для контейнера с elastic.

Файлы конфигов

Запускаем наш стек

Имеем два контейнера:

На нашем корневом сервере установим nginx и создадим vhost файл для доступа к Kibana, а также настроим web авторизацию для Kibana которая будет находиться внутри данного конфига nginx

Сгенерируем для пользователя админ хеш пароля и положим содержимое в файл /etc/nginx/.htpasswd

Мониторинг нашего кластера, будет показывать yellow state, это как раз и связано с тем, что у нас всего 1 сервер.

Теперь преступим к установке Filebeat, для debian качаем deb файл и устанавливаем.

Не забываем включить в автозагрузку и запустить сервис.

Включим модуль для логирования nginx

Пропишем в файле конфигурации путь к лог файлам

Основной файл конфигурации Filebeat на данной ноде, в данном файле также можно настроить логирование дополнительно, к пример у от вашего приложения myappname

Перезагружаемся

Выполним команду и проверим, что у нас есть соединение с Elastic.

После всего проделанного наши логи успешно приезжаю и можно строить уже различные графики, фильтры, дашборды 😉

Добавить комментарий

Ваш адрес email не будет опубликован.