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

Мониторинг 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
-

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.

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

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

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

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

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

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

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

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

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

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

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

Структура файлов системы мониторинга Offline ELM
.
├── docker-compose.yml
├── .env
├── grafana
│   └── provisioning
│       ├── alerting
│       │   ├── alert_notification.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

Для мониторинга состояния контейнеров Telegraf необходимо предоставить ему доступ к сокету Docker демона, для этого необходимо передать id группы пользователей docker.

Установить в переменной DOCKER_GROUP_ID значение группы пользователя docker. Узнать id группы docker можно командой:

Группа docker пользователя
$ getent group docker| cut -d: -f3 
999

В файле .env, расположенном в директории elm-offline-data-1.4-х, установить id пользователя в переменной DOCKER_GROUP_ID.

Установка переменной DOCKER_GROUP_ID
DOCKER_GROUP_ID="999"


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

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

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

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

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

Команда проверки статуса контейнеров мониторинга Offline ELM
$ docker compose ps

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

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

Данные мониторинга и конфигурации дашбордов хранятся в Docker volume. Если вы удалите volume, данные будут утеряны. 

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

Команда остановки мониторинга Offline ELM
$ docker compose down
Пример вывода команды при успешной остановке всех контейенров мониторинга Offline ELM
elm@elm-server:/opt/elm/monitoring$ docker compose down 
[+] Running 4/4
 ✔ Container influxdb        Removed                                                                                                                                                                     0.3s 
 ✔ Container grafana         Removed                                                                                                                                                                     0.3s 
 ✔ Container prometheus      Removed                                                                                                                                                                     0.3s 
 ✔ Container nginx-exporter  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. Если подключение Telegraf к InfulxDB было настроено корректно, то после обновления страницы в интерфейсе Grafana на дашборде elm_alert_metrics вы увидете node1 в значениях Host. Если это так, то можно переходить к дальнейшей настройке. Если в значении указано None, то проверьте правильность настройки подключения.  

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

Рисунок  15 — Панели до настройки источника данных

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

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

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

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

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

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

Мониторинг инфраструктуры

Цель мониторингаНаименование панелиОписание метрикиАлертДействие

Контроль работоспособности Docker контейнеров

Docker container healthcheck state

  • elmi-offline-server — Состояние контейнера elmi-offline-db    
  • elmi-offline-db — Состояние контейнера elmi-offline-server

Наименование: ELM container healthcheck state node1

Условие: Код возврата ненулевой

Severity: critical


  • Анализ логов на ошибки
  • Сбор логов
  • Перезапуск контейнеров
  • Заявка в техническую поддержку

Контроль доступности USB-токена

ELM USB token Status

elm_server_tokenState_value_events — Состояние доступности USB-токена    

Наименование: ELM USB token status alert node1

Условие: Код возврата ненулевой

Severity: critical

  • Проверить состояние контейнера elm-token
  • Удостовериться в доступности токена на хосте
  • Отключить и подключить токен заново (физически)
  • Перезапуск контейнера elm-token
Контроль ошибок доступности USB-токена    ELM Token access errorselm_server_tokenAccessError_value_events — Ошибки доступности USB-токена    

Наименование: ELM token access errors node1

Условие: 
Количество ошибок за 1 минуту больше 0 

Severity: critical

  • Проверить состояние контейнера elm-token
  • Удостовериться в доступности токена на хосте
  • Отключить и подключить токен заново (физически)
  • Перезапуск контейнера elm-token

Контроль доступности web-интерфейса

Web UI Status

nginx_up

Наименование: ELM Web UI status alert

Условие: Код возврата не равен 1

Severity: medium

  • Проверить состояние контейнера elmi-offline-web-ui
  • Проверить настройку систему мониторинга (сетевой доступ между мониторингом и контейнером elmi-offline-web-ui)
Контроль работоспособности базы данныхDB errors 

elm_server_databaseError_value_events — Ошибка доступа к БД    

Наименование: ELM DB errors alert node1

Условие:
Количество ошибок за 1 минуту больше 0 

Severity: critical

  • Соотнести с нагрузкой на сервер (переполнение очереди запроса)
  • Проверить физические параметры хоста, на котором запущен сервис (заполнение пространства)
  • Анализ логов на ошибки
  • Сбор логов
  • Перезапуск контейнеров
  • Заявка в техническую поддержку

