Описание системы мониторинга

Мониторинг Offline ELM обеспечивается с помощью следующих сервисов:

  • Influxdb — хранение данных о хосте и Docker-контейнерах (версия 2.7.5)
  • Telegraf — получение данных о хосте и Docker-контейнерах и сохранение в БД Influxdb, запускается совместно с сервисами ELM (версия 1.30.0)
  • Prometheus — получение данных о метриках ELM Server (версия 2.51.0)
  • Grafana — отображение данных мониторинга в web-интерфейсе (версия 10.4.1)
  • Nginx-exporter сервис для сбора метрик с сервера nginx (web-ui) и преобразования их в формат для считывания Prometheus (версия 1.1.0). Мониторинг Offline ELM предоставляет возможности по наглядному отслеживанию как состояния самого хоста (загрузка ЦП, оперативной памяти хоста, потребление ресурсов контейнерами), так и работы системы лицензирования Offline ELM как таковой (фиксирование запросов лицензии, ошибок работы, состояния сертификатов и т. д.). Помимо этого предоставляются возможности по оповещению о различных состояниях Offline ELM (оповещения о состоянии лицензии, контейнеров, USB-токена).

Конфигурационные файлы сервисов мониторинга

Файлы, используемые для конфигурации мониторинга

ПутьОписание
elm-monitoring-data/grafana/provisioning/dashboards

Перечень JSON файлов, описывающих содержимое dashboard страниц, доступных для просмотра в Grafana.
Содержимое dashboard страницы можно получить в виде JSON файла, перейдя в настройки "Dashboard settings" → "JSON Model".
Файл dashboard.yml описывает местоположение JSON моделей dashboard страниц, которые создаются при первом запуске контейнера с Grafana.

elm-monitoring-data/grafana/provisioning/datasourcesФайл datasource.yml описывает источники данных мониторинга для отображения в Grafana. 
elm-monitoring-data/grafana/provisioning/alertingПеречень файлов с описанием методов оповещения пользователей с помощью Grafana:
  • email.yml описывает способ оповещения с помощью отправки электронного письма на указанные адреса.
  • telegram.yml описывает оповещения с помощью отправки сообщения пользователям Telegram через Telegram-бота.
  • alert_rules.yml описывает правила генерации оповещения, которые будут оправлены на email и/или в Telegram.
  • alert_policies.yml описывает политику оповещения.
elm-monitoring-data/prometheus/prometheus.ymlВ файле prometheus.yml перечислены адреса Spring Actuator для получения значений метрик, поддерживаемых в ELM.
По умолчанию, при запуске ELM через docker-compose, адресами являются названия сервисов, перечисленных для запуска в файлах docker-compose.yml.
elm-offline-data/config/telegraf/telegraf.confФайл с описанием данных системы, доступных для получения контейнером telegraf и указанием адреса БД influxdb, куда сохранять полученные данные.
elm-offline-data/.envФайл для установки переменных окружения, связанных с сервером Offline ELM.
elm-monitoring-data/.envФайл для установки переменных окружения, связанных с сервисами мониторинга.

Переменные окружения мониторинга ELM

Переменные окружения устанавливаются в файле .env. После их изменения требуется перезапуск контейнеров.

Переменные окружения делятся на два типа:

1. Устанавливаются для сервера Offline ELM в файле .env, который располагается в директории с конфигурационными файлами сервера (по умолчанию elm-offline-data/.env).

Название параметраОписание параметраЗначение по умолчанию

MONITORING_SERVER_ADDRESS

Адрес, на который будет проброшен actuator

127.0.0.1

MONITORING_SERVER_PORT

Порт, на который будет вывешиваться actuator

8080
MONITORING_SERVER_USERNAME

Имя пользователя для авторизации на actuator

admin
MONITORING_SERVER_PASSWORDПароль для авторизации на actuatorpassword
ELM_INSTANCE_IDОпределяет основной или резервный сервер ELMnode1

