В данном разделе описан процесс настройки и запуска утилит для сбора данных по платформе ELIS и их отображения в графическом виде для осуществления мониторинга.
Работа с ELK
ELK — это аббревиатура, используемая для описания стека из трех продуктов: Elasticsearch, Logstash и Kibana. ELK является инструментом сбора и аналитики информации.
- Elasticsearch (ES) — масштабируемая утилита полнотекстового поиска и аналитики, которая позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы данных. Как правило, ES используется в качестве NoSQL-базы данных для приложений со сложными функциями поиска.
- Logstash — средство сбора, преобразования и сохранения в общем хранилище событий из файлов, баз данных, логов и других источников в реальном времени.
- Kibana — визуальный инструмент для Elasticsearch, используемый для взаимодействия с данными, которые хранятся в индексах ES. Веб-интерфейс Kibana позволяет быстро создавать и обмениваться динамическими панелями мониторинга, включая таблицы, графики и диаграммы, которые отображают изменения в ES-запросах в реальном времени.
В рамках единой ELK-платформы все вышеперечисленные компоненты взаимодействуют следующим образом:
- Logstash представляет собой конвейер обработки данных (data pipeline) на стороне сервера, который одновременно получает данные из нескольких источников. Здесь выполняется первичное преобразование, фильтрация, агрегация или парсинг логов, а затем обработанные данные отправляется в Elasticsearch.
- Elasticsearch играет роль ядра всей системы, сочетая функции базы данных, поискового и аналитического движков.
- Kibana позволяет визуализировать данные ES, а также администрировать базу данных.
Запуск ELK
Для правильной работы ELK необходимо в конфигурационном файле vars/default.yml для параметра elk: enable: выставить флаг true и выполнить ansible-playbook install для каждого компонента платформы.
# Параметры установки сервисов логирования (Elasticsearch + Logstash + Kibana). elk: # Нужно ли добавлять в платформу appender, отправляющий логи в logstash. # В нем нет необходимости, если ELK не развернут или не настроен; это лишь спровоцирует сообщения об ошибках отправки # в логах платформы. enable: true # Имя (IP-адрес) сервера, на котором будет развернут ELK. # По умолчанию совпадает с 'iot.serverName', что предполагает установку рядом с платформой (на том же хосте). # В таком случае хосты в инвентаре в группах [iot] и [monitoring] должны совпадать. serverName: "{{ iot.serverName }}" # Директория для установки системы логирования. installDir: /storage/elk
Запуск ELK на сервере с ELIS.
sudo ansible-playbook install_elk.yml
Откройте веб-браузер. В адресной строке введите IP-адрес сервера и порт, указанный в конфигурации Kibana.
Пример: [домен/ip]:5601
Откроется приветственная страница.
Для авторизации используются следующие учетные данные:
Логин: elastic
Пароль: MyPw123
Просмотр полученных данных в Kibana
Откройте меню в левом верхнем углу. В секции Management выберите Stack Management.
Далее в боковом меню выберите секцию Index patterns. Нажмите кнопку Create Index Pattern.
В поле Index pattern name опишите шаблон iot-core*, в который попадут все индексы, начинающиеся с «iot-core».
В поле timestamp выберите значение Timestamp field для фильтрации данных по дате и времени. Нажмите на кнопку Create index pattern.
После создания шаблона индексов в окне отобразится информация об имеющихся полях, типе данных и возможности делать агрегацию по этим полям.
Для просмотра данных, полученных на основе созданного шаблона, в секции Analytics бокового меню выберите Discover.
В правой части экрана можно выбрать временной интервал, данные за который необходимо отобразить.
В списке Available fields в левой части экрана можно выбрать шаблон индекса или поля для отображения.
Для визуализации данных перейдите в секцию Analytics бокового меню и выберите Dashboard.
Нажмите Create new dashboard. Далее нажмите на кнопку Create visualization.
Для построения визуализации перетащите необходимый параметр из списка Available fields в выделенную область.
Пример результата визуализации представлен на рисунке ниже:
Работа с Grafana
Grafana — это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных. Grafana позволяет пользователям создавать дашборды с панелями, каждая из которых отображает определенные показатели в течение установленного периода времени. Каждый дашборд универсален, поэтому его можно настроить для конкретного проекта или с учетом любых потребностей разработки и/или бизнеса.
Запуск Grafana
Запуск Grafana на сервере с ELIS:
sudo ansible-playbook install_monitoring.yml
Откройте веб-браузер. В адресной строке введите IP-адрес сервера и порт, указанный в конфигурации grafana_port (по умолчанию порт 3000).
Пример: [домен/ip]:3000
В результате откроется приветственная страница.
Для авторизации используются следующие учетные данные:
Логин: admin
Пароль: admin
Задайте новый пароль и подтвердите его. Нажмите кнопку Submit.
Просмотр полученных данных в Grafana
Войдите в профиль Grafana, нажмите на меню в левом верхнем углу и перейдите в секцию Dashboards.
Для просмотра данных по состоянию сервера перейдите на дашборд JVM (Micrometer):
Для просмотра данных по пропускной способности платформы перейдите на дашборд Micrometer Spring Throughput:
В Grafana есть возможность задавать временные интервалы для отображаемых графиков. Для этого в правом верхнем углу нажмите на иконку с часами, после чего выберите временной интервал или задайте свой.
Распределенное развертывание сервисов мониторинга
Чтобы осуществить развертывание платформы на одном сервере, а сервисов мониторинга (Grafana и ELK) — на другом, необходимо соответствующим образом скорректировать /etc/ansible-iot-1.33/vars/default.yml.
В данной инструкции:
- сервер_1 — сервер, на котором установлена платформа ELIS;
- сервер_2 — сервер, на котором установлены сервисы мониторинга (ELK, Grafana).
Необходимо отредактировать /etc/ansible-iot-1.33/vars/default.yml на обоих серверах.
Редактирование /etc/ansible-iot-1.33/vars/default.yml для сервер_1:
- Установите корректный IP-адрес или доменное имя для сервер_1 в разделе iot в поле server_name;
- Установите в разделе monitoring поле server_name для Grafana (раздел elk для ELK), корректный IP-адрес или доменное имя для сервер_2.
Редактирование /etc/ansible-iot-1.33/vars/default.yml для сервер_2:
- Установите корректный IP-адрес или доменное имя для сервер_1 в разделе iot в поле server_name;;
- Установите в разделе monitoring поле server_name для Grafana (раздел elk для ELK), корректный IP-адрес или доменное имя, который ранее указывали для сервер_2.