Мониторинг состояния лицензии и сертификатов

Цель мониторингаНаименование панелиОписание метрикиАлертДействие
Заблаговременно сообщить о необходимости продления лицензииLicensing state

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

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

Наименование: License renewal alert node1

Условие: Код возврата ненулевой

Severity: high

Запросить продление лицензии у поставщика оборудования
Контроль срока действия лицензииLicensing expiry date

elm_server_licensingExpiry_value_events — Дата окончания срока действия лицензии

Алерт не предусмотрен

-
Сообщить о необходимости продления сертификата на USB-токенеCertificate state

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

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

Наименование: ELM certificate state alert node1

Условие: Код возврата ненулевой

Severity: critical

Запросить продление сертификата на USB-токене у поставщика оборудования

Контроль срока действия сертификата на USB токенеCertificate expiry dateelm_server_certificateExpiry_value_events — Дата окончания срока действия сертификата Алерт не предусмотрен

-

Мониторинг лицензируемых продуктов

Цель мониторингаНаименование панелиОписание метрикиАлертДействие
Мониторинг запросов лицензииELM license request

elm_server_licenseRequest_value_events — Запрос файла лицензии от устройства/ПО    

Наименование: ELM license request alert node1

Условие: 
Количество сработок за 65 минут меньше 1

Severity: medium

  • Удостовериться, что у лицензируемых продуктов есть сетевая связность с Offline ELM
Мониторинг неудачных запросов лицензииELM license requestelm_server_licenseRequestFailed_value_events — Ошибка получения файла персональной лицензии устройством    

Наименование: ELM license request errors alert node1

Условие: 
Количество ошибок за 1 минуту больше 0 

Severity: high

  • Удостовериться, что установлен корректный бандл лицензии Offline ELM
  • Перезапустить контейнеры Offline ELM
  • Собрать логи
  • Обратиться в техническую поддержку 
Контроль ошибок аутентификации от лицензируемых продуктовAuthentication errors ELM

elm_server_authFailed_value_events — Ошибка аутентификации от устройства или ПО    


Наименование: ELM authentication errors alert node1

Условие: В течение 4 часов каждый час фиксируется больше 3 ошибок

Severity: low

  • По логам выяснить, какой именно продукт не может пройти аутентификацию на сервере
  • Убедиться, что не запущена копия ПО
  • Убедиться, что лицензируемое устройство сконфигурировано корректно:
    • Ключ лицензии (если есть)
  • Если не удается обнаружить данный продукт, возможно кто-то пытается подобрать данные авторизации на сервере лицензирования Offline ELM
Контроль обращений от неподдерживаемых продуктов в рамках установленной лицензииAuthentication errors ELM

elm_server_unsupportedAuthRequest_value_events — Запрос аутентификации от устройств или ПО, которое не поддерживается лицензией    


Наименование: ELM unsupported authentication request alert node1 

Условие: В течение 4 часов каждый час фиксируется больше 3 ошибок

Severity: low

  • По логам выяснить, какой именно продукт не может пройти аутентификацию на сервере
  • Убедиться, что лицензируемое устройство сконфигурировано корректно:
    • Ключ лицензии (если есть)
    • ProductId/ serial number

Мониторинг работоспособности сервера Offline ELM

Цель мониторингаНаименование панелиОписание метрикиАлертМетрики сервера Offline ELMДействие
Контроль способности сервера Offline ELM обрабатывать клиентские запросыdenial of service ELM

elm_server_serviceDenial_value_events — Отказ в обслуживании (отклонение запросов из-за загруженности сервера)   

Наименование: ELM denial of service alert node1 

Условие:
Количество ошибок за 1 минуту больше 0 

Severity: medium

  • Соотнести с количеством запросов за единицу времени с помощью графика на панели ELM license request метрики elm_server_licenseRequest_value_events
  • Если произошел резкий скачок количества запросов, а через некоторое время все запросы в порядке очереди были обработаны — поведение штатное
  • Если проблема появляется регулярно, собрать логи, завести заявку в техническую поддержку
Мониторинг автоматически созданных блокирующих ip-правилELM Block IP addresseselm_server_blockIp_value_events — Автоматическая блокировка IP-адреса


