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


Система мониторинга Offline ELM предоставляет возможности по отслеживанию состояния как самого хоста, на котором запущен Offline ELM (загрузка ЦП, оперативной памяти хоста, потребление ресурсов контейнерами), так и работы системы лицензирования (фиксирование запросов лицензии, ошибок работы, состояния сертификатов и т. д.). Помимо этого, можно настроить оповещения о различных событиях для своевременного реагирования на инциденты или плановые административные работы. 

Система для мониторинга ELM представлена стеком сервисов:

  • Influxdb — хранение данных о хосте и Docker-контейнерах (версия 2.7.5)
  • Telegraf — получение данных о хосте и Docker-контейнерах и сохранение в БД Influxdb, запускается совместно с сервисами ELM (версия 1.30.0)
  • Prometheus — получение данных о метриках Offline ELM  (версия 2.51.0)
  • Grafana — отображение данных мониторинга в web-интерфейсе (версия 10.4.1)
  • Promtail — отправка логов, сохраняемых в файлы (версия 2.9.10)
  • Loki — cбор и хранение логов Offline ELM (версия 2.9.10)
  • Nginx-prometheus-exporter — мониторинг состояния web-сервера (версия 1.3.0)

 Файлы системы мониторинга находятся в архиве elm-monitoring-data-1.5-1.tar.gz. В данном архиве предоставляется две конфигурации мониторинга:

  • elm-one-node-monitoring-data-1.5-1 — для мониторинга одной ноды Offline ELM
  • elm-two-nodes-monitoring-data-1.5-1 — для мониторинга двух нод Offline ELM 

Получение файлов для запуска мониторинга Offline ELM 

Набор файлов, необходимых для запуска Offline ELM и сервисов мониторинга:

  • Актуальная версия (рекомендуется к установке): Offline ELM Last build.
  • Архивные версии Offline ELM (получение файлов для уже запущенных инсталляций): ELM Offline Archive.

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

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

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

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

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

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

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

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

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

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

MONITORING_SERVER_ADDRESS

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

127.0.0.1

MONITORING_SERVER_PORT

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

8080
MONITORING_SERVER_USERNAME

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

admin
MONITORING_SERVER_PASSWORDПароль для авторизации на actuatorpassword
LOKI_ADDRESSАдрес, используемый для подключения promtail к loki    loki
LOKI_PORTПорт, используемый для подключения promtail к loki    3100
ELM_INSTANCE_IDОпределяет основной или резервный сервер ELMnode1

