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

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

Peeper состоит из серверной части (Peeper Server) и клиентской части (Peeper Client). Peeper Client запускается на хосте с Offline ELM и подключается к Peeper Server. Можно использовать уже развернутый Peeper Server. На одном хосте должен работать только один экземпляр Peeper Client, даже если осуществляется мониторинг нескольких продуктов компании «ЭЛТЕКС».

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

  1. Установите Peeper Server или используйте существующий. Создайте токен сервисного аккаунта в web-интерфейсе Peeper Server (https://<адрес Peeper Server>:443): Administration → Users and access → Service accounts → Add service account. При создании сервисного аккаунта назначьте ему роль Editor или Admin, затем нажмите Add service account token → Generate token. Если токен сервисного аккаунта уже создан, используйте его для подключения Offline ELM к Peeper Server.
  2. Если Peeper Client еще не установлен или его требуется обновить, для offline-установки скачайте на сервер архив образов Peeper Client peeper-client-offline.tar. После скачивания архива, его необходимо поместить на целевой хост, где запущен Offline ELM. 

    wget "https://cloud.eltex-co.ru/index.php/s/n4RRd4rgx9pgxUO/download?path=%2F&files=peeper-client-offline.tar" -O peeper-client-offline.tar
  3. Скачайте архив elm-monitoring-data-1.7.tar.gz с конфигурационными файлами мониторинга Offline ELM из комплекта поставки Offline ELM. После скачивания архива, его необходимо поместить на целевой хост, где запущен Offline ELM. 
    wget "https://cloud.eltex-co.ru/index.php/s/GzJfChMAVhkqINI/download?path=%2F&files=elm-monitoring-data-1.7.tar.gz" -O elm-monitoring-data-1.7.tar.gz
  4. Если Peeper Client еще не установлен или его требуется обновить, загрузите образы из архива с помощью скрипта install-offline.sh из комплекта Offline ELM. В параметре --env укажите путь к файлу .env действующей установки. Например:

    sudo ./install-offline.sh --peeper-client peeper-client-offline.tar --env /home/user/elm-offline-1.7-2/elm-offline-data-1.7-2/.env

    В примере ниже показана загрузка Peeper Client 1.2, фактическая версия зависит от содержимого архива.

    Пример вывода скрипта
    $ sudo ./install-offline.sh --peeper-client peeper-client-offline.tar --env /home/user/elm-offline-1.7-2/elm-offline-data-1.7-2/.env
    INFO: Checking required commands...
    INFO: Validating arguments...
    INFO: Checking peeper-client archive is correct...
    INFO: Checking ENV-file is correct...
    INFO: Installing peeper-client from 'peeper-client-offline.tar'.
    INFO: Unpacking peeper-client archive.
    INFO: Loading peeper-client Docker images.
    Loaded image: hub.eltex-co.ru/peeper/peeper-agent:1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-exporter-mysql:1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-exporter-postgres:1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-exporter-sql:1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:ecss10-1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:ecss-geo-1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:elph-1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:evi-1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:peeper-1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-provisioner:smartivr-1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-telegraf:1.2
    Loaded image: hub.eltex-co.ru/peeper/peeper-vector:1.2
    INFO: Loaded peeper-client version '1.2' from the archive.
    INFO: Installed peeper-client version '1.2' from the archive is the active version.
    INFO: The active peeper-client version is '1.2' (tag '1.2').
    INFO: Set 'APP_VERSION' value '1.2' in file '/home/user/elm-offline-1.7-2/elm-offline-data-1.7-2/.env'.
    INFO: Peeper-client setup completed successfully.



    Внимание

    Для корректной работы мониторинга Offline ELM требуется Peeper Client версии 1.1 или выше. Уже работающий на хосте Peeper Client, используемый для мониторинга другого продукта компании, можно использовать и для Offline ELM — повторная загрузка образов не требуется.

    Если на момент установки Offline ELM на хосте уже были загружены образы Peeper Client, скрипт автоматически определяет их версию и записывает соответствующий тег в APP_VERSION файла .env. При наличии нескольких доступных версий выбирается более новая. Для версии ниже 1.1 выводится предупреждение о необходимости обновления.

  5. Распакуйте конфигурационные файлы мониторинга Offline ELM из архива elm-monitoring-data-1.7.tar.gz в папку с запущенным Offline ELM (по умолчанию elm-offline-data-1.7-2)
    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-2/ 
    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-2/ 

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

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

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

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

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

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

      ELM_INSTANCE_ID=node1
      PEEPER_HOST="peeper-server.loc" # Доменное имя или IP-адрес Peeper-сервера
      PEEPER_IP="192.168.1.1" # IP сервера Peeper, на которое будет резолвиться доменное имя сервера Peeper
      EXTERNAL_MODE="true" # false, если на сервере отсутствует external network в docker
      PEEPER_TOKEN="" # Токен сервисного аккаунта, который создается в peeper-server
      DOCKER_GID= # id группы пользователей docker 
  3. Запустите мониторинг:

    Внимание

    Способ запуска мониторинга зависит от использования Peeper Client другими продуктами на этом хосте

    1. Если Peeper Client предназначен только для Offline ELM, запустите его сервисы командой:
      docker compose -f docker-compose-peeper.yml up -d
    2. Если Peeper Client уже используется для другого продукта, не запускайте дополнительный экземпляр Peeper Client. При наличии, удалите ранее созданный контейнер elm-peeper-provisioner, затем запустите его для передачи дашбордов и алертов Offline ELM на Peeper Server:
      docker rm elm-peeper-provisioner
      docker compose -f docker-compose-peeper.yml up -d elm-peeper-provisioner

    Ошибка пересечения сетей
    В случае возникновения ошибки, указанной ниже, необходимо отредактировать файл .env и указать значение переменной 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

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

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

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

    6. В переменной ELM_INSTANCE_ID укажите id ноды.

      ELM_INSTANCE_ID=node1
      PEEPER_HOST="peeper-server.loc" # Доменное имя или IP-адрес Peeper-сервера
      PEEPER_IP="192.168.1.1" # IP сервера Peeper, на которое будет резолвиться доменное имя сервера Peeper
      EXTERNAL_MODE="true" # false, если на сервере отсутствует external network в docker
      PEEPER_TOKEN="" # Токен сервисного аккаунта, который создается в peeper-server
      DOCKER_GID= # id группы пользователей docker 
  3. Запустите мониторинг:

    Внимание

    Способ запуска мониторинга зависит от использования Peeper Client другими продуктами на этом хосте

    1. Если Peeper Client предназначен только для Offline ELM, запустите его сервисы командой:
      docker compose -f docker-compose-peeper.yml up -d
    2. Если Peeper Client уже используется для другого продукта, не запускайте дополнительный экземпляр Peeper Client. При наличии, удалите ранее созданный контейнер elm-peeper-provisioner, затем запустите его для передачи дашбордов и алертов Offline ELM на Peeper Server:
      docker rm elm-peeper-provisioner
      docker compose -f docker-compose-peeper.yml up -d elm-peeper-provisioner

    Ошибка пересечения сетей
    В случае возникновения ошибки, указанной ниже, необходимо отредактировать файл .env и указать значение переменной 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 на Peeper

  1. Перейдите в рабочую директорию старого мониторинга версии 1.6 (не в каталог установки Offline ELM) и остановите его контейнеры:
    docker compose down --remove-orphans
  2. Обновите Offline ELM до версии 1.7 согласно разделу "Обновление Offline ELM" в инструкции по установке и обслуживанию.

  3. Выполните шаги разделов "Подготовка к запуску" и "Запуск мониторинга Offline ELM".

Обновление Peeper Client

  1. Для offline-установки скачайте на сервер архив образов Peeper Client peeper-client-offline.tar. После скачивания архива, его необходимо поместить на целевой хост, где запущен Offline ELM. 

    wget "https://cloud.eltex-co.ru/index.php/s/n4RRd4rgx9pgxUO/download?path=%2F&files=peeper-client-offline.tar" -O peeper-client-offline.tar
  2. В директории комплекта поставки Offline ELM запустите скрипт install-offline.sh, указав путь к архиву с образами Peeper Client и файлу .env действующей установки. Например:

    sudo ./install-offline.sh --peeper-client peeper-client-offline.tar --env /home/user/elm-offline-1.7-2/elm-offline-data-1.7-2/.env

    Скрипт загрузит образы, определит активную версию Peeper Client и запишет ее тег в APP_VERSION указанного файла .env. Работающие контейнеры скрипт не перезапускает.

  3. Перезапустите Peeper Client в зависимости от способа его запуска:
    1. Если Peeper Client запущен из рабочей директории Offline ELM, перейдите в нее и выполните:
      cd /home/user/elm-offline-1.7-2/elm-offline-data-1.7-2
      docker compose -f docker-compose-peeper.yml down
      docker compose -f docker-compose-peeper.yml up -d

    2. Если Peeper Client изначально запущен из конфигурации другого продукта, не выполняйте команды перезапуска из рабочей директории Offline ELM, иначе будет запущен дополнительный экземпляр Client. Укажите требуемый тег версии в конфигурации другого продукта, затем перезапустите существующий Peeper Client из его рабочей директории.

Скрипт install-offline.sh изменяет APP_VERSION только в файле .env Offline ELM, указанном при его запуске, и не изменяет конфигурацию ранее установленного Peeper Client.

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

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

Команда остановки мониторинга Offline ELM
docker compose -f docker-compose-peeper.yml down

Описание мониторинга 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 в настоящий момент отвечает клиенту
Алерт не предусмотрен-


  • Нет меток