2. Устанавливаются непосредственно в директории с конфигурационными файлами сервисов мониторинга в файле .env  (по умолчанию elm-monitoring-data/.env) .

Название параметраОписание параметраЗначение по умолчанию

MONITORING_INFLUXDB_ADDRESS

Адрес, на который будет проброшен influxdb

127.0.0.1

MONITORING_INFLUXDB_PORT

Порт, на который будет вывешиваться influxdb

8086

MONITORING_GRAFANA_ADDRESS

Адрес, на который будет проброшена Grafana

0.0.0.0

MONITORING_GRAFANA_PORT

Порт, на который будет вывешиваться Grafana

3000
PROMETHEUS_RETENTION_TIMEВремя хранения метрик prometheus90d
PROMETHEUS_RETENTION_SIZEОграничение хранения метрик prometheus по размеру50GB
SMTP_HOSTАдрес SMTP-сервера-
SMTP_NAMEИмя пользователя-
SMTP_PASSWORDПароль-
SMTP_FROM_ADDRESSПочта, с которой будут рассылаться оповещенияadmin@grafana.localhost
SMTP_FROM_NAME

Имя, используемое для рассылки оповещений 

Grafana
SMTP_SKIP_VERIFYПропустить проверку SSL-сертификата сервера false
SMTP_CERT_FILEФайл сертификата для настройки защищенного SSL-соединения-
SMTP_KEY_FILEФайл ключей для настройки защищенного SSL-соединения-
NOTIFICATION_EMAIL_ADDRESSESПеречень адресов для рассылки e-mail оповещений, разделенных символом ';'

example@email.com

user1@mail.com

user2@mail.com

NOTIFICATION_TELEGRAM_BOT_TOKENТокен для доступа к Telegram-боту для рассылки оповещений,
можно получить, создав бота с помощью запроса к Telegram-боту @BotFather
-
NOTIFICATION_TELEGRAM_USER_IDИдентификатор пользователя для оповещения,
можно получить с помощью запроса к Telegram-боту @userinfobot
-

Запуск системы мониторинга Offline ELM

Сервис для мониторинга ELM представлен стеком сервисов с конфигурационными файлами, который можно запустить, используя docker-compose файл. Файлы системы мониторинга в этом архиве находятся в директории elm-monitoring-data-1.4 и имеют следующую структуру:

Структура файлов системы мониторинга Offline ELM
.
├── docker-compose.yml
├── .env
├── grafana
│   └── provisioning
│       ├── alerting
│       │   ├── alert_notification.yml
│       │   ├── alert_policies.yml
│       │   └── alert_rules.yml
│       ├── dashboards
│       │   ├── dashboard.yml
│       │   ├── elm_alert_metrics.json
│       │   └── elm_monitor.json
│       ├── datasources
│       │   └── datasource.yml
│       └── notifiers
│           ├── email.yml
│           └── telegram.yml
└── prometheus
    └── prometheus.yml

Сервис Telegraf запускается вместе с сервером Offline ELM, параметры его запуска прописаны в docker-compose.yml файле. Конфигурационные файлы данного сервиса расположены в папке config

Структура папки config, содержащей конфигурационные файлы Telegraf
.
├── config
│   └── telegraf
│       └── telegraf.conf
└── docker-compose.yml

Для запуска системы мониторинга Offline ELM требуется произвести следующие шаги:

1. Перейти в директорию с конфигурационными файлами мониторинга (по умолчанию elm-monitoring-data-1.4).

2. Запустить систему мониторинга Offline ELM командой:

Команда запуска мониторинга Offline ELM
$ docker compose up -d

3. Убедиться, что все контейнеры Offline ELM успешно запустились, используя команду:

Команда проверки статуса контейнеров мониторинга Offline ELM
$ docker compose ps
Пример вывода команды при успешном запуске всех контейнеров мониторинга Offline ELM
$ docker compose ps
NAME                      IMAGE                                          COMMAND                                                                                                                                                                                                                 SERVICE      CREATED          STATUS          PORTS
monitoring-Grafana-1      nexus.eltex.loc:4430/Grafana/Grafana:7.3.2     "/run.sh"                                                                                                                                                                                                               Grafana      20 seconds ago   Up 16 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
monitoring-influxdb-1     nexus.eltex.loc:4430/library/influxdb:1.8.3    "/entrypoint.sh influxd"                                                                                                                                                                                                influxdb     20 seconds ago   Up 16 seconds   8086/tcp
monitoring-prometheus-1   nexus.eltex.loc:4430/prom/prometheus:v2.23.0   "/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --web.console.libraries=/usr/share/prometheus/console_libraries --web.console.templates=/usr/share/prometheus/consoles"   prometheus   20 seconds ago   Up 17 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
monitoring-telegraf-1     nexus.eltex.loc:4430/library/telegraf:1.18.1   "/entrypoint.sh telegraf"                                                                                                                                                                                               telegraf     20 seconds ago   Up 16 seconds   8092/udp, 8125/udp, 8094/tcp

Теперь с системой мониторинга Offline ELM можно взаимодействовать через web-интерфейс Grafana. Более подробно работа с интерфейсом мониторинга описана в разделе Web-интерфейс системы мониторинга.

Остановка системы мониторинга

Для остановки системы мониторинга Offline ELM требуется произвести следующие шаги:
1. Перейти в директорию с конфигурационными файлами мониторинга (по умолчанию elm-monitoring-data-1.4).
2. Выполнить команду:

Команда остановки мониторинга Offline ELM
$ docker compose down
Пример вывода команды при успешной остановке всех контейенров мониторинга Offline ELM
elm@elm-server:/opt/elm/monitoring$ docker compose down 
[+] Running 4/4
 ⠿ Container monitoring-influxdb-1    Removed                                                                                                                                                                   2.1s
 ⠿ Container monitoring-prometheus-1  Removed                                                                                                                                                                   1.8s
 ⠿ Container monitoring-telegraf-1    Removed                                                                                                                                                                   1.6s
 ⠿ Container monitoring-Grafana-1     Removed  
elm@elm-server:/opt/elm/monitoring$

Если сервисы мониторинга не запущены, в частности InfluxDB, в логах Telegraf появятся ошибки. Лог с ошибками — результат того, что Telegraf не может подключиться к InfluxDB. Пример текста ошибки:

"telegraf | 2024-08-20T15:29:16+07:00 E! [agent] Error writing to outputs.influxdb_v2: failed to send metrics to any configured server(s)"

Настройка удаленного мониторинга

Сервисы мониторинга можно запустить совместно с Offline ELM на одном хосте. В таком случае дополнительной настройки подключения не требуется, однако рекомендуется запускать сервисы мониторинга на отдельном хосте. Для этого необходимо выполнить следующие настройки:

1. Настроить переменные окружения в файле .env (elm-offline-data/.env) на стороне сервера Offline ELM.  А именно:

  • адрес MONITORING_SERVER_ADDRESS сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик. Так как дефолтное значение переменной "MONITORING_SERVER_ADDRESS=127.0.0.1", без её установки мониторинг сервера Offline ELM не будет доступен при запуске сервисов мониторинга на отдельном хосте.
  • порт MONITORING_SERVER_PORT сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик;
  • логин и пароль пользователя (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD), которые будут использоваться Prometheus для авторизации, InstanceID ноды.

2. В конфигурационном файле Telegraf telergaf.conf (elm-offline-data/config/telegraf/telegraf.conf) в разделе [[outputs.influxdb_v2]] необходимо указать адрес и порт сервиса мониторинга influxdb через переменную urls.

telergaf.conf
$ diff telegraf_old.conf telegraf.conf
<   urls = ["http://influxdb:8086"]
---
>   urls = ["http://192.168.1.2:8086"]

 3. В конфигурационном файле prometheus.yml (elm-monitoring-data/prometheus/prometheus.yml) изменить адрес "targets" на адрес и порт, указанные в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT на сервере Offline ELM в .env файле. 

