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

Для мониторинга параметров операционной системы и работоспособности Offline ELM рекомендуется развернуть Peeper. Можно подключиться к уже запущенному Peeper Server.

Подготовка к запуску

  1. Перед настройкой и запуском мониторинга Offline ELM настройте peeper-server (способ получения описан в документации Peeper). Сгенерируйте token в веб-интерфейсе Grafana (https://<адрес Peeper Server>:443). Зайдите в меню "Administration" → "Users and access" → "Service accounts" → "Add service account" → "Add service account token" → "Generate token". Либо подключайтесь к уже запущенному Peeper Server с существующим токеном. 

    Если на данном хосте уже есть запущенный peeper-client от другого продукта (ECCM, NAICE и т.д.), то дальнейшие шаги данного раздела выполнять не надо, так как образы контейнеров peeper-client, которые будут использоваться, уже должны быть загружены на данный хост.

    Если планируется мониторинг других продуктов на этом же хосте, рекомендуется выполнить запуск, следуя инструкциям данных продуктов, а затем выполнить шаги из раздела "Запуск мониторинга Offline ELM".

  2. Для offline-установки Peeper Client скачайте на сервер архив с файлами peeper-clienthttps://cloud.eltex-co.ru/index.php/s/n4RRd4rgx9pgxUO/download?path=%2F&files=peeper-client-offline.tar

    wget "https://cloud.eltex-co.ru/index.php/s/n4RRd4rgx9pgxUO/download?path=%2F&files=peeper-client-offline.tar" -O peeper-client-offline.tar

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

  3. Скачайте архив с конфигурационными файлами мониторинга Offline ELM. По ссылке https://cloud.eltex-co.ru/index.php/s/GzJfChMAVhkqINI необходимо скачать архив с именем elm-monitoring-data-1.7.tar.gz. После скачивания архива, его необходимо поместить на целевой хост, где запущен Offline ELM. 
    wget "https://cloud.eltex-co.ru/index.php/s/GzJfChMAVhkqINI/download/elm-offline-data-1.7-1.tar.gz"
  4. Далее распакуйте из архива peeper-client-offline.tar файлы на целевом хосте.

    mkdir -p peeper-client-offline && tar -xvf peeper-client-offline.tar -C peeper-client-offline ./setup.sh ./images/
  5. Выполните команду для загрузки образов peeper client из архива:

    sudo peeper-client-offline/setup.sh --load
  6. Проверка загруженных образов peeper 
    docker images | grep peeper
    hub.eltex-co.ru/peeper/peeper-agent:1.0                      8a02518cae51       29.1MB             0B        
    hub.eltex-co.ru/peeper/peeper-exporter-mysql:1.0             7cc6d80c606f       21.6MB             0B        
    hub.eltex-co.ru/peeper/peeper-exporter-postgres:1.0          4a68d9b7a3b7       22.7MB             0B        
    hub.eltex-co.ru/peeper/peeper-exporter-sql:1.0               155fa361e7aa       81.6MB             0B        
    hub.eltex-co.ru/peeper/peeper-provisioner-base:1.0           e6b9fc3476ba       64.6MB             0B     
    hub.eltex-co.ru/peeper/peeper-telegraf:1.0                   1626ce3d53fb        316MB             0B        
    hub.eltex-co.ru/peeper/peeper-vector:1.0                     06103db215c1        269MB             0B        
  7. Распакуйте конфигурационные файлы мониторинга Offline ELM из архива elm-monitoring-data-1.7.tar.gz в папку с запущенным Offline ELM (по умолчанию elm-offline-data-1.7-1)
    1. Если вы запускаете один Offline ELM: 
      tar -xzf elm-monitoring-data-1.7.tar.gz -O provisioning-single.tar.gz | tar -xzf - -C elm-offline-data-1.7-1/ 
    2. Если вы запускаете Offline ELM в режиме резервирования — два инстанса:
      tar -xzf elm-monitoring-data-1.7.tar.gz -O provisioning-reserve.tar.gz | tar -xzf - -C elm-offline-data-1.7-1/ 

На этом подготовка к запуску мониторинга завершена. 

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

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

Если планируется мониторинг других продуктов на этом же хосте, рекомендуется выполнить запуск мониторинга peeper, следуя инструкциям данных продуктов, а затем выполнить шаги из этого раздела.

  1. Перейдите в папку с запущенным Offline ELM, содержащую файлы Docker Compose
  2. В файл .env внесите следующие изменения:

    1. В переменной PEEPER_HOST укажите IP-адрес или доменное имя для подключения к Peeper-server.
    2. В переменной PEEPER_EXTERNAL_MODE установите значение true во избежание конфликтов при создании external сети в Docker.
    3. В переменной PEEPER_TOKEN укажите токен, полученный в пункте 1 раздела "Подготовка к запуску".
    4. В переменной DOCKER_GID укажите id группы пользователей docker.

    5. В переменной ELM_INSTANCE_ID укажите id ноды. Если вы запускаете только один сервер, то оставьте значение node1.

      ELM_INSTANCE_ID=node1
      PEEPER_HOST="peeper-server.loc" # Доменное имя или IP-адрес Peeper-сервера
      PEEPER_EXTERNAL_MODE="true" # false, если на сервере отсутствует external network в docker
      PEEPER_TOKEN="" # Токен сервисного аккаунта, который создается в peeper-server
      DOCKER_GID= # id группы пользователей docker 
  3. Данный шаг зависит от того, запускается ли мониторинг через Peeper на данном хосте только для Offline ELM или он уже запущен (планируется к запуску) для другого продукта (сервиса) компании Eltex на этом же хосте:
    1. Если мониторинг запускается только для Offline ELM:
      docker compose -f docker-compose-peeper.yml up -d
    2. Если есть уже запущенный мониторинг Peeper на этом хосте для другого продукта (сервиса) компании Eltex:
      docker compose -f docker-compose-peeper.yml up -d elm-peeper-provisioner
      Ошибка пересечения сетей

      В случае возникновения ошибки, указанной ниже, необходимо отредактировать файл .env и указать значение переменной PEEPER_EXTERNAL_MODE="true".

      Error response from daemon: error while removing network: network internal has active endpoints
  4. Перейдите в веб-интерфейс Peeper Server и убедитесь, что в списке дашбордов появилась папка ELM с дашбордом Offline ELM.


Загрузка и обновление данных мониторинга может занимать от 1 до 5 минут.

5. В случае корректной настройки, на дашборде будет отображаться оперативная информация о состоянии Offline ELM.

Запуск и настройка мониторинга окончены. Подробнее о информации на панелях мониторинга и алертах написано в разделе "Описание мониторинга Offline ELM".


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

Если планируется мониторинг других продуктов на этом же хосте, рекомендуется выполнить запуск мониторинга peeper по инструкции данных продуктов, а затем выполнить шаги из этого раздела.

В разделе "Подготовка к запуску" в п.7 должен быть распакован архив provisioning-reserve.tar.gz.

  1. Перейдите в папку с запущенным Offline ELM, содержащую файлы Docker Compose
  2. В файл .env внесите следующие изменения:

    1. В переменной PEEPER_HOST укажите IP-адрес или доменное имя для подключения к Peeper-server. 
    2. В переменной PEEPER_EXTERNAL_MODE установите значение true во избежание конфликтов при создании external сети в Docker.
    3. В переменной PEEPER_TOKEN укажите токен, полученный в пункте 1 раздела "Подготовка к запуску".
    4. В переменной DOCKER_GID укажите id группы пользователей docker.

    5. В переменной ELM_INSTANCE_ID укажите id ноды. Для основного сервера node1, для резервного node2.

      ELM_INSTANCE_ID=node1
      PEEPER_HOST="peeper-server.loc" # Доменное имя или IP-адрес Peeper-сервера
      PEEPER_EXTERNAL_MODE="true" # false, если на сервере отсутствует external network в docker
      PEEPER_TOKEN="" # Токен сервисного аккаунта, который создается в peeper-server
      DOCKER_GID= # id группы пользователей docker 
  3. Данный шаг зависит от того, запускается ли мониторинг через Peeper на данном хосте только для Offline ELM или он уже запущен (планируется к запуску) для другого продукта (сервиса) компании Eltex на этом же хосте:
    1. Если мониторинг запускается только для Offline ELM:
      docker compose -f docker-compose-peeper.yml up -d
    2. Если есть уже запущенный мониторинг Peeper на этом хосте для другого продукта (сервиса) компании Eltex:
      docker compose -f docker-compose-peeper.yml up -d elm-peeper-provisioner
      Ошибка пересечения сетей

      В случае возникновения ошибки, указанной ниже, необходимо отредактировать файл .env и указать значение переменной PEEPER_EXTERNAL_MODE="true".

      Error response from daemon: error while removing network: network internal has active endpoints
  4. Выполните пункты 1-3 для второй ноды Offline ELM. Не забудьте указать node2 в env-файле в переменной ELM_INSTANCE_ID.
  5. Перейдите в веб-интерфейс Peeper Server и убедитесь, что в списке дашбордов появилась папка ELM с дашбордом Offline ELM.

    Загрузка и обновление данных мониторинга может занимать от 1 до 5 минут.

  6. В случае корректной настройки на дашборде будет отображаться оперативная информация о состоянии Offline ELM.

Запуск и настройка мониторинга окончены. Подробнее о информации на панелях мониторинга и алертах написано в разделе "Описание мониторинга Offline ELM".

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

Система мониторинга версии 1.7 несовместима с системой мониторинга предыдущих версий.

При наличии установленной системы мониторинга Offline ELM 1.6 необходимо выполнить следующие действия:

  1. Перейти в директорию с конфигурационными файлами мониторинга 1.6.
  2. Выполнить остановку контейнеров с очищением Docker volume.
    $ docker compose down --remove-orphans
  3. Выполнить запуск мониторинга 1.7 по инструкции.

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

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

docker compose -f docker-compose-peeper.yml down -v


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

Для каждой панели есть возможность узнать подробнее какую информацию она показывает. Для этого необходимо навести курсор на значок "i"

Метрики сервера 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 and denial of service ELM

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

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

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

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

Severity: critical

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

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

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

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 dates

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 dateelm_server_certificateExpiry_value_events — Дата окончания срока действия сертификата Алерт не предусмотрен

-

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

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

ELM license request

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

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

  • Удостовериться, что лицензируемые продукты получили лицензию
Мониторинг неудачных запросов лицензииELM license requestelm_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 обрабатывать клиентские запросыDB errors and 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_server_licenseRequest_value_events на панели ELM license request
  • Если произошел резкий скачок количества запросов, а через некоторое время все запросы в порядке очереди были обработаны — поведение штатное
  • Если проблема появляется регулярно, собрать логи, завести заявку в техническую поддержку
Мониторинг автоматически созданных блокирующих 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 в настоящий момент отвечает клиенту
Алерт не предусмотрен-