Версия ПО 0.8
Общая информация
Peeper — система мониторинга программных продуктов Eltex.
Архитектура Peeper состоит из двух частей:
- Клиентская — устанавливается на одном сервере с продуктом, например ECCM, Softswitch или SoftWLC. В ее задачи входит сбор метрик и их отправка на серверную часть.
- Серверная — в ее задачи входит агрегация и хранение метрик и логов, визуализация данных в виде графиков, отправка алертов об авариях и оповещений безопасности в Telegram.
Все ПО предоставляются в виде Docker-образов, размещенных в публичных репозиториях, и файлов compose.yml и .env для деплоя контейнеров.
Для чего необходим Peeper
- Предотвращать появление чрезвычайной ситуации на серверах и приложениях клиента заранее.
- В случае ЧС иметь возможность разрешить инцидент (иметь всю необходимую информацию в одном месте для того, чтобы завершить расследование).
- Иметь возможность оперативно оценить внутреннее состояние системы по ее внешним показателям.
Функции и свойства 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 или выше |
| CPU | 2 |
| RAM | 4 ГБ |
| Disk | 100 ГБ (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 | Запускает систему в режиме отладки с подробным выводом информации. |
| -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
Работа с файлами переменных
Также существует возможность включать модули без указания ключей.
Для этого необходимо установить соответствующие переменные окружения в файлах:
Например:
BACKUP_ENABLED=true
BLACKBOX_EXPORTER_ENABLED=true
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 при срабатывании алертов есть два способа настройки:
- В web-интерфейсе Grafana перейти в раздел "Alerting" → "Contact Points". Далее для Contact Point "Telegram" необходимо нажать "Edit", в поле Chat ID ввести ID чата Telegram, куда должны отправляться уведомления, а в поле Bot API Token нажать Reset и ввести token Telegram бота, который должен быть добавлен в чат. Проверить корректность введенных данных и доставку алертов в чат можно кнопкой "Test". Далее необходимо сохранить настройки кнопкой "Save Contact Point".
- В файле .env, на сервере peeper указать токен в переменную TELEGRAM_BOT_TOKEN, а в переменную TELEGRAM_CHAT_ID указать chat-id.
Настройка сертификатов Peeper
Для работы peeper используется несколько сертификатов, которые описаны ниже:
HTTPS сертификат
При запуске peeper должен находится по пути certificates/crt/ваш-домен-для-peeper.pem. Название сертификата должно быть равно вашему домену, который будет использоваться для peeper. Данный сертификат должен быть в формате .pem и содержать внутри:
- Приватный ключ.
- Сертификат домена.
- Цепочку доверия (Intermediate + Root CA).
Собрать цепочку сертификатов можно следующим образом:
- Откройте файлы сертификатов в текстовом редакторе.
- Создайте новый документ.
- Скопируйте в новый документ содержание каждого из файлов в последовательности: сертификат, ключ, корневой сертификат.
- Сохраните файл как
ваш-домен-для-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
Восстановление резервных копий
Для восстановления из резервной копии, необходимо выполнить следующие действия:
- Резервную копию необходимо положить в папку указанную в PEEPER_BACKUP_DIR и запомнить название бэкапа.
- После этого необходимо выполнить команды, дожидаясь завершения:
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 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
Работа с файлами пемеменными
Модули можно активировать без указания ключей, если задать соответствующие переменные окружения в файлах:
Например:
MYSQL_EXPORTER_ENABLED=true
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