Описание системы мониторинга
Мониторинг Offline ELM обеспечивается с помощью следующих сервисов:
- Influxdb — хранение данных о хосте и Docker-контейнерах (версия 2.7.5)
- Telegraf — получение данных о хосте и Docker-контейнерах и сохранение в БД Influxdb, запускается совместно с сервисами ELM (версия 1.30.0)
- Prometheus — получение данных о метриках ELM Server (версия 2.51.0)
- Grafana — отображение данных мониторинга в web-интерфейсе (версия 10.4.1)
- Nginx-exporter — сервис для сбора метрик с сервера nginx (web-ui) и преобразования их в формат для считывания Prometheus (версия 1.1.0). Мониторинг Offline ELM предоставляет возможности по наглядному отслеживанию как состояния самого хоста (загрузка ЦП, оперативной памяти хоста, потребление ресурсов контейнерами), так и работы системы лицензирования Offline ELM как таковой (фиксирование запросов лицензии, ошибок работы, состояния сертификатов и т. д.). Помимо этого предоставляются возможности по оповещению о различных состояниях Offline ELM (оповещения о состоянии лицензии, контейнеров, USB-токена).
Конфигурационные файлы сервисов мониторинга
Файлы, используемые для конфигурации мониторинга
Путь | Описание |
---|---|
elm-monitoring-data/grafana/provisioning/dashboards | Перечень JSON файлов, описывающих содержимое dashboard страниц, доступных для просмотра в Grafana. |
elm-monitoring-data/grafana/provisioning/datasources | Файл datasource.yml описывает источники данных мониторинга для отображения в Grafana. |
elm-monitoring-data/grafana/provisioning/alerting | Перечень файлов с описанием методов оповещения пользователей с помощью Grafana:
|
elm-monitoring-data/prometheus/prometheus.yml | В файле prometheus.yml перечислены адреса Spring Actuator для получения значений метрик, поддерживаемых в ELM. По умолчанию, при запуске ELM через docker-compose, адресами являются названия сервисов, перечисленных для запуска в файлах docker-compose.yml. |
elm-offline-data/config/telegraf/telegraf.conf | Файл с описанием данных системы, доступных для получения контейнером telegraf и указанием адреса БД influxdb, куда сохранять полученные данные. |
elm-offline-data/.env | Файл для установки переменных окружения, связанных с сервером Offline ELM. |
elm-monitoring-data/.env | Файл для установки переменных окружения, связанных с сервисами мониторинга. |
Переменные окружения мониторинга ELM
Переменные окружения устанавливаются в файле .env. После их изменения требуется перезапуск контейнеров.
Переменные окружения делятся на два типа:
1. Устанавливаются для сервера Offline ELM в файле .env, который располагается в директории с конфигурационными файлами сервера (по умолчанию elm-offline-data/.env).
Название параметра | Описание параметра | Значение по умолчанию |
---|---|---|
MONITORING_SERVER_ADDRESS | Адрес, на который будет проброшен actuator | 127.0.0.1 |
MONITORING_SERVER_PORT | Порт, на который будет вывешиваться actuator | 8080 |
MONITORING_SERVER_USERNAME | Имя пользователя для авторизации на actuator | admin |
MONITORING_SERVER_PASSWORD | Пароль для авторизации на actuator | password |
ELM_INSTANCE_ID | Определяет основной или резервный сервер ELM | node1 |
2. Устанавливаются непосредственно в директории с конфигурационными файлами сервисов мониторинга в файле .env (по умолчанию elm-monitoring-data/.env) .
Название параметра | Описание параметра | Значение по умолчанию |
---|---|---|
MONITORING_INFLUXDB_ADDRESS | Адрес, на который будет проброшен influxdb | 127.0.0.1 |
MONITORING_INFLUXDB_PORT | Порт, на который будет вывешиваться influxdb | 8086 |
MONITORING_GRAFANA_ADDRESS | Адрес, на который будет проброшена Grafana | 0.0.0.0 |
MONITORING_GRAFANA_PORT | Порт, на который будет вывешиваться Grafana | 3000 |
PROMETHEUS_RETENTION_TIME | Время хранения метрик prometheus | 90d |
PROMETHEUS_RETENTION_SIZE | Ограничение хранения метрик prometheus по размеру | 50GB |
SMTP_HOST | Адрес SMTP-сервера | - |
SMTP_NAME | Имя пользователя | - |
SMTP_PASSWORD | Пароль | - |
SMTP_FROM_ADDRESS | Почта, с которой будут рассылаться оповещения | admin@grafana.localhost |
SMTP_FROM_NAME | Имя, используемое для рассылки оповещений | Grafana |
SMTP_SKIP_VERIFY | Пропустить проверку SSL-сертификата сервера | false |
SMTP_CERT_FILE | Файл сертификата для настройки защищенного SSL-соединения | - |
SMTP_KEY_FILE | Файл ключей для настройки защищенного SSL-соединения | - |
NOTIFICATION_EMAIL_ADDRESSES | Перечень адресов для рассылки e-mail оповещений, разделенных символом ';' | example@email.com user1@mail.com user2@mail.com |
NOTIFICATION_TELEGRAM_BOT_TOKEN | Токен для доступа к Telegram-боту для рассылки оповещений, можно получить, создав бота с помощью запроса к Telegram-боту @BotFather | - |
NOTIFICATION_TELEGRAM_USER_ID | Идентификатор пользователя для оповещения, можно получить с помощью запроса к Telegram-боту @userinfobot | - |
Запуск системы мониторинга Offline ELM
Сервис для мониторинга ELM представлен стеком сервисов с конфигурационными файлами, который можно запустить, используя docker-compose файл. Файлы системы мониторинга в этом архиве находятся в директории elm-monitoring-data-1.4 и имеют следующую структуру:
. ├── docker-compose.yml ├── .env ├── grafana │ └── provisioning │ ├── alerting │ │ ├── alert_notification.yml │ │ ├── alert_policies.yml │ │ └── alert_rules.yml │ ├── dashboards │ │ ├── dashboard.yml │ │ ├── elm_alert_metrics.json │ │ └── elm_monitor.json │ ├── datasources │ │ └── datasource.yml │ └── notifiers │ ├── email.yml │ └── telegram.yml └── prometheus └── prometheus.yml
Сервис Telegraf запускается вместе с сервером Offline ELM, параметры его запуска прописаны в docker-compose.yml файле. Конфигурационные файлы данного сервиса расположены в папке config.
. ├── config │ └── telegraf │ └── telegraf.conf └── docker-compose.yml
Для запуска системы мониторинга Offline ELM требуется произвести следующие шаги:
1. Перейти в директорию с конфигурационными файлами мониторинга (по умолчанию elm-monitoring-data-1.4).
2. Запустить систему мониторинга Offline ELM командой:
$ docker compose up -d
3. Убедиться, что все контейнеры Offline ELM успешно запустились, используя команду:
$ docker compose ps
Теперь с системой мониторинга Offline ELM можно взаимодействовать через web-интерфейс Grafana. Более подробно работа с интерфейсом мониторинга описана в разделе Web-интерфейс системы мониторинга.
Остановка системы мониторинга
Для остановки системы мониторинга Offline ELM требуется произвести следующие шаги:
1. Перейти в директорию с конфигурационными файлами мониторинга (по умолчанию elm-monitoring-data-1.4).
2. Выполнить команду:
$ docker compose down
Если сервисы мониторинга не запущены, в частности InfluxDB, в логах Telegraf появятся ошибки. Лог с ошибками — результат того, что Telegraf не может подключиться к InfluxDB. Пример текста ошибки:
"telegraf | 2024-08-20T15:29:16+07:00 E! [agent] Error writing to outputs.influxdb_v2: failed to send metrics to any configured server(s)"
Настройка удаленного мониторинга
Сервисы мониторинга можно запустить совместно с Offline ELM на одном хосте. В таком случае дополнительной настройки подключения не требуется, однако рекомендуется запускать сервисы мониторинга на отдельном хосте. Для этого необходимо выполнить следующие настройки:
1. Настроить переменные окружения в файле .env (elm-offline-data/.env) на стороне сервера Offline ELM. А именно:
- адрес MONITORING_SERVER_ADDRESS сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик. Так как дефолтное значение переменной "MONITORING_SERVER_ADDRESS=127.0.0.1", без её установки мониторинг сервера Offline ELM не будет доступен при запуске сервисов мониторинга на отдельном хосте.
- порт MONITORING_SERVER_PORT сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик;
- логин и пароль пользователя (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD), которые будут использоваться Prometheus для авторизации, InstanceID ноды.
2. В конфигурационном файле Telegraf telergaf.conf (elm-offline-data/config/telegraf/telegraf.conf) в разделе [[outputs.influxdb_v2]] необходимо указать адрес и порт сервиса мониторинга influxdb через переменную urls.
$ diff telegraf_old.conf telegraf.conf < urls = ["http://influxdb:8086"] --- > urls = ["http://192.168.1.2:8086"]
3. В конфигурационном файле prometheus.yml (elm-monitoring-data/prometheus/prometheus.yml) изменить адрес "targets" на адрес и порт, указанные в переменных MONITORING_SERVER_ADDRESS и MONITORING_SERVER_PORT на сервере Offline ELM в .env файле.
$ diff prometheus_old.yml prometheus.yml < - targets: ['elmi-offline-server:8097'] --- > - targets: ['192.168.1.1:8097']
4. В конфигурационном файле prometheus.yml (elm-monitoring-data/prometheus/prometheus.yml) изменить при необходимости данные логина и пароля пользователя для подключения к актуатору сервера Offline ELM, если для него в .env файле были указаны иные значения (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD).
basic_auth: username: 'user1' password: 'password1'
5. В docker-compose.yml файле для контейнера nginx-exporter, который собирает информацию о web-сервере, указать адрес и порт данного web-сервера, который запускается совместно с основным сервером Offline ELM в контейнере elmi-offline-web-ui. Порт web-сервера может быть изменен в .env файле с помощью переменной окружения ELM_WEB_UI_PORT.
$ diff docker-compose_old.yml docker-compose.yml < - https://elmi-offline-web-ui:80/nginx_status --- > - https://192.618.1.1:80/nginx_status
6. В elm-monitoring-data/.env файле установить переменную MONITORING_INFLUXDB_ADDRESS, которая указывает, на каком адресе будет доступен сервис InfluxDB.
7. Необходимо перезапустить сервер Offline ELM и сервисы мониторинга.
$ docker compose down $ docker compose up -d
8. Зайдите в web-интерфейс Grafana. Для панелей ELM USB token alert, Web UI Status, Licensing state, Licensing expiry, Certificate state, Certificate expiry выполните следующие действия:
8.1. На панели через меню с 3 вертикальными точками нажмите "Edit".
8.2. Для панелей, отображающих даты, под самой панелью перейдите в раздел "Transform data", в выпадающем меню "Operation", как и для панели состояния нужно выбрать поле, значение "instance" в котором будет соответствовать указанному IP-адресу в файле конфигурации prometheus.yml.
Рисунок 12 — Выбор данных в "Transform data"
8.3. В "Value options" в выпадающем меню "Fields" нужно выбрать актуальное поле, где значение "instance" будет соответствовать указанному IP-адресу в файле конфигурации prometheus.yml.
Рисунок 13 — Выбор источника данных
Web-интерфейс системы мониторинга
Авторизация
После запуска системы мониторинга Offline ELM администратору системы мониторинга становится доступен web-интерфейс Grafana по адресу http://<MONITORING_GRAFANA_ADDRESS>:<MONITORING_GRAFANA_PORT>/.
- <MONITORING_GRAFANA_ADDRESS> — это адрес сервера Offline ELM в сети, установленный в переменной окружения MONITORING_GRAFANA_ADDRESS (значение по умолчанию 0.0.0.0);
- <MONITORING_GRAFANA_PORT> — порт сервиса Grafana, установленный в переменной окружения MONITORING_GRAFANA_PORT (значение по умолчанию 3000).
Авторизоваться можно по умолчанию с логином admin и паролем password.
Рисунок 14 — Страница авторизации Grafana
После авторизации в web-интерфейсе Grafana для доступа к данным мониторинга с Offline ELM требуется перейти в раздел "Dashboards".
Для пользователя доступны два дашборда:
elm_alert_metrics — информация о состоянии метрик сервера Offline ELM.
- elm_monitoring — информация о состоянии хоста.
Рисунок 15 — Страница "Dashboards", выбор раздела мониторинга
Панель мониторинга "elm_alert_metrics"
Панель мониторинга "elm_alert_metrics" отображает информацию о состоянии внутренних метрик Offline ELM, а также web-интерфейса ELM.
Рисунок 16 — Дашборд "elm_alert_metrics"
Метрики сервера Offline ELM
Наименование дашборда | Наименование в Grafana | Наименование в Grafana | Описание | Наличие алерта |
---|---|---|---|---|
Состояние контейнеров | ||||
Docker container healthcheck state | docker_container_health | container elmi-offline-db healthcheck state code | Состояние контейнера elmi-offline-db | + |
docker_container_health | container elmi-offline-server healthcheck state code | Состояние контейнера elmi-offline-server | ||
Ошибки БД и отказ в обслуживании сервера | ||||
DB errors and denial of service ELM | databaseError | DB errors | Ошибка доступа к БД (Server) | - |
serviceDenial | Device service denial | Отказ в обслуживании (отклонение запросов из-за загруженности сервера) | - | |
Запрос лицензий | ||||
ELM license request | licenseRequest | License request | Запрос файла лицензии от устройства/ПО | - |
licenseRequestFailed | License request errors | Ошибка получения файла персональной лицензии устройством | - | |
Ошибки аутентификации и обращения от неподдерживаемых устройств | ||||
Authentication errors ELM | authFailed | Auth failed request | Ошибка аутентификации от устройства или ПО | - |
unsupportedAuthRequest | Unsupported auth request | Запрос аутентификации от устройств или ПО, которое не поддерживается лицензией | - | |
Ошибки доступа к USB-токену | ||||
ELM Token access errors | tokenAccessError | Token access errors | Ошибки доступности USB-токена | + |
Блокировка IP-адреса системой безопасности | ||||
ELM Block IP addresses | blockIp | IP block | Автоматическая блокировка IP-адреса | - |
Запрет доступа по IP | ||||
ELM Access denied by IP addresses | ipAccessDenied | IP access denied | Запрет доступа по IP | - |
Состояние токена | ||||
ELM USB token Status | tokenState | Token state | Состояние доступности USB-токена | - |
Состояния лицензии | ||||
Certificate state | certificateState | Certificate state | Состояние срока действия сертификата.
| |
Certificate expiry date | certificateExpiry | Certificate expiry date | Дата окончания срока действия сертификата | - |
Licensing state | licensingState | Licensing state | Состояние срока действия лицензии.
| + |
Licensing expiry date | licensingExpiry | Licensing expiry | Дата окончания срока действия лицензии | - |
Метрики web-сервера
Наименование дашборда | Наименование в Grafana | Описание | Наличие алерта |
---|---|---|---|
ELM active WEB connections | active | Текущее число активных клиентских соединений, включая Waiting-соединения | - |
reading | Текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса | ||
waiting | Текущее число бездействующих клиентских соединений в ожидании запроса | ||
writing | Текущее число соединений, в которых nginx в настоящий момент отвечает клиенту | ||
ELM processed WEB connections | handled | Суммарное число обработанных соединений. Как правило, значение этого параметра такое же, как accepted, если не достигнуто какое-нибудь системное ограничение | - |
accepted free | Суммарное число принятых клиентских соединений | ||
total requests | Суммарное число клиентских запросов | ||
Web UI Status | nginx_up | Текущее состояние web-сервера | - |
Панель мониторинга "elm_monitor"
Панель мониторинга "elm_monitor" предоставляет администратору Offline ELM общую информацию о хосте, в котором запущен Offline ELM, а также информацию о Docker-контейнерах Offline ELM.
Рисунок 17 — Панель мониторинга "elm_monitor"
На данной панели мониторинга представлена следующая информация:
- Средняя загруженность системы (за 1/5/15 минут);
- Количество ядер процессора;
- Загруженность процессора (в процентах);
- Количество используемой/общей оперативной памяти;
- Загрузка процессора Docker-контейнерами ELM;
- Использование памяти Docker-контейнерами ELM и JVM;
- Входящий и исходящий сетевой трафик Docker-контейнеров ELM (прирост за каждые 10 секунд);
- Информация о Docker-контейнерах ELM:
- имя сервиса;
- идентификатор процесса;
- код возврата (при работе контейнера — код 0);
- время старта контейнера;
- время работы контейнера;
- флаг нехватки оперативной памяти;
- проверка работоспособности сервисов и количество ошибок его проверки.
Алерты
На панели мониторинга "elm_alert_metrics" представлен список алертов:
- Docker container healthcheck state (состояние Docker контейнеров Offline ELM) — информирование о состоянии контейнеров Offline ELM (elmi-offline-db, elmi-offline-server);
- ELM Token access errors (состояние USB-токена) — информирование о проблемах с USB-токеном (например, USB-токен был извлечен);
- License renewal alert (состояние лицензии) — информирование о необходимости продления лицензии в случае, если срок действия текущей лицензии подходит к концу.
Рисунок 18 — Панель алертов
Система оповещений о событиях ELM
Оповещение пользователя осуществляется с помощью механизма оповещений сервиса Grafana на основе событий (алертов) системных метрик и метрик, передаваемых ELM.
По умолчанию доступны следующие типы оповещений:
- рассылка с помощью E-mail;
- отправка сообщений через Telegram-бота.
Оповещения предусмотрены для следующих алертов:
Docker container healthcheck state (состояние Docker контейнеров Offline ELM);
- ELM Token access errors (состояние USB-токена);
- License renewal alert (состояние лицензии).
Оповещения приходят в двух случаях:
- появление проблемы (например, срок лицензии подходит к концу) — приходит оповещение с пометкой Firing;
- разрешение проблемы (например, срок лицензии был продлен) — приходит оповещение с пометкой Resolved.
Настройка оповещений
Настройка параметров оповещений может осуществляться через интерфейс Grafana в разделе "Alerting" → "Notification policies".
Либо через указание переменных окружения в файле .env перед запуском сервиса мониторинга.
Доступные переменные окружения:
Название переменной | Описание |
---|---|
NOTIFICATION_EMAIL_ADDRESSES | перечень адресов для рассылки e-mail оповещений, разделенных символом ';' |
NOTIFICATION_TELEGRAM_BOT_TOKEN | токен для доступа к Telegram-боту для рассылки оповещений можно получить, создав бота с помощью запроса к Telegram-боту @BotFather |
NOTIFICATION_TELEGRAM_USER_ID | идентификатор пользователя для оповещения можно получить с помощью запроса к Telegram-боту @userinfobot |
При настройке оповещений с помощью e-mail также необходимо указать в .env файле параметры SMTP-сервера, через который должна осуществляться рассылка:
Название переменной | Описание |
---|---|
SMTP_HOST | адрес SMTP-сервера |
SMTP_NAME | имя пользователя |
SMTP_PASSWORD | пароль |
SMTP_FROM_ADDRESS | почта, с которой будут рассылаться оповещения |
SMTP_FROM_NAME | имя, используемое для рассылки оповещений |
SMTP_SKIP_VERIFY | пропустить проверку SSL-сертификата сервера |
SMTP_CERT_FILE | файл сертификата для настройки защищенного SSL-соединения |
SMTP_KEY_FILE | файл ключей для настройки защищенного SSL-соединения |
Для проверки правильности настройки оповещений Grafana предоставляет возможность отправки тестовых оповещений. Для это необходимо перейти в раздел "Alerting" → "Contanct points". У Contact point с названием "Email and telegram notification" нажать кнопку "View" (рисунок 19). Далее можно будет отправить тестовое оповещение в Telegram или на почту (рисунок 20).
Рисунок 19 — Раздел "Alerting" → "Contact points"
Рисунок 20 — Окно просмотра contact point
Мониторинг нескольких серверов Offline ELM
Функционал Offline ELM предполагает использование резервирования, т. е. применение двух серверов одновременно. Можно настроить мониторинг таким образом, чтобы получать всю необходимую информацию в одном месте об обоих серверах Offline ELM.
Конфигурирование сервисов мониторинга
На ноде2 в папке с конфигурационными файлами (elm-offline-data) выполнить следующие действия:
1. Настроить переменные окружения в файле .env (elm-offline-data/.env) на стороне сервера Offline ELM. А именно:
- адрес MONITORING_SERVER_ADDRESS сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик. Так как дефолтное значение переменной "MONITORING_SERVER_ADDRESS=127.0.0.1", без её установки мониторинг сервера Offline ELM не будет доступен при запуске сервисов мониторинга на отдельном хосте;
- порт MONITORING_SERVER_PORT сервера Offline ELM, куда Prometheus будет подключаться для сбора метрик;
- логин и пароль пользователя (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD), которые будут использоваться Prometheus для авторизации, InstanceID ноды.
2. В конфигурационном файле Telegraf telergaf.conf (elm-offline-data/config/telegraf/telegraf.conf) в разделе [[outputs.influxdb_v2]] необходимо указать адрес и порт сервиса мониторинга influxdb через переменную urls.
$ diff telegraf_old.conf telegraf.conf < urls = ["http://influxdb:8086"] --- > urls = ["http://192.168.1.2:8086"]
3. В elm-monitoring-data/.env файле установить переменную MONITORING_INFLUXDB_ADDRESS, которая указывает, на каком адресе будет доступен сервис InfluxDB.
4. Для сбора метрик с двух нод необходимо в конфигурационном файле Prometheus указать адрес ноды2. В файле elm-monitoring-data/prometheus/prometheus.yml в разделе"static_configs" добавить еще один "targets", указав адрес и порт ноды2 Offline ELM.
static_configs: - targets: ['192.168.1.1:8097'] labels: host: elmi-offline-server-node1 - targets: ['192.168.2.1:8097'] labels: host: elmi-offline-server-node2
5. В конфигурационном файле prometheus.yml (elm-monitoring-data/prometheus/prometheus.yml) изменить при необходимости данные логина и пароля пользователя для подключения к актуатору сервера Offline ELM, если для него в .env файле были указаны иные значения (MONITORING_SERVER_USERNAME и MONITORING_SERVER_PASSWORD).
basic_auth: username: 'user1' password: 'password1'
6. Необходимо перезапустить сервер Offline ELM и сервисы мониторинга.
$ docker compose down $ docker compose up -d
Настройка web-интерфейса
Изменения конфигурации, внесенные в Grafana, переключения между графиками разных нод могут применяться не сразу, а через определенный промежуток времени. Иногда этот интервал может достигать пяти минут.
Переключение между панелями двух нод выполняется с выбором соответствующей ноды в списке "Host".
Рисунок 21 — Выбор ноды
При переключении между нодами панели автоматически выбираются и переключаются на данные выбранной ноды. Однако следующие панели настроены только для node1:
Web UI Status
ELM USB token Status
Certificate state
Licensing state
Certificate expiry date
Licensing expiry date
Для отображения данных node2 необходимо вручную создать для них панели. Выполните следующие шаги:
1. Cоздайте дубликат панели state. Для этого наведите на панель, с которой будете делать копию, нажмите на три появляющиеся вертикальные точки и в меню "More" выберите "Dublicate" (рисунок 22).
Рисунок 22 — Создание дубликата
2. На панели-дубликате через то же меню с 3 вертикальными точками нажмите "Edit" и выполните следующие настройки (для лучшего понимания в скобках указаны обозначения параметров на рисунке 23):
Рисунок 23 — Выбор источника данных
2.1. Поменяйте заголовок панели (Title) чтобы их отличать, например, "Certificate state node2" (1), при необходимости также поменяйте заголовок и для панели, с которой сделали копию.
2.2. В поле "Metrics browser" замените значение в кавычках с node1 на node2 (2).
2.3. Далее нажмите на "Run queries" (3), таким образом проверив, что данные указаны верно, и обновив информацию.
2.4. В "Value options" в выпадающем меню "Fields" нужно выбрать актуальное поле с "instanceID=node2" (4).
3. Нажмите сначала кнопку "Save", а затем синюю кнопку "Apply" в правом верхнем углу, на панели должно отобразиться текущее актуальное состояние метрики.
Для панелей, содержащих срок действия ("Certificate expiry date" и "Licensing expiry date"), настройка немного отличается. Для лучшего понимания в скобках указаны обозначения параметров на рисунке 24.
3.1. Создайте дубликат панели, для этого наведите на панель, с которой будете делать копию, нажмите на три вертикальные точки и в меню "More" выберите "Dublicate".
3.2. На панели-дубликате через то же меню с 3 вертикальными точками нажмите "Edit".
3.3. Поменяйте заголовок панели (Title) чтобы их отличать, например, "Licensing expiry date node2" (1), при необходимости также поменяйте заголовок и для панели, с которой сделали копию.
3.4. В поле "Metrics browser" замените значение в кавычках с node1 на node2 (2).
Рисунок 24 — Изменение значения InstanceID
4. Под самой панелью перейдите в раздел "Transform data". В выпадающем меню "Operation", как и для панели состояния нужно выбрать актуальную метрику с "InstanceID=node2" (рисунок 25).
Рисунок 25 — Выбор метрики на вкладке "Transform data"
5. В "Value options" в выпадающем меню "Fields" нужно выбрать актуальное поле с "instanceID=node2", при выборе которого показывается корректная дата (не 1970 год).
Рисунок 26 — Выбор источника данных
6. После этого нажмите "Save", а затем синюю кнопку "Apply" в правом верхнем углу, на панели должен отобразиться срок.
Добавление алерта для резервного сервера
По умолчанию оповещение добавлено для node1, но при добавлении еще одного узла, например node2, для него необходимо добавить оповещение:
1. Для этого в Grafana зайдите в раздел "Alerting" →"Alert rules" и сделайте копию c существующего алерта, как показано на скриншоте:
Рисунок 27 — Создание дубликата алерта
2. Измените наименование оповещения в разделе "1. Enter alert rule name", для того чтобы их можно было различать, например, Docker container healthcheck state node2.
3. Далее в разделе "2. Define query and alert condition" нужно для каждого запроса отредактировать параметр host, т. е. вместо node1 указать node2.
Рисунок 28 — Настройка фильтра данных для алерта
4. После этого в правом верхнем углу нажмите подсвеченную синим цветом кнопку "Save rule and exit". Если сохранить не удается, то место с ошибкой будет подсвечено, нужно заполнить его, обычно в разделе "3. Set evaluation behavior" нужно указать "Evaluation group", см. пункт 3 в предыдущем разделе "Добавление оповещения в Grafana".
Рисунок 29 — Создание "Evaluation group" для алерта
5. Вернитесь в раздел "Alert rules". Нажмите кнопку "Export rules", далее "Download" и сохраните алерты в файл. Файл можно назвать как и текущий файл alert_rules.yml и далее заменить им файл в директории Grafana/provisioning/alertig, перезагрузить мониторинг.
Рисунок 30 — Экспорт правил алерта
Для информирования о необходимости продления лицензии существует алерт "License renewal alert" группа "license_notify". Когда создается отдельное оповещения для node2 необходимо в разделе "4. Configure labels and notifications" удостовериться, что установлена метка "alert_label=license_notify", для того чтобы оповещения приходили раз в неделю, а не как для остальных оповещений раз в 4 часа.
Рисунок 31 — Установка метки для алерта "License renewal alert"