Версия ПО 0.8

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

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

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

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

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

Для чего необходим Peeper

  1. Предотвращать появление чрезвычайной ситуации на серверах и приложениях клиента заранее.
  2. В случае ЧС иметь возможность разрешить инцидент (иметь всю необходимую информацию в одном месте для того, чтобы завершить расследование).
  3. Иметь возможность оперативно оценить внутреннее состояние системы по ее внешним показателям.

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

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

Peeper позволяет:

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

Архитектура 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 ГБ (x2 при использовании peeper-backup)
Предустановленное ПОDocker, Docker Compose

Динамика потребления ресурсов сервером

На один сервер, добавленный в Peeper, требуется в среднем около 30 МБ места в сутки. Рост базы данных будет длиться до тех пор, пока установленный вами срок хранения не истечет (например, 60 дней). После истечения срока хранения старые записи начнут автоматически удаляться, освобождая место для новых, и рост прекратится. 

Если ваши серверы активны, пишут большое количество логов или имеют много запущенных контейнеров, места может потребоваться больше. 

Описание сервисов

НазваниеОписание
peeper-agentАвтоматически находит запущенные приложения и передает данные об их работе в центральное хранилище.
peeper-backupОтвечает за регулярное создание резервных копий и восстановление системы из архива.
peeper-exporter-blackboxПроверяет доступность веб-сайтов и сервисов, имитируя действия реального пользователя.
peeper-grafanaВеб-интерфейс для просмотра графиков и управления уведомлениями об авариях.
peeper-logsЦентральная база данных для хранения и поиска по журналам событий (логам).
peeper-metricsЦентральная база данных для хранения числовых метрик производительности.
peeper-provisionerАвтоматически загружает и настраивает графики и правила оповещений в интерфейсе системы (выполняется только при запуске, затем находится в выключенном состоянии).
peeper-proxyОбеспечивает безопасный доступ к системе мониторинга через единую точку входа.
peeper-telegrafСледит за состоянием самого сервера Linux и среды запуска контейнеров Docker.
peeper-vectorЗанимается первичным сбором логов, их обработкой и отправкой в хранилище.

Стандартная установка 

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

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

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

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

Offline установка 

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

Пример команды для загрузки архива:
wget "https://cloud.eltex-co.ru/index.php/s/n4RRd4rgx9pgxUO/download?path=%2F&files=peeper-deploy-offline.tar" -O peeper-deploy-offline.tar
После скачивания архива, его необходимо поместить на целевой хост. Сделать это можно любым доступным способом. 

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

tar -xvf peeper-deploy-offline.tar

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

Важно!

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

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

sudo ./setup.sh --load
sudo ./setup.sh -i

Описание опций скрипта setup.sh

Вся установка и дальнейшая работа с Peeper Client должна происходить через установочный скрипт setup.sh. Ниже описаны ключи для взаимодействия со скриптом:

Длинный ключКороткий ключОписание
--backup-BЗапускает систему с включенным модулем резервного копирования.
--blackbox-exporter-bЗапускает модуль внешней проверки доступности сервисов.
--compose-v1-1Принудительно использует старую версию Docker Compose.
--config-cВыводит в консоль итоговую конфигурацию запуска.
--debug-dЗапускает систему в режиме отладки с подробным выводом информации.
--email-eВключает отправку уведомлений об авариях на электронную почту.
--help-hВыводит справочную информацию по всем доступным командам.
--hostname <NAME>-HПозволяет вручную задать имя хоста для системы.
--install-iЗапускает процесс установки системы.
--interactive-IВключает интерактивный режим работы (для отладки).
--load-lЗагружает компоненты системы из локальных файлов (офлайн установка).
--prune-PОчищает неиспользуемые данные и образы для освобождения места.
--save-sСохраняет компоненты в архив для переноса на сервера без интернета.
--uninstall-uЗапускает процесс удаление системы с сохранением данных.
--version-vОтображает номер текущей версии системы.

Пример запуска с ключами:

sudo ./setup.sh -i -B -e

Работа с файлами переменных 

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

Например:

.env.backup
BACKUP_ENABLED=true
.env.blackbox
BLACKBOX_EXPORTER_ENABLED=true
.env.email
EMAIL_ENABLED=true

Если эти значения установлены в `true`, соответствующие модули будут запускаться автоматически при выполнении команды:

sudo ./setup.sh -i  

Важно!

