Описание системы мониторинга
Система мониторинга 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. |
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:
|
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 | Пароль для авторизации на actuator | password |
LOKI_ADDRESS | Адрес, используемый для подключения promtail к loki | loki |
LOKI_PORT | Порт, используемый для подключения promtail к loki | 3100 |
ELM_INSTANCE_ID | Определяет основной или резервный сервер ELM | node1 |
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 | Время хранения метрик 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 | - |
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".
Для пользователя доступны два дашборда:
elm_alert_metrics — информация о состоянии метрик сервера Offline ELM.
- 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-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 можно командой:
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 │ └── 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 можно командой:
Пример итоговой конфигурации в .env файле для мониторинга Offline ELM:
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. Перезапустите контейнеры, чтобы применились настройки конфигурации:
Настройка системы мониторинга
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_*. Подробнее в разделе Настройка оповещений.
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.
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.
basic_auth: username: 'user1' password: 'password123'
6. В конфигурационном файле 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
7. Запустите сервисы мониторинга.
$ docker compose up -d
8. Убедитесь, что все контейнеры системы мониторинга ELM успешно запущены, используя команду "docker compose ps":
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-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, требуется указать следующие переменные окружения:
- 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 можно командой:
Пример итоговой конфигурации в .env файле для node1 Offline ELM:
Пример итоговой конфигурации в .env файле для node2 Offline ELM:
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. Перезапустите контейнеры, чтобы применились настройки конфигурации.
Настройка системы мониторинга
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_Х. Подробнее в разделе Настройка оповещений.
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.
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.
basic_auth: username: 'user1' password: 'password123'
6. В конфигурационном файле 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
7. Запустите сервисы мониторинга.
$ docker compose up -d
8. Убедитесь, что все контейнеры системы мониторинга ELM успешно запущены, используя команду "docker compose ps":
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. Выполнить команду:
$ 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
Мониторинг инфраструктуры
Цель мониторинга | Панель | Описание метрики | Алерт | Действие |
---|---|---|---|---|
Контроль работоспособности Docker-контейнеров | Docker container healthcheck state |
| Наименование:
Условие: Код возврата ненулевой Severity: critical |
|
Контроль доступности USB-токена | ELM USB token Status | elm_server_tokenState_value_events — Состояние доступности USB-токена | Наименование:
Условие: Код возврата ненулевой Severity: critical |
|
Контроль ошибок доступности USB-токена | ELM Token access errors | elm_server_tokenAccessError_value_events — Ошибки доступности USB-токена | Наименование:
Условие: Severity: critical |
|
Контроль доступности web-интерфейса | Web UI Status | nginx_up | Наименование:
Условие: Код возврата не равен 1 Severity: medium |
|
Контроль работоспособности базы данных | DB errors | elm_server_databaseError_value_events — Ошибка доступа к БД | Наименование:
Условие: Severity: critical |
|
Мониторинг состояния лицензии и сертификатов
Цель мониторинга | Панель | Описание метрики | Алерт | Действие |
---|---|---|---|---|
Заблаговременно сообщить о необходимости продления лицензии | Licensing state | elm_server_licensingState_value_events — Состояние срока действия лицензии:
| Наименование:
Условие: Код возврата ненулевой Severity: high | Запросить продление лицензии у поставщика оборудования |
Контроль срока действия лицензии | Licensing expiry date | elm_server_licensingExpiry_value_events — Дата окончания срока действия лицензии | Алерт не предусмотрен | - |
Сообщить о необходимости продления сертификата на USB-токене | Certificate state | elm_server_certificateState_value_events — Состояние срока действия сертификата
| Наименование:
Условие: Код возврата ненулевой Severity: critical | Запросить продление сертификата на USB-токене у поставщика оборудования |
Контроль срока действия сертификата на USB-токене | Certificate expiry date | elm_server_certificateExpiry_value_events — Дата окончания срока действия сертификата | Алерт не предусмотрен | - |
Мониторинг лицензируемых продуктов
Цель мониторинга | Панель | Описание метрики | Алерт | Действие |
---|---|---|---|---|
Мониторинг запросов лицензии | ELM license request | elm_server_licenseRequest_value_events — Запрос файла лицензии от устройства/ПО | Наименование:
Условие: Severity: medium |
|
Мониторинг неудачных запросов лицензии | ELM license request | elm_server_licenseRequestFailed_value_events — Ошибка получения файла персональной лицензии устройством | Наименование:
Условие: Severity: high |
|
Контроль ошибок аутентификации от лицензируемых продуктов | Authentication errors ELM | elm_server_authFailed_value_events — Ошибка аутентификации от устройства или ПО | Наименование:
Условие: В течение 4 часов каждый час фиксируется больше 3 ошибок Severity: low |
|
Контроль обращений от неподдерживаемых продуктов в рамках установленной лицензии | Authentication errors ELM | elm_server_unsupportedAuthRequest_value_events — Запрос аутентификации от устройств или ПО, которое не поддерживается лицензией | Наименование:
Условие: В течение 4 часов каждый час фиксируется больше 3 ошибок Severity: low |
|
Мониторинг работоспособности сервера Offline ELM
Цель мониторинга | Панель | Описание метрики | Алерт | Действие |
---|---|---|---|---|
Контроль способности сервера Offline ELM обрабатывать клиентские запросы | denial of service ELM | elm_server_serviceDenial_value_events — Отказ в обслуживании (отклонение запросов из-за загруженности сервера) | Наименование:
Условие: Severity: medium |
|
Мониторинг автоматически созданных блокирующих IP-правил | ELM Block IP addresses | elm_server_blockIp_value_events — Автоматическая блокировка IP-адреса | Наименование:
Условие: Severity: medium |
|
Мониторинг блокировки доступа по IP | ELM Access denied by IP addresses | elm_server_ipAccessDenied_value_events — Запрет доступа по IP | Наименование:
Условие: Severity: low |
|
Мониторинг подключений к web-интерфейсу | ELM processed WEB connections |
| Алерт не предусмотрен | - |
ELM active WEB connections |
| Алерт не предусмотрен | - |
Алерты
На панели мониторинга 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". |
Переменные окружения для настройки оповещений через 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