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


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

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

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

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

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

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

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

ПутьОписание
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
-


Подготовка файлов мониторинга

Подготовка файлов мониторинга с помощью скрипта инсталляции

Для упрощенного запуска мониторинга Offline ELM поставляется скрипт инсталляции install-offline.sh. Данный скрипт хранится вместе с конфигурационными файлами и образами Offline ELM. Также его можно скачать отдельно с ownCloud по ссылкам из раздела Получение файлов для запуска Offline ELM.

1. Перед запуском необходимо установить права на исполнение с помощью команды:

sudo chmod +x ./install-offline.sh

2. Получить информацию о доступных опциях скрипта можно, запустив скрипт с флагом --help или без параметров:

$ ./install-offline.sh 
Script usage: ./install-offline.sh [OPTIONS]

Options:
  --elm-images <ARCHIVE>          path to archive with images
  --elm-data <ARCHIVE>            path to archive with config and compose files
  --monitoring-images <ARCHIVE>   path to archive with images for monitoring
  --monitoring-data <ARCHIVE>     path to archive with data for monitoring
  --env <FILE>                    path to .env file
                                  usage with option --elm-images
  --elm-dir <DIRECTORY>           path to directory where need to unpack archive with data files
                                  usage with option --elm-data
  --monitoring-dir <DIRECTORY>    path to directory where need to unpack archive with data files for monitoring
                                  usage with option --monitoring-data
  -h, --help                      output this help
Required options:
  One of the options --elm-images, --elm-data, --monitoring-images, --monitoring-data must be set

3. Для запуска скрипта с распаковкой конфигурационных файлов и загрузкой образов мониторинга Offline ELM используйте следующую команду:

$ ./install-offline.sh  --monitoring-images elm-monitoring-images-1.5-1.tar.gz --monitoring-data elm-monitoring-data-1.5-1.tar.gz  
$ ./install-offline.sh  --monitoring-images elm-monitoring-images-1.5-1.tar.gz --monitoring-data elm-monitoring-data-1.5-1.tar.gz 
Loaded image: influxdb:2.7.5
Loaded image: prometheus:v2.51.0
Loaded image: grafana:10.4.1
Loaded image: loki:2.9.10
INFO: Extract files:
elm-monitoring-data-1.5-1/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/notifiers/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/notifiers/telegram.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/notifiers/email.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/alerting/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/alerting/alert_notification.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/alerting/alert_rules.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/datasources/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/datasources/datasource.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/dashboards/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/dashboards/elm_monitor.json
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/dashboards/dashboard.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/grafana/provisioning/dashboards/elm_alert_metrics_offline_single.json
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/docker-compose.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/loki/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/loki/config/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/loki/config/loki-config.yaml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/prometheus/
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/prometheus/prometheus.yml
elm-monitoring-data-1.5-1/elm-one-node-monitoring-data-1.5-1/.env
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/notifiers/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/notifiers/telegram.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/notifiers/email.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/alerting/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/alerting/alert_notification.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/alerting/alert_rules.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/datasources/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/datasources/datasource.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/dashboards/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/dashboards/elm_alert_metrics_offline_reserve.json
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/dashboards/elm_monitor.json
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/grafana/provisioning/dashboards/dashboard.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/docker-compose.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/loki/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/loki/config/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/loki/config/loki-config.yaml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/prometheus/
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/prometheus/prometheus.yml
elm-monitoring-data-1.5-1/elm-two-nodes-monitoring-data-1.5-1/.env
Success!

После завершения работы скрипта на систему будут загружены docker-образы, а файлы конфигурации распакованы в каталог elm-monitoring-data-1.5-1.

├── elm-one-node-monitoring-data-1.5-1
│   ├── 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
    ├── 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

21 directories, 22 files
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
loki         2.9.10    6dc62b620873   7 months ago    77.5MB
influxdb     2.7.5     69e1e1673bcf   11 months ago   378MB
grafana      10.4.1    ccb72d0beb64   12 months ago   430MB
prometheus   v2.51.0   1d3b7f56885b   12 months ago   262MB

 Ручная подготовка файлов мониторинга

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

docker load < elm-monitoring-images-1.5-1.tar.gz

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

tar -xf elm-monitoring-data-1.5-1.tar.gz

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

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

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 можно командой:

$ getent group docker| cut -d: -f3 
999
DOCKER_GROUP_ID="999"

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

$ docker compose down
$ docker compose up -d

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

1. Выполните подготовку файлов мониторинга согласно инструкции Подготовка файлов мониторинга

2. Если требуется, укажите необходимые переменные окружения из раздела Переменные окружения мониторинга ELM.

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
│       └── telegraf.conf
│   └── promtail
│   	└── promtail.yaml
└── docker-compose.yml

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

$ getent group docker| cut -d: -f3 
999

Пример итоговой конфигурации в .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.

$ 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. Выполните подготовку файлов мониторинга согласно инструкции Подготовка файлов мониторинга

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

MONITORING_INFLUXDB_ADDRESS=192.168.1.5
MONITORING_INFLUXDB_PORT=8086
MONITORING_GRAFANA_ADDRESS=192.168.1.5
MONITORING_GRAFANA_PORT=3000

3. В конфигурационном файле 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.

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

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

basic_auth:
      username: 'user1'
      password: 'password123'

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

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

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

$ docker compose up -d

7. Убедитесь, что все контейнеры системы мониторинга 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

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

Web-интерфейс Grafana доступен по следующему адресу:
http://<MONITORING_GRAFANA_ADDRESS>:<MONITORING_GRAFANA_PORT>/

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

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

Рисунок 12 — Список дашбордов мониторинга 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
│       └── telegraf.conf
└── docker-compose.yml

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

$ getent group docker| cut -d: -f3 
999
DOCKER_GROUP_ID="999"

Пример итоговой конфигурации в .env файле для node1 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:

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.

$ 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. Выполните подготовку файлов мониторинга согласно инструкции Подготовка файлов мониторинга

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

MONITORING_INFLUXDB_ADDRESS=192.168.1.5
MONITORING_INFLUXDB_PORT=8086
MONITORING_GRAFANA_ADDRESS=192.168.1.5
MONITORING_GRAFANA_PORT=3000

3. В конфигурационном файле 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.

    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

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

basic_auth:
      username: 'user1'
      password: 'password123'

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

    static_configs:
      - targets: ['192.168.1.1:9113']
        labels:
          host: nginx-exporter
      - targets: ['192.168.1.2:9113']
        labels:
          host: nginx-exporter2

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

$ docker compose up -d

7. Убедитесь, что все контейнеры системы мониторинга 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

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

Web-интерфейс Grafana доступен по следующему адресу:
http://<MONITORING_GRAFANA_ADDRESS>:<MONITORING_GRAFANA_PORT>/

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

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

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

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

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

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

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

3. Для панелей, отображающих даты (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 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".

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

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

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

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

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

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

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

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

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

$ docker compose down


$ 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)"


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

Авторизация

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

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

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

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

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

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

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

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

Дашборд "elm_alert_metrics" для мониторинга одной ноды Offline ELM

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

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

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

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

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

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

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

Дашборд "elm_monitor"

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

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

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

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

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

Метрики сервера 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     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.

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

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

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

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

В официальной документации описана логика работы оповещений 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