Версия ПО 0.5


Общая информация

Peeper — система мониторинга программных продуктов Eltex.

Архитектура Peeper состоит из двух частей:

  1. Клиентская. Устанавливается на одном сервере с продуктом, например ECCM, Softswitch или SoftWLC. В ее задачи входит сбор метрик и их отправка на серверную часть.
  2. Серверная. В ее задачи входит агрегация и хранение метрик, визуализация метрик в виде графиков, отправка алертов об авариях в Telegram.

Все ПО предоставляется в виде Docker-образов, размещенных в публичных репозиториях, и файлов compose.yml и .env для деплоя контейнеров.

Зачем необходим Peeper

Peeper нужен, чтобы:

Функции и свойства Peeper

Peeper прост в развертывании и эксплуатации, что крайне важно для системы мониторинга. Также Peeper позволяет:

  1. собирать, хранить метрики и логи;
  2. визуализировать данные в виде дашбордов, графиков, диаграмм, таблиц;
  3. высылать алерты в случае срабатывания триггера по какой-либо метрике.

Архитектура Peeper

В архитектуре Peeper предусмотрено, что для получения метрик со стороны Peeper Client не требуется открывать никаких дополнительных портов на стороне сервера с программным продуктом Eltex. Отправка метрик с этого сервера производится методом Push.

Все входящие запросы в Peeper Server идут по HTTPs через Peeper Proxy по 443 порту.

Установка

Для успешной установки Peeper Server и Peeper Client на всех серверах должен быть предустановлен docker и docker compose https://docs.docker.com/engine/install/ubuntu/

Peeper Server

Требования к серверу

ОСUbuntu 22.04 Server или выше
CPU2
RAM4 ГБ
Disk100 ГБ
Предустановленное ПОDocker, Docker Compose

Для установки скачайте на сервер для peeper-server архив с файлами: https://cloud.eltex-co.ru/index.php/s/cTfe9I3JyTxefjR

Пароль для скачивания можно запросить в Коммерческом Отделе Eltex или в ServiceDesk: https://servicedesk.eltex-co.ru/

Далее распакуйте из архива файлы:


tar -xvf peeper-deploy.tar

Cкорректируйте переменные в файле .env. Как минимум необходимо скорректировать 1 переменную: PEEPER_HOST. В ней нужно указать IP сервера Peeper, по которому пользователи и администраторы будут открывать WEB Peeper.

При установке Peeper Server автоматически производится провиженинг дашбордов и алертов для метрик Linux, Docker, Postgres, Haproxy, входящего в состав Peeper Server.

Команда установки Peeper Server:

sudo ./setup.sh -i


В compose.yml Peeper Server для сервиса peeper-grafana используется volume "peeper-grafana-config", который монтируется в директорию /etc/grafana в контейнере. Часто при настройке LDAP в Grafana или других функций через WEB вручную конфигурация сохраняется в /etc/grafana, например, в таких файлах как grafana.ini

Таким образом, чтобы при переустановке Peeper не потерять эти данные, достаточно не удалять этот volume, а примонтировать его к новой инсталляции Peeper: все настройки будут сохранены.

Peeper Client

Для установки Peeper Client скачайте на сервер peeper-client архив с файлами: https://cloud.eltex-co.ru/index.php/s/lEmEnAl0qnkH0JU

Пароль для скачивания можно запросить в Коммерческом Отделе Eltex или в ServiceDesk: https://servicedesk.eltex-co.ru/

Далее распакуйте из архива файлы:

tar -xvf peeper-client.tar

Cкорректируйте переменные в файле .env. Как минимум необходимо скорректировать 2 переменные: PEEPER_HOST, PEEPER_IP. В них нужно указать доменное имя и IP хоста Peeper Server, чтобы клиент знал, куда отправлять метрики.

Если вы не используете для доступа к Peeper Server доменное имя, то просто укажите IP Peeper Server в обоих переменных  PEEPER_HOST, PEEPER_IP

