Версия ПО 0.3
Общая информация
Peeper — система мониторинга программных продуктов Eltex.
Архитектура Peeper состоит из двух частей:
- Клиентская. Устанавливается на одном сервере с продуктом, например ECCM, Softswitch или EVI. В ее задачи входит сбор метрик и их отправка на серверную часть.
- Серверная. В ее задачи входит агрегация и хранение метрик, визуализация метрик в виде графиков, отправка алертов об авариях в Telegram.
Все ПО предоставляется в виде Docker-контейнеров, размещенных в публичных репозиториях, и файлов docker-compose.yml и .env для деплоя контейнеров.
Зачем необходим Peeper
Peeper нужен, чтобы:
- предотвратить появление чрезвычайной ситуации на серверах и приложениях клиента заранее;
- в случае ЧС иметь возможность постфактум распутать клубок инцидента (иметь всю необходимую информацию в одном месте для того, чтобы завершить расследование);
- иметь возможность оперативно оценить внутреннее состояние системы по ее внешним показателям, а не просто констатировать факт, что система сломалась.
Функции и свойства Peeper
Peeper прост в развертывании и эксплуатации, что крайне важно для системы мониторинга. Также Peeper позволяет:
- собирать, хранить метрики и логи;
- визуализировать данные в виде дашбордов, графиков, диаграмм, таблиц;
- высылать алерты в случае срабатывания триггера по какой-либо метрике.
Архитектура Peeper
В архитектуре Peeper предусмотрено, что для получения метрик со стороны Peeper Client не требуется открывать никаких дополнительных портов на стороне сервера с программным продуктом Eltex. Отправка метрик с этого сервера производится методом Push.
Все входящие запросы в Peeper Server идут по HTTPs через Peeper Proxy по 443 порту.
Системные метрики
В разделе описаны метрики, которые собирает клиентская часть.
Linux
- Время работы сервера от момента старта. Позволяет понять, как давно сервер перезагружался в последний раз.
- Load Average за 5 минут. Показывает среднюю нагрузку на CPU со стороны сервисов.
- Число zombie-процессов, которые завершили работу, но не удалены из дерева процессов.
- Число процессов в системе.
- Число потоков в системе.
- Нагрузка на все ядра CPU, выраженная в процентах.
- Процент использования оперативной памяти.
- Процент использования памяти подкачки (SWAP).
- Процент использования файловой системы диска от корня.
- Процентное соотношение времени процессора, потраченное на ожидание ввода/вывода.
- Детализированный процент использования CPU различными типами служб.
- Load Average за 5 (short), 10 (medium) и 15 (long) минут. Показывает среднюю нагрузку на CPU со стороны сервисов за период времени.
- Количество выполняемых (running), заблокированных (blocked), спящих (sleeping) и zombie-процессов в системе.
- Использование оперативной памяти.
- Количество переключений в секунду процессора с одного процесса или потока на другой.
- Интенсивность создания новых процессов.
- Количество файловых дескрипторов в системе (максимальное и открытое).
Количество записей о соединениях в таблице conntrack.
Количество сетевых соединений в различных состояниях.
TCP aborts.
Динамика количества открываемых TCP-соединений.
Динамика работы SYN cookie на сервере.
Статистика приема и передачи ICMP-пакетов на хосте.
Статистика ошибок при приеме или отправке ICMP-пакетов.
Статистика ошибок при отправке или приеме IPv6-пакетов.
Статистика отправки и приема UDP-пакетов.
Статистика ошибок принятия или отправки UDP-пакетов в результате невозможности выделения памяти в буфере.
Статистика ошибок приема UDP-пакетов.
Статистика приема и передачи данных (в битах) по сети.
Статистика приема и передачи сетевых пакетов.
Статистика дропов (отбрасывания) пакетов на приеме или при передаче.
Статистика чтения и записи данных в SWAP.
Максимальный размер SWAP и размер данных, записанных в SWAP (в память).
Статистика количества запросов к диску на чтение и запись.
Скорость чтения и записи данных на диск.
Статистика времени чтения и записи данных на диск.
Количество данных, записанных раздел диска и максимальный размер раздела диска.
Количество использованных inode и максимальное количество inode.
Docker
- Общее количество контейнеров.
- Количество запущенных контейнеров.
- Количество образов.
- Число CPU.
- Размер оперативной памяти.
- Число используемых файловых дескрипторов.
- % использования CPU каждым контейнером.
- % использования оперативной памяти каждым контейнером.
- Скорость передачи сетевого трафика каждым контейнером.
- Скорость приема сетевого трафика каждым контейнером.
- Скорость записи на диск каждым контейнером.
- Скорость чтения диска каждым контейнером.
Алерты
Linux
- Загрузка CPU больше 90%.
- Использование RAM больше 90%.
- Использование SWAP больше 90%.
- Использование RootFS больше 90%.
- Значение IOwait больше 90%.
- Обнаружены zombie-процессы.
- Файловые дескрипторы исчерпаны более чем на 90%.
Установка
Для установки запросите установочные файлы у Коммерческого Отдела Элтекс или создайте запрос в https://servicedesk.eltex-co.ru/
Для успешной установки 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 | 50 ГБ |
Предустановленное ПО | Docker, Docker Compose |
Для установки скачайте на сервер для peeper-server архив с файлами: https://cloud.eltex-co.ru/index.php/s/EeGjyvpmXtHdpsg
Пароль для скачивания можно запросить в Коммерческом Отделе Eltex или в ServiceDesk.
Далее распакуйте из архива файлы:
tar -xvzf peeper-server.tar.gz cd peeper-server
Cкорректируйте переменные в файле .env. Как минимум необходимо скорректировать 3 переменные: PEEPER_HOST, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID
Команда установки 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/OXIq2ZPTDQBjcMD
Пароль для скачивания можно запросить в Коммерческом Отделе Eltex или в ServiceDesk.
Далее распакуйте из архива файлы:
tar -xvzf peeper-client.tar.gz cd peeper-client
Cкорректируйте переменные в файле .env. Как минимум необходимо скорректировать 2 переменные: PEEPER_HOST, PEEPER_IP
Сгенерируйте token в WEB Grafana: зайдите в меню "Users and access" → "Service accounts" → "Add service account" → "Add service account token" → "Generate token".
Опишите token для доступа к Grafana в файле peeper-token:
echo <token> > peeper-token
Команда установки Peeper Client:
sudo ./setup.sh -i <app>
где <app> — имя ПО Элтекс, установленное на данном сервере, например eccm или softswitch.
Особенности установки Peeper Client для Softswitch 3.14.15.17
Версия Softswitch 3.14.15.17 может быть совместима с Peeper-Client при выполнении следующих требований:
- Для autoprovisioning на сервере Peeper-Server при запуске должен быть проброшен порт 3000 для сервиса Peeper-Grafana, т. к. Softswitch 3.14.15.17 пока умеет загружать дашборды только через 3000 порт и поддержка 443 порта будет реализована в следующей версии.
Для этого в compose.yml для сервиса peeper-grafana пропишите:ports: - "3000:3000"
- Текущие дашборды для Softswitch 3.14.15.17 используют Datasource "Prometheus". Для их корректной работы создайте дубликат текущего Datasource "peeper-metrics" с именем "prometheus" в WEB Peeper-Server.
- На сервере c Softswitch разверните Peeper-Client. При этом в compose.yml откройте порт 8429 для сервиса peeper-agent:В настройках Softswitch направьте поток метрик на этот порт в настройках telegraf:
ports: - "8429:8429"
Также необходимо при запуске SoftSwitch указать token, сгенерированный в WEB Peeper-grafana.[[outputs.http]] url = "http://localhost:8429/api/v1/import/prometheus" data_format = "prometheus"
- После запуска Peeper-agent на сервере с Softswitch необходимо остановить сервис peeper-telegraf, чтобы не было дублирования данных, т. к. Telegraf, встроенный в Softswitch 3.14.15.17, уже отправляет все необходимые Linux-метрики:
sudo docker compose down peeper-telegraf
Особенности установки Peeper Client для SoftWLC
Для корректного получения метрик от сервисов SoftWLC необходимо перезапустить SoftWLC с дополнительным файлом compose.yml.
Скопируйте файл compose.yml в директорию с docker-compose.yml, из которого вы устанавливали SoftWLC:
docker compose -f docker-compose.yml stop sudo docker -f docker-compose.yml -f compose.yml up -d
Особенности установки Peeper Client для ECCM
Для запуска необходимо:
- скачать compose.yml
- скачать обновленный compose-tools.sh
Подготовка:
# Создайте директорию peeper внутри eccm и скопируйте в нее файл compose.yml: mkdir eccm/2.1/eccm/peeper cp ~/Downloads/compose.yml eccm/2.1/eccm/peeper # Сделайте бэкап предыдущей версии compose-tools.sh: cp eccm/2.1/compose-tools.sh eccm/2.1/compose-tools.sh.bak # Заменить файл compose-tools.sh его обновленной версией: cp ~/Downloads/compose-tools.sh eccm/2.1/compose-tools.sh
Запуск:
Обратите внимание на расположение ключей: ключ `--peeper`
должен быть перед ключом `--start`
cd eccm/2.1 sudo ./compose-tools.sh --peeper --start <ECCM ADDRESS> # а также ваши дополнительные опции
Графический интерфейс
Графический интерфейс представляет из себя GUI Grafana, доступный по адресу: https://<адрес сервера>
Логин/пароль по умолчанию: admin/admin (корректируется в файле .env)
Дашборды можно найти в меню Dashboards.
Для получения информации о каждом графике в Дашборде наведите курсор на иконку i над графиком. Отобразится текстовая подсказка с информацией по данному графику.
Troubleshooting
Проверка доступности метрик приложения для контейнера peeper-agent
cat <<EOF | sudo docker exec -i peeper-agent sh printf "GET /metrics HTTP/1.1\r\nHost: eltex-ems-core\r\nConnection: close\r\n\r\n" | nc eltex-ems-core 9091 EOF
где:
eltex-ems-core — имя docker-контейнера приложения, отдающего метрики;
9091 — порт, на котором отдаются метрики (должен быть указан в Labels контейнера приложения);
metrics — путь, на котором отдаются метрики (должен быть указан в Labels контейнера приложения).
WEB-интерфейс peeper-agent для траблшутинга
WEB-интерфейс доступен на порту контейнера peeper-agent :8429
:8429/targets — показывает состояние доступных источников метрик;
:8429/service-discovery — показывает все docker контейнеры, обнаруженные Autodiscovery;
:8429/config — конфигурация peeper-agent.
WEB-интерфейс peeper-metrics для траблшутинга
WEB-интерфейс доступен по URL: https://<IP Peeper Server>/metrics/ (обратите внимание на последний / !)
/metrics/vmui/ — предоставляет аналог Prometheus WEB. Меню Explore Prometheus Metrics позволяет просмотреть все полученные метрики. Чтобы посмотреть метрики, полученные от конкретного приложения контейнера, можно отфильтровать их по имени job, указанной в Labels контейнеров.
Ошибка пересечения сетей
В случае возникновения подобной ошибки:
|
необходимо отредактировать в compose.yml системы Peeper номер подсети, т. к. он пересекается с одной из подсетей уже запущенного контейнера на сервере.