prometheus.yml target
$ diff prometheus_old.yml prometheus.yml 
<       - targets: ['elmi-offline-server:8097']
---
>       - targets: ['192.168.1.1:8097']

4. В конфигурационном файле prometheus.yml (elm-monitoring-data/prometheus/prometheus.yml) изменить при необходимости данные логина и пароля пользователя для подключения к актуатору сервера Offline ELM, если для него в .env файле были указаны иные значения (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD).

prometheus.yml basic_auth
basic_auth:
      username: 'user1'
      password: 'password1'

5. В docker-compose.yml файле для контейнера nginx-exporter, который собирает информацию о web-сервере, указать адрес и порт данного web-сервера, который запускается совместно с основным сервером Offline ELM в контейнере elmi-offline-web-ui. Порт web-сервера может быть изменен в .env файле с помощью переменной окружения ELM_WEB_UI_PORT

docker-comopse.yml nginx-exporter
$ diff docker-compose_old.yml docker-compose.yml 
<      - https://elmi-offline-web-ui:80/nginx_status
---
>      - https://192.618.1.1:80/nginx_status

6. В elm-monitoring-data/.env файле установить переменную MONITORING_INFLUXDB_ADDRESS, которая указывает, на каком адресе будет доступен сервис InfluxDB. 

7. Необходимо перезапустить сервер Offline ELM и сервисы мониторинга.

Перезапуск контейнеров
$ docker compose down
$ docker compose up -d

8. Зайдите в web-интерфейс Grafana. Для панелей ELM USB token alert, Web UI Status, Licensing state, Licensing expiry, Certificate state, Certificate expiry выполните следующие действия:

8.1. На панели через меню с 3 вертикальными точками нажмите "Edit".

8.2. Для панелей, отображающих даты, под самой панелью перейдите в раздел "Transform data"в выпадающем меню "Operation", как и для панели состояния нужно выбрать поле, значение "instance" в котором будет соответствовать указанному IP-адресу в файле конфигурации prometheus.yml.

Рисунок 12 — Выбор данных в "Transform data"

8.3. В "Value options" в выпадающем меню "Fields" нужно выбрать актуальное поле, где значение "instance" будет соответствовать указанному IP-адресу в файле конфигурации prometheus.yml.

Рисунок 13 — Выбор источника данных

Web-интерфейс системы мониторинга

Авторизация

После запуска системы мониторинга Offline ELM администратору системы мониторинга становится доступен web-интерфейс Grafana по адресу http://<MONITORING_GRAFANA_ADDRESS>:<MONITORING_GRAFANA_PORT>/.

  • <MONITORING_GRAFANA_ADDRESS> — это адрес сервера Offline ELM в сети, установленный в переменной окружения MONITORING_GRAFANA_ADDRESS (значение по умолчанию 0.0.0.0); 
  • <MONITORING_GRAFANA_PORT> — порт сервиса Grafana, установленный в переменной окружения MONITORING_GRAFANA_PORT (значение по умолчанию 3000). 

Авторизоваться можно по умолчанию с логином admin и паролем password.

Рисунок 14 — Страница авторизации Grafana

После авторизации в web-интерфейсе Grafana для доступа к данным мониторинга с Offline ELM требуется перейти в раздел "Dashboards"

Для пользователя доступны два дашборда:

  1. elm_alert_metrics — информация о состоянии метрик сервера Offline ELM.

  2. elm_monitoring — информация о состоянии хоста.

Рисунок 15 — Страница "Dashboards", выбор раздела мониторинга

Панель мониторинга "elm_alert_metrics"

Панель мониторинга "elm_alert_metrics" отображает информацию о состоянии внутренних метрик Offline ELM, а также web-интерфейса ELM.

Рисунок 16 — Дашборд "elm_alert_metrics" 

Метрики сервера Offline ELM