Сгенерируйте token в WEB Grafana (https://<адрес Peeper Server>:443). Зайдите в меню "Administration" → "Users and access" → "Service accounts" → "Add service account" → "Add service account token" → "Generate token".

Сохраните token для доступа к Grafana в файле peeper-token:

echo <token> > peeper-token

После запуска Peeper Client токен из файла peeper-token будет автоматически удален

Команда установки Peeper Client:

sudo ./setup.sh -i <app>

где <app> — имя ПО Элтекс, установленное на данном сервере, например eccm или softwlc.
При установке Peeper Client на сервера с ECCM или SoftWLC необходимо распаковать архив с Peeper в дирректорию, откуда происходила установка SoftWLC или ECCM, чтобы установочные файлы Peeper оказались на одном уровне с папками "softwlc" или "eccm".  

Peeper Client может быть установлен на сервер с Ubuntu без развернутых на нем приложений Элтекс для мониторинга только Linux и Docker. Тогда команда установки Peeper Client будет такой:

sudo ./setup.sh -i none

При запуске Peeper Client предложит переопределить значение Hostname сервера, под которым данный хост будет идентифицирован на стороне Peeper Server.  Можно нажать Enter и тогда будет использовано имя Hostname сервера или можно ввести новое имя, удобное администратору для идентификации хоста среди остальных.

Графический интерфейс

Графический интерфейс представляет из себя GUI Grafana, доступный по адресу: https://<адрес сервера>

Логин/пароль по умолчанию: admin/admin (корректируется в файле .env)

Дашборды можно найти в меню Dashboards.

Для получения информации о каждом графике в Дашборде наведите курсор на иконку i над графиком. Отобразится текстовая подсказка с информацией по данному графику.

Настройка отправки уведомлений в Telegram

Для того, чтобы уведомления в результате срабатывания Алертов отправлялись в чат Telegram, необходимо в WEB интерфейсе Grafana перейти в раздел "Alerting" → "Contact Points". Там для Contact Point "Telegram" нажимаем "Edit",  в поле Chat ID вводим ID чата Telegram, куда должны отправляться уведомления, а в поле Bot API Token нажимаем Reset и вводим token Telegram бота, который должен быть добавлен в чат. Проверить корректность введенных данных и доставку алертов в чат можно кнопкой "Test".
 Далее сохраняем настройки кнопкой "Save Contact Point".

Использование модуля peeper-blackbox для мониторинга доступности сайтов

На данный момент при стандартной установке peeper-server, устанавливает peeper-exporter-blackbox, который позволяет нам мониторить необходимые сайты, следить за состоянием сертификатов и уведомлять нас о проблемах с доступностью.

Для настройки целей мониторинга, необходимо добавить в файл http/blackbox_http.yaml или создать новый с названием http/blackbox_*.yaml где вместо * - ваше название. Внутри файла необходимо добавить цели:

- targets:
  - https://eltex-co.ru
  - ...                 # ваши сайты
  labels:
    group: eltex  # название группы сайтов
    module: http_2xx  # модуль для опроса сайта

После добавления нужно просто сохранить файл на сервере, подождать 2-3 минуты и цель внесённая в конфиг, появится у вас в дашборде.

Есть 6 видов скрейп модулей для мониторинга разных по функциональности сайтов:

Название модуляОписаниеПротоколОсобенности
http_2xxСтандартный модуль для мониторинга большинства сайтовHTTP/HTTPSПроверка доступности и получения кода ответа 2xx
http_2xx_custom_caСтандартный модуль для мониторинга сайтов с кастомным CAHTTPSТребует CA сертификат по пути certificates/ca/ca.crt
http_2xx_tls_strictМодуль для мониторинга только HTTPS сайтовHTTPSСтрогая проверка TLS/SSL соединения
http_tls_expiryМодуль для мониторинга SSL сертификатовHTTPSПроверяет срок действия сертификата без загрузки контента
http_post_json_2xxМодуль для мониторинга POST JSON endpointsHTTP/HTTPSОтправка POST запросов с JSON данными, проверка кода 2xx
icmpМодуль для проверки доступности по IPICMPПроверка доступности узла через ping

Резервное копирование Peeper

Контейнер с бэкапами умеет записывать метрику vm_backup_status и vm_backup_timestamp. Внутри peeper есть алерт, который показывает, если последний бэкап завершился с ошибкой или не выполнился.

Снятие резервных копий

Для резервного копирования peeper-server есть отдельный контейнер, который запускается вместе со всем peeper. Данный контейнер, с помощью утилит резервного копирования Victoria Metrics осуществляет резервное копирование истории метрик. конифгурация данного контейнера происходит в .env файле:

PEEPER_BACKUP_KEEP="1" # Количество резервных копий, которые будут сохранены в системе
PEEPER_BACKUP_DIR="./backups" # Путь в системе, где будут сохраняться резервные копии (указывать полный путь до папки)
PEEPER_BACKUP_CRON="0 0 * * *" # Cron расписание по которому будут сниматься резервные копии

Настройки выше конфигурируют автоматические бэкапы. В случае когда вам нужно воспользоваться снятием ручным снятием резервной копии, можно использовать данную команду:

docker exec peeper-vmbackup-toolbox sh /backup.sh

Восстановление резервных копий

Для восстановления из резервной копии, необходимо действовать так:

  1. Резервную копию необходимо положить в папку указанную в PEEPER_BACKUP_DIR и запомнить название бэкапа
  2. После этого необходимо выполнить команду:
docker stop peeper-metrics || docker exec -i peeper-vmbackup-toolbox sh /restore.sh **название бэкапа без tar.gz** || docker start peeper-metrics || docker restart peeper-grafana
  1. Проверить, что в процессе восстановления не возникло проблем и контейнеры запустились:
docker ps | grep peeper

Взаимодействие с сертификатами Peeper

Для работы peeper используется несколько сертификатов, которые описаны ниже:

  1. HTTPS сертификат. При запуске peeper должен находится по пути certificates/crt/ваш-домен-для-peeper.pem. Название сертификата должно быть равно вашему домену, который будет использоваться для peeper. Данный сертификат должен быть в формате .pem и содержать внутри:
    1. Приватный ключ
    2. Сертификат домена
    3. Цепочку доверия (Intermediate + Root CA)

Собрать цепочку сертификатов можно так:

  1. Откройте файлы сертификатов в текстовом редакторе
  2. Создайте новый документ
  3. Скопируйте в новый документ содержание каждого из файлов в последовательности: сертификат, ключ, корневой сертификат
  4. Сохраните файл как ваш-домен-для-peeper.pem

В случае если вы добавляете или обновляете сертификат после запуска peeper, вам необходимо будет перезапустить peeper-haproxy командой:

docker restart peeper-haproxy
  1. CA сертификат.
docker restart peeper-exporter-blackbox

Ошибка пересечения сетей

В случае возникновения подобной ошибки:

Error response from daemon: error while removing network: network internal has active endpoints

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