У модулей в .env файлах, могут содержаться переменные, которые необходимо заполнять при использовании модуля. Информация об этих переменных лежит в тех же .env файлах.

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

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

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

Для отправки уведомлений в чат Telegram при срабатывании алертов есть два способа настройки:

  1. В web-интерфейсе Grafana перейти в раздел "Alerting" → "Contact Points". Далее для Contact Point "Telegram" необходимо нажать "Edit",  в поле Chat ID ввести ID чата Telegram, куда должны отправляться уведомления, а в поле Bot API Token нажать Reset и ввести token Telegram бота, который должен быть добавлен в чат. Проверить корректность введенных данных и доставку алертов в чат можно кнопкой "Test". Далее необходимо сохранить настройки кнопкой "Save Contact Point".
  2. В файле .env, на сервере peeper указать токен в переменную TELEGRAM_BOT_TOKEN, а в переменную TELEGRAM_CHAT_ID указать chat-id. 

Настройка сертификатов Peeper

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

HTTPS сертификат

При запуске peeper должен находится по пути certificates/crt/ваш-домен-для-peeper.pem. Название сертификата должно быть равно вашему домену, который будет использоваться для peeper. Данный сертификат должен быть в формате .pem и содержать внутри:

    1. Приватный ключ.
    2. Сертификат домена.
    3. Цепочку доверия (Intermediate + Root CA).

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

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

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

docker restart peeper-proxy

CA сертификат

Данный сертификат не обязательный, если у вас нет локального домена с корневым сертификатом, который нужно отслеживать, и если не используется blackbox. Сертификат необходимо положить в certificates/ca/ca.crt. После добавления сертификата может потребоваться перезапуск blackbox. Перезапуск осуществляется следующей командой:

docker restart peeper-exporter-blackbox

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

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

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

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

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

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

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

Проверяет срок действия сертификата без загрузки контента

http_post_json_2xxМодуль для мониторинга POST JSON endpoints.HTTP/HTTPSОтправка POST запросов с JSON данными, проверка кода 2xx
icmpМодуль для проверки доступности по IP.ICMPПроверка доступности узла через ping

Настройка резервного копирования 

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

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

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

PEEPER_BACKUP_KEEP="1" # Количество резервных копий, которые будут сохранены в системе

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

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

docker exec peeper-backup sh /backup.sh

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

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

  1. Резервную копию необходимо положить в папку указанную в PEEPER_BACKUP_DIR и запомнить название бэкапа.
  2. После этого необходимо выполнить команды, дожидаясь завершения:
docker stop peeper-metrics peeper-logs 
docker exec -i peeper-backup sh /restore.sh logs|metrics **название архива резервной копии** 
docker start peeper-metrics peeper-logs

Важно!

Внутри контейнера peeper-backup есть 2 параметра восстановления. Для логов logs, для метрик metrics.

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

docker ps | grep peeper

Снятие резервной копии для отправки в Тех. Поддержку

Иногда может быть недостаточно обычных скриншотов или частей логов для полноценного анализа инцидента. В таких случаях необходимо предоставить специалистам технической поддержки актуальный дамп данных. Для этого выполните принудительное создание резервной копии командой (модуль для этого включать не обязательно). Команду необходимо выполнить в папке, где на данный момент лежат файлы Peeper Server:

docker run --rm --entrypoint sh --volumes-from peeper-metrics --volumes-from peeper-logs -v ${PWD}/backups:/backups nexus.eltex.loc:9007/peeper/peeper-backup:0.8 /backup.sh

После завершения процедуры перейдите в директорию ${PWD}/backups,  найдите архивы с самой свежей датой изменения и направьте их в техническую поддержку.

Peeper Client

Описание сервисов

НазваниеОписание
peeper-agentАвтоматически находит запущенные приложения и передает данные об их работе в центральное хранилище.
peeper-exporter-mysqlОтвечает за мониторинг производительности баз данных MySQL/MariaDB.
peeper-exporter-postgresОтвечает за мониторинг производительности баз данных PostgreSQL.
peeper-exporter-sqlСобирает статистику на основе выполнения конкретных SQL-запросов к базам данных.
peeper-provisionerАвтоматически загружает и настраивает графики и правила оповещений в интерфейсе системы (выполняется только при запуске, затем находится в выключенном состоянии).
peeper-telegrafСледит за состоянием самого сервера Linux и среды запуска контейнеров Docker.
peeper-vectorЗанимается сбором, обработкой и передачей текстовых журналов событи.