Наименование дашборда

Наименование в Grafana

Наименование в Grafana

Описание

Наличие алерта
Состояние контейнеров 
Docker container healthcheck statedocker_container_healthcontainer elmi-offline-db healthcheck state codeСостояние контейнера elmi-offline-db+
docker_container_healthcontainer elmi-offline-server healthcheck state codeСостояние контейнера elmi-offline-server
Ошибки БД и отказ в обслуживании сервера
DB errors and denial of service ELMdatabaseErrorDB errorsОшибка доступа к БД (Server)-
serviceDenialDevice service denialОтказ в обслуживании (отклонение запросов из-за загруженности сервера)-
Запрос лицензий
ELM license requestlicenseRequestLicense requestЗапрос файла лицензии от устройства/ПО-
licenseRequestFailedLicense request errorsОшибка получения файла персональной лицензии устройством-
Ошибки аутентификации и обращения от неподдерживаемых устройств
Authentication errors ELMauthFailedAuth failed requestОшибка аутентификации от устройства или ПО-
unsupportedAuthRequestUnsupported auth requestЗапрос аутентификации от устройств или ПО, которое не поддерживается лицензией-
Ошибки доступа к USB-токену
ELM Token access errorstokenAccessErrorToken access errorsОшибки доступности USB-токена+
Блокировка IP-адреса системой безопасности
ELM Block IP addressesblockIpIP block

Автоматическая блокировка IP-адреса

-
Запрет доступа по IP

ELM Access denied by IP addresses

ipAccessDeniedIP access deniedЗапрет доступа по IP

-


Состояние токена 
ELM USB token StatustokenStateToken stateСостояние доступности USB-токена-
Состояния лицензии
Certificate statecertificateStateCertificate state

Состояние срока действия сертификата.

  • OK — подсвечивается зеленым цветом, с сертификатом все в порядке;
  • Certificate expired — подсвечивается красным цветом, срок действия сертификата истек;
  • Certificate not initialized — подсвечивается серым цветом, сертификат не инициализирован.

Certificate expiry datecertificateExpiryCertificate expiry dateДата окончания срока действия сертификата-
Licensing statelicensingStateLicensing state

Состояние срока действия лицензии.

  • OK — подсвечивается зеленым цветом, с лицензий все в порядке;
  • Update license — подсвечивается желтым цветом, наступил период оповещения о продлении лицензии в соответствии с настройкой licenseRenewalNotificationPeriodDays;
  • License expired — подсвечивается красным цветом, когда срок действия лицензии истек;
  • License not initialized — подсвечивается серым цветом, лицензия не инициализирована.
+
Licensing expiry datelicensingExpiryLicensing expiryДата окончания срока действия лицензии-

Метрики web-сервера

Наименование дашборда

Наименование в Grafana

Описание

Наличие алерта

ELM active WEB connections

active

Текущее число активных клиентских соединений, включая Waiting-соединения

-

reading

Текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса

waiting

Текущее число бездействующих клиентских соединений в ожидании запроса

writing

Текущее число соединений, в которых nginx в настоящий момент отвечает клиенту

ELM processed WEB connections

handled

Суммарное число обработанных соединений. Как правило, значение этого параметра такое же, как accepted, если не достигнуто какое-нибудь системное ограничение

-

accepted free

Суммарное число принятых клиентских соединений

total requests

Суммарное число клиентских запросов

Web UI Status

nginx_up

Текущее состояние web-сервера

-

Панель мониторинга "elm_monitor"

Панель мониторинга "elm_monitor" предоставляет администратору Offline ELM общую информацию о хосте, в котором запущен Offline ELM, а также информацию о Docker-контейнерах Offline ELM.

Рисунок 17 — Панель мониторинга "elm_monitor"