Наименование: ELM block IP addresses alert node1

Условие:
Количество ошибок за 1 минуту больше 0 

Severity: medium

  • Через CLI или web-интерфейс посмотреть, для какого ip-адреса было создано ip-правило
  • Посмотреть в логах после запроса, от какого устройства было создано ip-правило
  • Убедиться, что лицензируемое устройство сконфигурировано корректно:
    • Ключ лицензии (если есть)
    • ProductId/ serial number
  • Убедиться, что не запущена копия ПО
  • Если не удается обнаружить данный продукт, возможно кто-то пытается подобрать данные авторизации на сервере лицензирования Offline ELM
  • Удалить ip-правило через web-интерфейс или CLI
  • Создать разрешающее ip-правило для данного ip-адреса или подсети, чтобы автоматически не создавались блокирующее правила
Мониторинг блокировки доступа по ipELM Access denied by IP addresseselm_server_ipAccessDenied_value_events — Запрет доступа по IP    

Наименование: ELM access denied by IP addresses alert node1

Условие:
Количество ошибок за 1 минуту больше 0 

Severity: low

  • Через CLI или web-интерфейс посмотреть, для какого ip-правила увеличивается счетчик сработок
  • Посмотреть в логах, какой конкретно продукт пытается пройти аутентификацию
  • Убедиться, что не запущена копия ПО
  • Если не удается обнаружить данный продукт, возможно кто-то пытается подобрать данные авторизации на сервере лицензирования Offline ELM
  • Удалить ip-правило через web-интерфейс или CLI
Мониторинг подключений к web-интерфейсуELM processed WEB connections
  • nginx_connections_accepted — Суммарное число принятых клиентских соединений
  • nginx_connections_handled — Суммарное число обработанных соединений
Алерт не предусмотрен-
ELM active WEB connections
  • nginx_connections_active — Текущее число активных клиентских соединений, включая Waiting-соединения
  • nginx_connections_reading — Текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса
  • nginx_connections_waiting — Текущее число бездействующих клиентских соединений в ожидании запроса
  • nginx_connections_writing — Текущее число соединений, в которых nginx в настоящий момент отвечает клиенту
Алерт не предусмотрен-

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

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

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

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

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

Алерты

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

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

Подробнее о каждом алерте и его смысле можно прочитать в таблице из раздела Метрики сервера Offline.

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

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

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

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

Оповещения предусмотрены для всех алертов. Вы можете гибко настроить группы пользователей, которым должны отправляться оповещения об алертах разных меток severity.

Всего предусмотрены 4 группы меток severity для алертов:

  • critical — требуется незамедлительная реакция. Процесс лицензирования прерван;
  • high — уведомление о необходимости продления лицензии, или какой-то продукт не может получить лицензию;
  • medium — продолжительное время отсутствуют запросы лицензии от лицензируемых продуктов или недоступен web-интерфейс;
  • low — нелегитимные попытки авторизации от неподдерживаемых продуктов.

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

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

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

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

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

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

Наименование переменнойОписание
NOTIFICATION_EMAIL_ADDRESSESперечень адресов для рассылки e-mail оповещений для contact point "Email and telegram notification"
NOTIFICATION_TELEGRAM_BOT_TOKENтокен для доступа к Telegram-боту для рассылки оповещений для contact point  "Email and telegram notification". Токен
можно получить, создав бота с помощью запроса к Telegram-боту @BotFather
NOTIFICATION_TELEGRAM_USER_ID

идентификатор пользователя для оповещения для contact point  "Email and telegram notification".
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-соединения

Для работы оповещений через данные, указанные в .env, (они же contact point под названием "Email and telegram notification") необходимо в разделе "Notification policies", в параметре Default policy выбрать "Email and telegram notification" contact point вместо "grafana-default-email".

Рисунок 20 — Раздел "Notification policies"

Рисунок 21 — Установка "Email and telegram notification" 

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

Рисунок  22 — Отправка тестового оповещения на почту

Рисунок 23 — Пример оповещения о необходимости продления лицензии, отправленного на почту

Рисунок 24 — Пример оповещения о необходимости продления лицензии, отправленного в Telegram

  • Нет меток