Стандартная установка

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

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

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

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".

Важно

Токен необходимо записать в переменную PEEPER_TOKEN в .env файле.

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

sudo ./setup.sh -i

При установке Peeper Client на серверы с ECCM или SoftWLC необходимо распаковать архив с Peeper в дирректорию, откуда происходила установка SoftWLC или ECCM, чтобы установочные файлы Peeper оказались на одном уровне с папкой "provisioning". Более подробную инструкцию по установке Peeper Client вместе с другим ПО Элтекс, вы можете найти непосредственно в документации продуктов.  Peeper Client может быть установлен на сервер с Ubuntu без развернутых на нем приложений Элтекс для мониторинга только Linux и Docker. Команда для установки при этом не изменится.

Offline установка

Для offline установки Peeper Client скачайте на сервер peeper-client архив с файлами: https://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
После скачивания архива, его необходимо поместить на целевой хост. Сделать это можно любым доступным способом. 

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

tar -xvf peeper-client-offline.tar

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

sudo ./setup.sh --load
sudo ./setup.sh -i

Описание опций скрипта setup.sh

Вся установка и дальнейшая работа с Peeper Client должна происходить через установочный скрипт setup.sh. Ниже описаны ключи для взаимодействия со скриптом:

Длинный ключКороткий ключОписание
--compose-v1-1Принудительно использует старую версию Docker Compose.
--config-cВыводит в консоль итоговую конфигурацию запуска.
--debug-dЗапускает систему в режиме отладки с подробным выводом информации.
--help-hВыводит справочную информацию по всем доступным командам.
--hostname <NAME>-HПозволяет вручную задать имя хоста для системы.
--install-iЗапускает процесс установки системы.
--interactive-IВключает интерактивный режим работы (для отладки).
--load-lЗагружает компоненты системы из локальных файлов (офлайн установка).
--mysql-exporter-mВключает модуль peeper-exporter-mysql для сбора метрик MySQL.
--postgres-exporter-pВключает модуль peeper-exporter-postgres для сбора метрик PostgreSQL.
--prune-PОчищает неиспользуемые данные и образы для освобождения места.
--save-sСохраняет компоненты в архив для переноса на сервера без интернета.
--uninstall-uЗапускает процесс удаление системы с сохранением данных.
--version-vОтображает номер текущей версии системы.

Пример запуска с ключами:

sudo ./setup.sh -i -H eccm -m -p

Работа с файлами пемеменными

Модули можно активировать без указания ключей, если задать соответствующие переменные окружения в файлах:

Например:

.env.mysql
MYSQL_EXPORTER_ENABLED=true
.env.postgres
POSTGRES_EXPORTER_ENABLED=true

Если эти переменные установлены в `true`, соответствующие модули будут автоматически запущены при выполнении команды:

sudo ./setup.sh -i

Важно!

Для корректной работы модулей peeper-exporter-mysql и peeper-exporter-mysql недостаточно включить их только через ключи или *_ENABLED=true.
Необходимо также заполнить дополнительные переменные в соответствующих .env-файлах:

  •  .env.mysql — параметры подключения к MySQL (хост, порт, пользователь, пароль);
  •  .env.postgres — параметры подключения к PostgreSQL (хост, порт, пользователь, пароль).

Без этих значений экспортеры не смогут подключиться к базам данных и начать сбор метрик.

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

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

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

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

Описание стандартных дашбордов Peeper

При стандартной установке Peeper Server, мы получаем фиксированный список дашбордов. Эти дашборды нужны для отображения общей информации по хостам, которые добавлены в Peeper. Представленные ниже дашборды можно найти в папке "General Dashboards - общие дашборды"

Название дашбордаОписание
Docker Dashboard Отображает статус работы контейнеров и статистику потребления ими ресурсов (CPU, RAM, сеть).
Docker Logs DashboardПредоставляет интерфейс для поиска, фильтрации и просмотра логов контейнеров в реальном времени.
HAProxy DashboardВизуализирует входящий трафик балансировщика, состояние бэкендов и количество ошибок при обработке запросов.
HTTP\HTTPS Probes DashboardОтслеживает доступность веб-сервисов, время их отклика и сроки действия SSL-сертификатов.
Linux System DashboardПоказывает общую производительность хоста, включая загрузку процессора, использование памяти, дисков и сетевую активность.

Ошибки при установке

Peeper Client

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

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

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


  • Нет меток