На данной панели мониторинга представлена следующая информация:

  • Средняя загруженность системы (за 1/5/15 минут);
  • Количество ядер процессора;
  • Загруженность процессора (в процентах);
  • Количество используемой/общей оперативной памяти;
  • Загрузка процессора Docker-контейнерами ELM;
  • Использование памяти Docker-контейнерами ELM и JVM;
  • Входящий и исходящий сетевой трафик Docker-контейнеров ELM (прирост за каждые 10 секунд);
  • Информация о Docker-контейнерах ELM:
    • имя сервиса;
    • идентификатор процесса;
    • код возврата (при работе контейнера — код 0);
    • время старта контейнера;
    • время работы контейнера;
    • флаг нехватки оперативной памяти;
    • проверка работоспособности сервисов и количество ошибок его проверки.

Алерты

На панели мониторинга "elm_alert_metrics" представлен список алертов:

  • Docker container healthcheck state (состояние Docker контейнеров Offline ELM) — информирование о состоянии контейнеров Offline ELM (elmi-offline-db, elmi-offline-server);
  • ELM Token access errors (состояние USB-токена) — информирование о проблемах с USB-токеном (например, USB-токен был извлечен);
  • License renewal alert (состояние лицензии) — информирование о необходимости продления лицензии в случае, если срок действия текущей лицензии подходит к концу. 

Рисунок 18 — Панель алертов

Система оповещений о событиях ELM

Оповещение пользователя осуществляется с помощью механизма оповещений сервиса Grafana на основе событий (алертов) системных метрик и метрик, передаваемых ELM.

По умолчанию доступны следующие типы оповещений:

  • рассылка с помощью E-mail;
  • отправка сообщений через Telegram-бота.

Оповещения предусмотрены для следующих алертов:

  • Docker container healthcheck state (состояние Docker контейнеров Offline ELM);

  • ELM Token access errors (состояние USB-токена);
  • License renewal alert (состояние лицензии).

Оповещения приходят в двух случаях:

  • появление проблемы (например, срок лицензии подходит к концу) — приходит оповещение с пометкой Firing;
  • разрешение проблемы (например, срок лицензии был продлен) — приходит оповещение с пометкой Resolved.

Настройка оповещений

Настройка параметров оповещений может осуществляться через интерфейс Grafana в разделе "Alerting" → "Notification policies".

Либо через указание переменных окружения в файле .env перед запуском сервиса мониторинга.

Доступные переменные окружения:

Название переменнойОписание
NOTIFICATION_EMAIL_ADDRESSESперечень адресов для рассылки e-mail оповещений, разделенных символом ';'
NOTIFICATION_TELEGRAM_BOT_TOKENтокен для доступа к Telegram-боту для рассылки оповещений
можно получить, создав бота с помощью запроса к Telegram-боту @BotFather
NOTIFICATION_TELEGRAM_USER_IDидентификатор пользователя для оповещения
можно получить с помощью запроса к Telegram-боту @userinfobot

При настройке оповещений с помощью e-mail также необходимо указать в .env файле параметры SMTP-сервера, через который должна осуществляться рассылка:

Название переменнойОписание
SMTP_HOSTадрес SMTP-сервера
SMTP_NAMEимя пользователя
SMTP_PASSWORDпароль
SMTP_FROM_ADDRESSпочта, с которой будут рассылаться оповещения 
SMTP_FROM_NAME

имя, используемое для рассылки оповещений 

SMTP_SKIP_VERIFYпропустить проверку SSL-сертификата сервера 
SMTP_CERT_FILEфайл сертификата для настройки защищенного SSL-соединения
SMTP_KEY_FILEфайл ключей для настройки защищенного SSL-соединения

Для проверки правильности настройки оповещений Grafana предоставляет возможность отправки тестовых оповещений. Для это необходимо перейти в раздел "Alerting""Contanct points".  У Contact point с названием "Email and telegram notification" нажать кнопку "View" (рисунок 19). Далее можно будет отправить тестовое оповещение в Telegram или на почту (рисунок 20).    

Рисунок 19 — Раздел "Alerting" → "Contact points" 

Рисунок 20 — Окно просмотра contact point

