Как подключить мониторинг ELK в облаке и настроить удаленные узлы


Автор: Михаил Волынов

Эта статья поможет вам установить сервер мониторинга ELK и подключить к нему filebeat-агенты для логов приложения Nginx, а также познакомит с некоторыми возможностями Kibana для работы с логами

ELK — это мощный набор инструментов для эффективного решения широкого спектра задач сбора, хранения и анализа данных:

  • Elasticsearch – решение для полнотекстового поиска, построенное поверх Apache Lucene и имеющее дополнительные удобства

  • Logstash – утилита для сборки, фильтрации и последующего перенаправления в конечное хранилище данных

  • Kibana — приложение, позволяющее брать/искать данные по Elasticsearch и строить наглядные графики

Схема стенда

Мы поднимем сервер ELK в облаке Mail.Ru Cloud Solutions и подключим к нему агенты мониторинга Nginx на удаленных узлах


(источник: www.digitalocean.com) 

В данной статье будем считать, что у нас есть несколько узлов, на которых необходимо настроить Nginx для экспорта логов в ELK. Чтобы обеспечить возможность взаимодействия между машинами, эти узлы должны быть объединены в одну сеть

Подключение сервера ELK в Marketplace

  1. Выполните быстрый запуск ELK Stack
  2. Запомните IP-адрес инстанса, имя и пароль пользователя для доступа к Kibana. Они понадобятся позже, при проверке функциональности на узле c ELK
  3. Подключитесь к инстансу по ssh, используя pem-файл. Для этого выполните команду:
ssh -i /path/to/key.pem ubuntu@<instance_ip>
  1. Установите плагины ingest-geoip и ingest-user-agent для Elasticsearch, они необходимы для совместной работы Kibana и логов Nginx. Для этого, находясь в папке с установленным elasticsearch (по умолчанию для Ubuntu — /usr/share/elasticsearch/), выполните команды:
bin/elasticsearch-plugin install ingest-geoip
bin/elasticsearch-plugin install ingest-user-agent
  1. Чтобы подключить установленные модули, перезапустите Elasticsearch, выполнив команду:
sudo service elasticsearch restart


Настройки на удаленных узлах

  1. Подключитесь к удаленному узлу, который вы хотите подключить к ELK
  2. Поскольку мы создаем связь ELK и Nginx, установите Nginx из стандартных репозиториев Ubuntu, выполнив команду:
sudo apt update
sudo apt install nginx
  1. Для анализа логов в реальном времени установите Filebeat
  2. Откройте конфигурационный файл /etc/filebeat/filebeat.yml для редактирования и укажите в нем свои настройки:

  • <es_url> — IP-адрес elasticsearch с номером порта 9200
  • <kibana_url> — IP-адрес инстанса с Kibana

Примеры для <es_url>:

  • прямой адрес:
output.elasticsearch:   
hosts: ["https://localhost:9200"]
  • явное указание протокола:
output.elasticsearch:  
hosts: ["localhost:9200"]   
protocol: "https"
  • множественное указание хостов:
output.elasticsearch:   
hosts: ["10.45.3.2:9220", "10.45.3.1:9200"]   
protocol: https


Примечание.

Подробнее о настройках в файле filebeat.yml читайте тут

  1. Включите модуль Nginx для Filebeat, выполнив команду:
sudo filebeat modules enable nginx
  1. Чтобы гибко настроить filebeat, отредактируйте файл /etc/filebeat/modules.d/nginx.yml. Вид этого файла по умолчанию:
- module: nginx
  # Access logs
  access:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will chose the paths depending on your OS.
    #var.paths:

  # Error logs
  error:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths
  1. Если дашборды для Kibana не были настроены ранее, выполните их загрузку, используя команду:
sudo filebeat setup
  1. Для запуска Filebeat выполните команду:
sudo service filebeat start

Один узел настроен. Дополнительные узлы настраиваются аналогично

Проверка функциональности на узле с ELK

  1. Чтобы удобно и эффективно работать с логами, используя соответствующие IP-адрес инстанса, имя и пароль пользователя (используйте https), подключитесь к Kibana:


Примечание.

В MCS Marketplace используются самоподписанные сертификаты. Чтобы пользоваться SSL, добавьте сертификат в исключения или используйте свой сертификат

  1. Чтобы убедиться, что все верно настроено, перейдите в раздел Logging. Для этого нажмите кнопку Add log data и выберите подраздел Nginx logs

Если все сделано верно, при нажатии на кнопку Check data появится сообщение Data successfully received from this module

Работа с дашбордами Kibana

Дашборды Kibana позволяют просмотреть детализацию по логам Nginx с удаленного узла и при необходимости выполнить фильтрацию и поиск. Поэтому работа с дашбордами имеет смысл только при наличии логов Nginx, доступных для просмотра

В боковом меню выберите пункт Dashboard. В результате отобразится стандартный Dashboard для Nginx Filebeat с множеством различных данных о запросах. Он позволяет строить наглядные диаграммы, а также показывает карту мира для IP-адресов, обращавшихся к серверу

Чтобы просмотреть список всех запросов к серверу за период, указанный в правом верхнем углу, нажмите кнопку Nginx access and error logs

Чтобы просмотреть детализацию по запросу, нажмите треугольник в левой части соответствующей строки


Для быстрого поиска можно использовать фильтрацию, нажав кнопку Add filter слева вверху. 

При настройке фильтра нужно выбрать поле из представленных и обозначить условие поиска (например, на скриншоте ниже все запросы с кодом ответа 200)