2. Устанавливаются непосредственно в директории с конфигурационными файлами сервисов мониторинга в файле .env (по умолчанию elm-*-monitoring-data-1.5-1/.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-интерфейс системы мониторинга в Grafana

Авторизация

После запуска системы мониторинга 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" для мониторинга одной ноды Offline ELM

Панель мониторинга elm_alert_metrics_offline позволяет администратору получать информацию о состоянии внутренних метрик Offline ELM, сроках действия лицензии, сертификатов на токене, доступности токена и состоянии web-сервера.

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

Дашборд "elm_alert_metrics_offline2" для мониторинга двух нод Offline ELM

Панель мониторинга elm_alert_metrics_offline2 позволяет администратору получать информацию о состоянии внутренних метрик Offline ELM, сроках действия лицензии, сертификатов на токене, доступности токена и состоянии web-сервера.

Рисунок 15 — Дашборд "elm_alert_metrics_offline2" 

Переключаться между дашбордами двух нод Offline ELM можно с помощью меню Host.

Рисунок 16 — Переключение между нодами на дашборде "elm_alert_metrics_offline2" 

Дашборд "elm_monitor"

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

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

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

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

Переключаться между дашбордами двух нод Offline ELM можно с помощью меню Host.

Рисунок 18 — Переключение между нодами на дашборде "elm_monitor"

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

Для запуска мониторинга необходимо распаковать архив elm-monitoring-data-1.5-1.tar.gz. Структура файлов архива:

Структура файлов системы мониторинга Offline ELM
elm-monitoring-data-1.5-1
├── elm-one-node-monitoring-data-1.5-1
│   ├── .env
│   ├── docker-compose.yml
│   ├── grafana
│   │   └── provisioning
│   │       ├── alerting
│   │       │   ├── alert_notification.yml
│   │       │   └── alert_rules.yml
│   │       ├── dashboards
│   │       │   ├── dashboard.yml
│   │       │   ├── elm_alert_metrics_offline_single.json
│   │       │   └── elm_monitor.json
│   │       ├── datasources
│   │       │   └── datasource.yml
│   │       └── notifiers
│   │           ├── email.yml
│   │           └── telegram.yml
│   ├── loki
│   │   └── config
│   │       └── loki-config.yaml
│   └── prometheus
│       └── prometheus.yml
└── elm-two-nodes-monitoring-data-1.5-1
    ├── .env
    ├── docker-compose.yml
    ├── grafana
    │   └── provisioning
    │       ├── alerting
    │       │   ├── alert_notification.yml
    │       │   └── alert_rules.yml
    │       ├── dashboards
    │       │   ├── dashboard.yml
    │       │   ├── elm_alert_metrics_offline_reserve.json
    │       │   └── elm_monitor.json
    │       ├── datasources
    │       │   └── datasource.yml
    │       └── notifiers
    │           ├── email.yml
    │           └── telegram.yml
    ├── loki
    │   └── config
    │       └── loki-config.yaml
    └── prometheus
        └── prometheus.yml

20 directories, 24 files

В этом разделе описан запуск системы мониторинга для одной ноды Offline ELM, поэтому далее рассматривается алгоритм работы с папкой elm-one-node-monitoring-data-1.5-1.

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

Запуск системы мониторинга на одной системе с Offline ELM не рекомендуется. Однако такая реализация возможна. В этом случае сервисы мониторинга и Offline ELM будут подключены через внутреннюю сеть Docker.

Настройка Offline ELM 

Сервисы Telegraf и Promtail запускаются вместе с сервером Offline ELM, параметры их запуска прописаны в docker-compose.yml файле и .env

1. В файле .env, расположенном в директории, в которой запущен Offline ELM (по умолчанию elm-offline-data-1.5-1), необходимо указать DOCKER_GROUP_ID — значение группы пользователя docker. Узнать id группы docker можно командой:

Группа docker пользователя
$ getent group docker| cut -d: -f3 
999
Пример итоговой конфигурации в .env файле для мониторинга Offline ELM
DOCKER_GROUP_ID="999"

2. Перезапустите контейнеры Offline ELM, чтобы настройки конфигурации применились:

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

Настройка системы мониторинга

1. Выполните загрузку Docker-образов на хост:  

Загрузка контейнеров на хост
docker load < elm-monitoring-images-1.5-1.tar.gz

2. Распакуйте архив elm-monitoring-data-1.5-1.tar.gz. 

3. Перейдите в папку elm-one-node-monitoring-data-1.5-1. Выполните команду запуска контейнеров мониторинга:

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

Перейдите в web-интерфейс (дефолтный адрес http://localhost:3000), отобразится web-интрефейс Grafana. 

На этом базовая настройка мониторинга закончена. Более гибкая настройка мониторинга описана в разделе Переменные окружения мониторинга ELM.

Запуск системы мониторинга на отдельной системе

Настройка Offline ELM

Сервисы Telegraf и Promtail запускаются вместе с сервером Offline ELM, параметры их запуска прописаны в docker-compose.yml файле и .env

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

1. Перейдите в папку с запущенным сервисом Offline ELM (по умолчанию elm-offline-data-1.5-1). В файле .env укажите следующие переменные окружения:

  • MONITORING_SERVER_USERNAME — имя пользователя для авторизации Prometheus на сервере Offline ELM.
  • MONITORING_SERVER_PASSWORD — пароль для авторизации Prometheus на сервере Offline ELM. 
  • MONITORING_SERVER_ADDRESS — адрес, на котором будут доступны данные для мониторинга. По этому адресу Prometheus будет получать метрики с Offline ELM. 
  • MONITORING_SERVER_PORT — порт,  на котором будут доступны данные для мониторинга. По этому адресу Prometheus будет получать метрики с Offline ELM. Рекомендуется установить значение — 8097.
  • LOKI_ADDRESS — адрес, используемый для подключения Promtail (запускается вместе с Offline ELM) к Loki (запускается вместе с системой мониторинга). Требуется указать адрес сервера, на котором будет запущена система мониторинга. 
  • LOKI_PORT — порт, используемый для подключения Promtail (запускается вместе с Offline ELM) к Loki (запускается вместе с системой мониторинга). Требуется указать порт, на котором будет запущен сервис Loki на сервере, где работает система мониторинга. Рекомендуется оставить дефолтное значение — 3100.
  • DOCKER_GROUP_ID — id группы пользователя docker. Данное значение необходимо установить для работы мониторинга Offline ELM. Узнать id группы docker можно командой:
Получить id группы docker
$ getent group docker| cut -d: -f3 
999

Пример итоговой конфигурации в .env файле для мониторинга Offline ELM:

Пример итоговой конфигурации в .env файле для мониторинга Offline ELM
MONITORING_SERVER_USERNAME=user1
MONITORING_SERVER_PASSWORD=password123
MONITORING_SERVER_ADDRESS=192.168.1.1 # адрес интерфейса на сервере, где запущен Offline ELM 
MONITORING_SERVER_PORT=8097
LOKI_ADDRESS=192.168.1.5 # адрес сервера, на котором запущена система мониторинга
LOKI_PORT=3100
DOCKER_GROUP_ID=999

2. Перейдите в папку c конфигурационным файлом telegraf.conf на сервере, где запущен Offline ELM по пути elm-offline-data-1.5-1/config/telegraf/telegraf.conf. В разделе [[outputs.influxdb_v2]] в переменной urls укажите адрес и порт сервиса influxdb, который будет запущен на сервере с системой мониторинга. Т. е. укажите адрес самого сервера в локальной сети. Порт рекомендуется оставить дефолтным — 8086.

Пример установки адреса influxdb в telegraf.conf
$ diff telegraf.conf_old telegraf.conf
<   urls = ["http://influxdb:8086"]
---
>   urls = ["http://192.168.1.5:8086"]

3. Перезапустите контейнеры, чтобы применились настройки конфигурации:

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

Настройка системы мониторинга

1. Перейдите на сервер, где будет запущена система мониторинга Offline ELM. Выполните загрузку Docker-образов на хост:

Загрузка контейнеров на хост
docker load < elm-monitoring-images-1.5-1.tar.gz

2. Распакуйте архив elm-monitoring-1.5-1.tar.gz. 

3. Перейдите в директорию elm-one-node-monitoring-data-1.5-1. с файлами мониторинга. Выполните настройку через переменные окружения в .env файле.

  • Укажите адрес InfluxDB через переменную MONITORING_INFLUXDB_ADDRESS, на котором будет доступен сервис. Если указать 0.0.0.0, то сервис будет доступен со всех интерфейсов хоста.
  • Укажите адрес Grafana через переменную MONITORING_GRAFANA_ADDRESS, на котором будет доступен сервис. Если указать 0.0.0.0, то сервис будет доступен со всех интерфейсов хоста
  • Укажите параметры хранения данных Prometheus через переменные PROMETHEUS_RETENTION_TIME и PROMETHEUS_RETENTION_SIZE (значения по умолчанию до 90 дней или до 50 GB).
  • Укажите данные Telegram-бота для рассылки оповещений через переменные NOTIFICATION_TELEGRAM_BOT_TOKEN и NOTIFICATION_TELEGRAM_USER_ID. Подробнее в разделе Настройка оповещений.  
  • Укажите данные SMTP-сервера для рассылки оповещений через переменные SMTP_*. Подробнее в разделе Настройка оповещений
Пример конфигурации в .env файле системы мониторинга
MONITORING_INFLUXDB_ADDRESS=192.168.1.5
MONITORING_INFLUXDB_PORT=8086
MONITORING_GRAFANA_ADDRESS=192.168.1.5
MONITORING_GRAFANA_PORT=3000

4. В конфигурационном файле prometheus.yml (elm-one-node-monitoring-data-1.5-1/prometheus/prometheus.yml) измените адрес "targets: ['elmi-offline-server:8097']" на адрес и порт, которые были указаны при конфигурировании Offline ELM в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT.

prometheus.yml target
     static_configs:
      - targets: ['192.168.1.1:8097'] # Адрес сервера Offline ELM и порт, указанные в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT
        labels:
          host: elmi-offline-server

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

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

6. В конфигурационном файле prometheus.yml (elm-one-node-monitoring-data-1.5-1/prometheus/prometheus.yml) укажите адрес сервера, на котором запущен Offline ELM для сервиса nginx-exporter.

prometheus.yml basic_auth
    static_configs:
      - targets: ['192.168.1.1:9113'] # Адрес сервера Offline ELM и порт сервиса nginx-exporter (по умолчанию 9113)
        labels:
          host: nginx-exporter

7. Запустите сервисы мониторинга.

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

8. Убедитесь, что все контейнеры системы мониторинга ELM успешно запущены, используя команду "docker compose ps":

Пример вывода команды при успешном запуске всех контейнеров мониторинга
$ docker compose ps
NAME          COMMAND                  SERVICE      STATUS     PORTS
grafana       "/run.sh"                grafana      running    0.0.0.0:3000->3000/tcp
influxdb      "/entrypoint.sh infl…"   influxdb     running    0.0.0.0:8086->8086/tcp
loki          "/usr/bin/loki -conf…"   loki         running    0.0.0.0:3100->3100/tcp
prometheus    "/bin/prometheus --c…"   prometheus   running    0.0.0.0:9090->9090/tcp, :::9090->9090/tcp

9. Зайдите в web-интерфейс Grafana. 

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.

Перейдите в раздел Dashboards. Здесь представлен список всех дашбордов:

  • elm_alert_metrics_offline
  • elm_monitor

Рисунок 19 — Список дашбордов мониторинга ELM

Настройка дашборда elm_alert_metrics_offline

1. Перейдите в elm_alert_metrics_offlineЕсли в списке Host написано node1, на графиках видны метрики, и алерты горят зеленым, значит подключение прошло успешно. Осталось настроить несколько панелей (ELM USB token alert, Web UI Status, Licensing state, Licensing expiry, Certificate state, Certificate expiry).

Рисунок 20 — Дашбор "elm_alert_metrics_offline"

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

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

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

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

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

5. Для панелей ELM USB token alert, Web UI Status, Licensing state, Certificate state достаточно в "Value options" в выпадающем меню "Fields" выберите актуальное поле, где значение "instance" будет соответствовать указанному IP-адресу в файле конфигурации prometheus.yml.

6. После каждого изменения в верхнем правом углу необходимо сохранять и применять конфигурацию.

Рисунок 23 — Сохранение конфигурации Grafana 

Настройка системы мониторинга завершена.

Рисунок 24 — Вид системы мониторинга для одной ноды Offline ELM, дашборд "elm_alert_metrics_offline"

Рисунок 25 — Вид системы мониторинга для одной ноды Offline ELM, дашборд "elm_monitor" 

Запуск системы мониторинга для двух нод Offline ELM

Для запуска мониторинга необходимо распаковать архив elm-monitoring-data-1.5-1.tar.gz. Структура файлов архива:

Структура файлов системы мониторинга Offline ELM
elm-monitoring-data-1.5-1
├── elm-one-node-monitoring-data-1.5-1
│   ├── .env
│   ├── docker-compose.yml
│   ├── grafana
│   │   └── provisioning
│   │       ├── alerting
│   │       │   ├── alert_notification.yml
│   │       │   └── alert_rules.yml
│   │       ├── dashboards
│   │       │   ├── dashboard.yml
│   │       │   ├── elm_alert_metrics_offline_single.json
│   │       │   └── elm_monitor.json
│   │       ├── datasources
│   │       │   └── datasource.yml
│   │       └── notifiers
│   │           ├── email.yml
│   │           └── telegram.yml
│   ├── loki
│   │   └── config
│   │       └── loki-config.yaml
│   └── prometheus
│       └── prometheus.yml
└── elm-two-nodes-monitoring-data-1.5-1
    ├── .env
    ├── docker-compose.yml
    ├── grafana
    │   └── provisioning
    │       ├── alerting
    │       │   ├── alert_notification.yml
    │       │   └── alert_rules.yml
    │       ├── dashboards
    │       │   ├── dashboard.yml
    │       │   ├── elm_alert_metrics_offline_reserve.json
    │       │   └── elm_monitor.json
    │       ├── datasources
    │       │   └── datasource.yml
    │       └── notifiers
    │           ├── email.yml
    │           └── telegram.yml
    ├── loki
    │   └── config
    │       └── loki-config.yaml
    └── prometheus
        └── prometheus.yml

20 directories, 24 files

В этом разделе описан запуск системы мониторинга для двух нод Offline ELM, поэтому далее рассматривается алгоритм работы с папкой elm-two-nodes-monitoring-data-1.5-1.

Запуск  системы мониторинга на отдельном сервере

Настройка Offline ELM

Настройка Offline ELM для обоих нод отличается только IP-адресами сервера, на котором запущена каждая инсталляция Offline ELM и ELM_INSTANCE_ID=node1/node2.

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

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

1. Перейдите в папку с запущенным сервисом Offline ELM. В файле .env, расположенном в директории elm-offline-data-1.5-1, требуется указать следующие переменные окружения:

  • ELM_INSTANCE_ID — идентификатор ноды Offline ELM. Для первой ноды указывается node1, для второй — node2.
  • MONITORING_SERVER_USERNAME — имя пользователя для авторизации Prometheus на сервере Offline ELM.
  • MONITORING_SERVER_PASSWORD — пароль для авторизации Prometheus на сервере Offline ELM. 
  • MONITORING_SERVER_ADDRESS — адрес, на котором будут доступны данные для мониторинга. По этому адресу Prometheus будет получать метрики с Offline ELM. 
  • MONITORING_SERVER_PORT — порт,  на котором будут доступны данные для мониторинга. По этому адресу Prometheus будет получать метрики с Offline ELM. Рекомендуется установить значение — 8097.
  • LOKI_ADDRESS — адрес, используемый для подключения Promtail (запускается вместе с Offline ELM) к Loki (запускается вместе с системой мониторинга). Нужно указать адрес сервера, на котором будет запущена система мониторинга. 
  • LOKI_PORT — порт, используемый для подключения Promtail (запускается вместе с Offline ELM) к Loki (запускается вместе с системой мониторинга). Нужно указать порт, на котором будет запущен сервис Loki на сервере, где работает система мониторинга. Рекомендуется оставить дефолтное значение — 3100.
  • DOCKER_GROUP_ID — id группы пользователя docker. Данное значение необходимо установить для работы мониторинга Offline ELM. Узнать id группы docker можно командой:
Получить id группы docker
$ getent group docker| cut -d: -f3 
999
Установка переменной DOCKER_GROUP_ID
DOCKER_GROUP_ID="999"

Пример итоговой конфигурации в .env файле для node1 Offline ELM:

Пример итоговой конфигурации в .env файле для мониторинга Offline ELM
ELM_INSTANCE_ID=node1
MONITORING_SERVER_USERNAME=user1
MONITORING_SERVER_PASSWORD=password123
MONITORING_SERVER_ADDRESS=192.168.1.1 # адрес интерфейса на сервере, где запущена node1 Offline ELM 
MONITORING_SERVER_PORT=8097
LOKI_ADDRESS=192.168.1.5 # адрес сервера, на котором запущена система мониторинга
LOKI_PORT=3100
DOCKER_GROUP_ID=999

Пример итоговой конфигурации в .env файле для node2 Offline ELM:

Пример итоговой конфигурации в .env файле для мониторинга Offline ELM
ELM_INSTANCE_ID=node2
MONITORING_SERVER_USERNAME=user1
MONITORING_SERVER_PASSWORD=password123
MONITORING_SERVER_ADDRESS=192.168.1.2 # адрес интерфейса на сервере, где запущена node2 Offline ELM 
MONITORING_SERVER_PORT=8097
LOKI_ADDRESS=192.168.1.5 # адрес сервера, на котором запущена система мониторинга
LOKI_PORT=3100
DOCKER_GROUP_ID=999

2. Перейдите в папку c конфигурационным файлом telegraf.conf на сервере, где запущен Offline ELM по пути elm-offline-data-1.5-1/config/telegraf/telegraf.conf. В разделе [[outputs.influxdb_v2]] в переменной urls укажите адрес и порт сервиса influxdb, который будет запущен на сервере с системой мониторинга. Т. е. укажите адрес самого сервера в локальной сети. Порт рекомендуется оставить дефолтным — 8086.

Пример установки адреса influxdb в telegraf.conf
$ diff telegraf.conf_old telegraf.conf
<   urls = ["http://influxdb:8086"]
---
>   urls = ["http://192.168.1.5:8086"]

3. Перезапустите контейнеры, чтобы применились настройки конфигурации.

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

Настройка системы мониторинга

1. Перейдите на сервер, где будет запущена система мониторинга Offline ELM. Выполните загрузку Docker-образов на хост.  

Загрузка контейнеров на хост
docker load < elm-monitoring-images-1.5-1.tar.gz

2. Распакуйте архив elm-monitoring-1.5-1.tar.gz. 

3. Перейдите в директорию elm-two-nodes-monitoring-data-1.5-1. с файлами мониторинга. Выполните настройку через переменные окружения в .env файле.

  • Укажите адрес InfluxDB через переменную MONITORING_INFLUXDB_ADDRESS, на котором будет доступен сервис. Если указать 0.0.0.0, то сервис будет доступен со всех интерфейсов хоста.
  • Укажите адрес Grafana через переменную MONITORING_GRAFANA_ADDRESS, на котором будет доступен сервис. Если указать 0.0.0.0, то сервис будет доступен со всех интерфейсов хоста
  • Укажите параметры хранения данных Prometheus через переменные PROMETHEUS_RETENTION_TIME и PROMETHEUS_RETENTION_SIZE (значения по умолчанию до 90 дней или до 50 GB).
  • Укажите данные Telegram-бота для рассылки оповещений через переменные NOTIFICATION_TELEGRAM_BOT_TOKEN и NOTIFICATION_TELEGRAM_USER_ID. Подробнее в разделе Настройка оповещений
  • Укажите данные SMTP-сервера для рассылки оповещений через переменные SMTP_Х. Подробнее в разделе Настройка оповещений
Пример конфигурации в .env файле системы мониторинга
MONITORING_INFLUXDB_ADDRESS=192.168.1.5
MONITORING_INFLUXDB_PORT=8086
MONITORING_GRAFANA_ADDRESS=192.168.1.5
MONITORING_GRAFANA_PORT=3000

4. В конфигурационном файле prometheus.yml (elm-two-nodes-monitoring-data-1.5-1/prometheus/prometheus.yml) измените адрес "targets: ['elmi-offline-server:8097']" и "targets: ['elmi-offline-server2:8097']" на адрес и порт, которые были указаны при конфигурировании node1 и node2 Offline ELM в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT.

prometheus.yml target
    static_configs:
      - targets: ['192.168.1.1:8097'] # Адрес сервера node1 Offline ELM и порт, указанные в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT
        labels:
          host: elmi-offline-server
      - targets: ['192.168.1.2:8097'] # Адрес сервера node2 Offline ELM и порт, указанные в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT
        labels:
          host: elmi-offline-server2

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

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

6. В конфигурационном файле prometheus.yml (elm-two-nodes-monitoring-data-1.5-1/prometheus/prometheus.yml) укажите адрес сервера, на котором запущен Offline ELM для сервиса nginx-exporter.

prometheus.yml basic_auth
    static_configs:
      - targets: ['192.168.1.1:9113']
        labels:
          host: nginx-exporter
      - targets: ['192.168.1.2:9113']
        labels:
          host: nginx-exporter2

7. Запустите сервисы мониторинга.

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

8. Убедитесь, что все контейнеры системы мониторинга ELM успешно запущены, используя команду "docker compose ps":

Пример вывода команды при успешном запуске всех контейнеров мониторинга
$ docker compose ps
NAME         COMMAND                  SERVICE       STATUS      PORTS
grafana      "/run.sh"                grafana       running     0.0.0.0:3000->3000/tcp
influxdb     "/entrypoint.sh infl…"   influxdb      running     0.0.0.0:8086->8086/tcp
loki         "/usr/bin/loki -conf…"   loki          running     0.0.0.0:3100->3100/tcp
prometheus   "/bin/prometheus --c…"   prometheus    running     0.0.0.0:9090->9090/tcp, :::9090->9090/tcp

9. Зайдите в web-интерфейс Grafana. 

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.

Перейдите в раздел Dashboards. Здесь представлен список всех дашбордов:

  • elm_alert_metrics_offline
  • elm_monitor

Рисунок 26  — Список дашбордов мониторинга ELM

Настройка дашборда elm_alert_metrics_offline

1. Перейдите в elm_alert_metrics_offlineЕсли в списке Host написано node1, на графиках видны метрики, и алерты горят зеленым, значит подключение прошло успешно. Осталось настроить несколько панелей:

  • Web UI Status node1
  • Licensing state node1
  • Licensing expiry node1
  • Certificate state node1
  • Certificate expiry node1
  • ELM USB token Status node1
  • Web UI Status node2
  • Licensing state node2
  • Licensing expiry node2
  • Certificate state node2
  • Certificate expiry node2
  • ELM USB token Status node2

Рисунок 27 — Дашборд "elm_alert_metrics_offline2"

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

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

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

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

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

5. Для панелей ELM USB token Status, Web UI Status, Licensing state, Certificate state достаточно в "Value options" в выпадающем меню "Fields" выбрать актуальное поле, где значение "instance" будет соответствовать указанному IP-адресу в файле конфигурации prometheus.yml.

6. Для панели Certificate expiry date после выбора в разделе "Transform data", в выпадающем меню "Operation" верного источника данных, в правом меню в разделе "Value options" в выпадающем меню "Fields" необходимо выбрать "ExpiryCertificate".

Рисунок 30 — Установка значения ExpiryCertificate для панели "Certificate expiry date" 

6. После каждого изменения в верхнем правом углу необходимо сохранять и применять конфигурацию.

Рисунок 31 — Сохранение конфигурации Grafana

Настройка системы мониторинга двух нод Offline ELM завершена. 

Рисунок 32 — Вид системы мониторинга для двух нод Offline ELM, дашборд "elm_alert_metrics_offline2"

Рисунок 33 — Вид системы мониторинга для двух нод Offline ELM, дашборд "elm_monitor"

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

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

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

Команда остановки мониторинга Offline ELM
$ docker compose down
Пример вывода команды при успешной остановке всех контейнеров мониторинга Offline ELM
$ docker compose down
[+] Running 4/4
 ⠿ Container influxdb    Removed                                                                                                                                                                         3.7s
 ⠿ Container prometheus  Removed                                                                                                                                                                         3.9s
 ⠿ Container grafana     Removed                                                                                                                                                                         3.8s
 ⠿ Container loki        Removed                                                                                                                                                                         4.5s

Если сервисы мониторинга не запущены, в частности 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

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

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

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

Docker container healthcheck state

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

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

  • ELM container healthcheck state node1
  • ELM container healthcheck state node2

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

Severity: critical


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

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

ELM USB token Status

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

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

  • ELM USB token status alert node1
  • ELM USB token status alert node2

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

Severity: critical

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

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

  • ELM token access errors node1
  • ELM token access errors node2

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

Severity: critical

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

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

Web UI Status

nginx_up

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

  • ELM Web UI status alert node1
  • ELM Web UI status alert node2

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

Severity: medium

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

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

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

  • ELM DB errors alert node1
  • ELM DB errors alert node2

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

Severity: critical

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

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

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

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

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

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

  • License renewal alert node1
  • License renewal alert node2

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

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
  • ELM certificate state alert node2

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

Severity: critical

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

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

-

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

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

ELM license request         


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

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

  • ELM license request alert node1
  • ELM license request alert both nodes

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

Severity: medium

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

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

  • ELM license request errors alert node1
  • ELM license request errors alert node2

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

Severity: high

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

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


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

  • ELM authentication errors alert node1
  • ELM authentication errors alert node2

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

Severity: low

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

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


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

  • ELM unsupported authentication request alert node1 
  • ELM unsupported authentication request alert node2

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

Severity: low

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

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

Цель мониторингаПанельОписание метрики

Алерт

Действие
Контроль способности сервера Offline ELM обрабатывать клиентские запросыdenial of service ELM

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

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

  • ELM denial of service alert node1 
  • ELM denial of service alert node2

Условие:
Количество ошибок за 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
  • ELM block IP addresses alert node2

Условие:
Количество ошибок за 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
  • ELM access denied by IP addresses alert node2

Условие:
Количество ошибок за 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_alert_metrics представлен список алертов для мониторинга одной ноды Offline ELM.

Рисунок 34 — Панель алертов для одной ноды

При мониторинге двух нод Offline ELM выводятся только 20 алертов. Если какой-либо алерт меняет состояние с Normal, то он автоматически попадает в этот список.

Рисунок 35 — Панель алертов для мониторинга двух нод

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

В официальной документации описана логика работы алертов в Grafana — Grafana Alerting

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

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

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

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

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

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

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

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

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

В официальной документации описана логика работы оповещений Grafana — Configure notifications.

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

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

Через указание переменных окружения в файле .env перед запуском сервиса мониторинга можно сконфигурировать параметры подключения к Telegram-боту и SMTP-серверу.

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

Наименование переменнойОписание
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:

Наименование переменнойОписание
NOTIFICATION_EMAIL_ADDRESSESперечень адресов для рассылки e-mail оповещений для contact point "Email and telegram notification"
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".

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

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

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

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

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

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


  • Нет меток