Мониторинг нескольких серверов Offline ELM

Функционал Offline ELM предполагает использование резервирования, т. е. применение двух серверов одновременно. Можно настроить мониторинг таким образом, чтобы получать всю необходимую информацию в одном месте об обоих серверах Offline ELM.

Конфигурирование сервисов мониторинга

На ноде2 в папке с конфигурационными файлами (elm-offline-data) выполнить следующие действия:

1. Настроить переменные окружения в файле .env (elm-offline-data/.env) на стороне сервера Offline ELM. А именно:

  • адрес MONITORING_SERVER_ADDRESS сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик. Так как дефолтное значение переменной "MONITORING_SERVER_ADDRESS=127.0.0.1", без её установки мониторинг сервера Offline ELM не будет доступен при запуске сервисов мониторинга на отдельном хосте;
  • порт MONITORING_SERVER_PORT сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик;
  • логин и пароль пользователя (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD), которые будут использоваться Prometheus для авторизации, InstanceID ноды.

2. В конфигурационном файле Telegraf telergaf.conf (elm-offline-data/config/telegraf/telegraf.conf) в разделе [[outputs.influxdb_v2]] необходимо указать адрес и порт сервиса мониторинга influxdb через переменную urls.

telergaf.conf
$ diff telegraf_old.conf telegraf.conf
<   urls = ["http://influxdb:8086"]
---
>   urls = ["http://192.168.1.2:8086"]

3. В elm-monitoring-data/.env файле установить переменную MONITORING_INFLUXDB_ADDRESS, которая указывает, на каком адресе будет доступен сервис InfluxDB. 

4. Для сбора метрик с двух нод необходимо в конфигурационном файле Prometheus указать адрес ноды2. В файле elm-monitoring-data/prometheus/prometheus.yml  в разделе"static_configs" добавить еще один "targets", указав адрес и порт ноды2 Offline ELM.

prometheus.yml добавление ноды2
static_configs:
      - targets: ['192.168.1.1:8097']
        labels:
          host: elmi-offline-server-node1
      - targets: ['192.168.2.1:8097']
        labels:
          host: elmi-offline-server-node2

5. В конфигурационном файле prometheus.yml (elm-monitoring-data/prometheus/prometheus.yml) изменить при необходимости данные логина и пароля пользователя для подключения к актуатору сервера Offline ELM, если для него в .env файле были указаны иные значения (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD).

prometheus.yml basic_auth
basic_auth:
      username: 'user1'
      password: 'password1'

6. Необходимо перезапустить сервер Offline ELM и сервисы мониторинга.

Перезапуск контейнеров
$ docker compose down
$ docker compose up -d

Настройка web-интерфейса

Изменения конфигурации, внесенные в Grafana, переключения между графиками разных нод могут применяться не сразу, а через определенный промежуток времени. Иногда этот интервал может достигать пяти минут.

Переключение между панелями двух нод выполняется с выбором соответствующей ноды в списке "Host".

Рисунок 21 — Выбор ноды

При переключении между нодами панели автоматически выбираются и переключаются на данные выбранной ноды. Однако следующие панели настроены только для node1:

  • Web UI Status

  • ELM USB token Status

  • Certificate state

  • Licensing state

  • Certificate expiry date

  • Licensing expiry date 

Для отображения данных node2 необходимо вручную создать для них панели. Выполните следующие шаги:

1. Cоздайте дубликат панели state. Для этого наведите на панель, с которой будете делать копию, нажмите на три появляющиеся вертикальные точки и в меню "More" выберите "Dublicate" (рисунок 22). 

Рисунок 22 — Создание дубликата

2. На панели-дубликате через то же меню с 3 вертикальными точками нажмите "Edit" и выполните следующие настройки (для лучшего понимания в скобках указаны обозначения параметров на рисунке 23):

Рисунок 23 — Выбор источника данных 

