Общая информация.
Peeper - система мониторинга программных продуктов Eltex.
Архитектурно она представляет из себя 2 части:
- Клиентская. Устанавливается на одном сервере с продуктом, например ECCM, Softswitch или EVI. В ее задачи входит сбор метрик и отправка метрик в серверную часть.
- Серверная. В ее задачи входит агрегация и хранение метрик, визуализация метрик в виде графиков, отправка алертов об авариях в Telegram.
Все ПО предоставляется в виде Docker контейнеров, размещенных в публичных репозиториях, docker-compose.yml и .env файлов для деплоя контейнеров.
Зачем вам нужен 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
Для установки необходимо скачать на сервер для peeper-server архив с файлами: https://cloud.eltex-co.ru/index.php/s/rdr8UScgPVQrpQh
Пароль для скачивания можно запросить в Коммерческом Отделе Eltex или в ServiceDesc
Далее нужно распаковать файлы из архива:
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 или в ServiceDesc
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 "Promethus". Поэтому для их корректной работы необходимо в WEB Peeper-Server создать дубликат текущего Datasource "peeper-metrics" с именем "prometheus"
- На сервере 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
Требования к серверу
OC: Ubuntu 22.04 Server или выше
CPU: 2
RAM: 4Gb
Disk: 50Gb
Предустановленное ПО: Docker, Docker compose
Графический интерфейс
Графический интерфейс представляет из себя GUI Grafana, доступный по адресу: https://<адрес сервера>
Логин / пароль по умолчанию: admin /admin (корректируется в .env файле)
Дашборды можно найти в меню Dashboards
Для получения информации о каждом графике в Дашборде нужно навести курсор на значек i над графиком. Отобразится текстовая подсказка, содержащая информацию по данному графику
Troubleshooting Peeper
Проверяем, что контейнеру peeper-agent доступны метрики приложения
|
где
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-а номер подсети, т.к. он пересекается с одной из подсетей уже запущенного контейнера на сервере