2.1. Поменяйте заголовок панели (Title) чтобы их отличать, например, "Certificate state node2" (1), при необходимости также поменяйте заголовок и для панели, с которой сделали копию.

2.2. В поле "Metrics browser" замените значение в кавычках с node1 на node2 (2).

2.3. Далее нажмите на "Run queries" (3), таким образом проверив, что данные указаны верно, и обновив информацию.

2.4. В "Value options" в выпадающем меню "Fields" нужно выбрать актуальное поле с "instanceID=node2" (4)

3. Нажмите сначала кнопку "Save", а затем синюю кнопку "Apply" в правом верхнем углу, на панели должно отобразиться текущее актуальное состояние метрики.

Для панелей, содержащих срок действия ("Certificate expiry date" и "Licensing expiry date"), настройка немного отличается. Для лучшего понимания в скобках указаны обозначения параметров на рисунке 24

3.1. Создайте дубликат панели, для этого наведите на панель, с которой будете делать копию, нажмите на три вертикальные точки и в меню "More" выберите "Dublicate".

3.2. На панели-дубликате через то же меню с 3 вертикальными точками нажмите "Edit".

3.3. Поменяйте заголовок панели (Title) чтобы их отличать, например, "Licensing expiry date node2" (1), при необходимости также поменяйте заголовок и для панели, с которой сделали копию.

3.4. В поле "Metrics browser" замените значение в кавычках с node1 на node2 (2).

Рисунок 24 — Изменение значения InstanceID 

4. Под самой панелью перейдите в раздел "Transform data". В выпадающем меню "Operation", как и для панели состояния нужно выбрать актуальную метрику с "InstanceID=node2" (рисунок 25). 

Рисунок 25 — Выбор метрики на вкладке "Transform data"

5.  В "Value options" в выпадающем меню "Fields" нужно выбрать актуальное поле с "instanceID=node2", при выборе которого показывается корректная дата (не 1970 год).

Рисунок 26 — Выбор источника данных 

6. После этого нажмите "Save", а затем синюю кнопку "Apply" в правом верхнем углу, на панели должен отобразиться срок.

Добавление алерта для резервного сервера

По умолчанию оповещение добавлено для node1, но при добавлении еще одного узла, например node2, для него необходимо добавить оповещение:

1. Для этого в Grafana зайдите в раздел "Alerting" →"Alert rules" и сделайте копию c существующего алерта, как показано на скриншоте:

Рисунок 27 — Создание дубликата алерта

2. Измените наименование оповещения в разделе "1. Enter alert rule name", для того чтобы их можно было различать, например, Docker container healthcheck state node2.

3. Далее в разделе "2. Define query and alert condition" нужно для каждого запроса отредактировать параметр host, т. е. вместо node1 указать node2. 

Рисунок 28 — Настройка фильтра данных для алерта  

4. После этого в правом верхнем углу нажмите подсвеченную синим цветом кнопку "Save rule and exit". Если сохранить не удается, то место с ошибкой будет подсвечено, нужно заполнить его, обычно в разделе "3. Set evaluation behavior" нужно указать "Evaluation group", см. пункт 3 в предыдущем разделе "Добавление оповещения в Grafana".

Рисунок 29 — Создание "Evaluation group" для алерта

5. Вернитесь в раздел "Alert rules". Нажмите кнопку "Export rules", далее "Download" и сохраните алерты в файл. Файл можно назвать как и текущий файл alert_rules.yml и далее заменить им файл в директории Grafana/provisioning/alertig, перезагрузить мониторинг.

Рисунок 30 — Экспорт правил алерта

Для информирования о необходимости продления лицензии существует алерт "License renewal alert" группа "license_notify". Когда создается отдельное оповещения для node2 необходимо в разделе "4. Configure labels and notifications" удостовериться, что установлена метка "alert_label=license_notify", для того чтобы оповещения приходили раз в неделю, а не как для остальных оповещений раз в 4 часа.

Рисунок 31 — Установка метки для алерта "License renewal alert"

  • Нет меток