Общая информация
Функционал
Glaber - это система мониторинга.
В широком смысле система мониторинга нужна чтобы рутинно собирать и записывать информацию о метриках в границах автономной системы (в домене мониторинга), выполнять автоматические действия на основе значений метрик, в том числе - оповещать операторов мониторинга, визуализировать собранные данные.
Основная задача и цель Glaber - сделать так, чтобы пользователь (оператор) имел максимально быстро и оперативно понимание о состоянии домена мониторинга.
Оперативность и полнота понимания обеспечиваются двумя основными механизмами: - высокопроизводительные поллеры, способные собирать данные больших инфраструктур - создания в пользовательском интерфейсе графиков и визуальных представлений для быстрого понимания оператором точки отказа или проблемных зон, таких как динамические карты, графики, представление мониторинга в структурном виде
Оптимизация Glaber для высокой производительности обеспечила низкую ресурсоемкость.
История проекта
Системные требования
Для типового мониторинга до 15 тысяч устройств, и скоростью снятия и записи метрик 10 тысяч метрик в секунду нужен сервер с 8 ядрами, 16 Gb памяти и дисковым пространством достаточным для хранения метрик.
Место на диске стоит планировать как примерно 2 байта на одну метрику. При преобладании строковых или лог-данных цифра может быть больше.
Для скорости записи в 10 тысяч метрик в секунду, потребуется примерно 1.8 Gb места в сутки.
SSD диски не обязательны. Сервер может работать в Docker, но рекомендуется работа с системами виртуализации и изоляции, поддерживающими полноценную работу с сетевым стеком для использования эффективных методов работы с сетью (RAW сокеты, PCAP интерфейс)
Совместимость
Сервер и прокси -сервер работают в большинстве актуальных Linux систем. Агенты существуют под большинство существующих ОС, включая Microsoft Windows, Apple MacOS.
Архитектура
Glaber состоит из трех основных компонентов: СУБД для хранения конфигурации и списка инцидентов, Time-series базы данных для хранения накопленных метрик, логов и трендов, сервера-приложения, который занимается сбором метрик, сохранением, подсчетом и обработкой триггеров и эскалаций, и API и веб интерфейса.
Структурно эти системы связаны между собой так:
Сервер может сам опрашивать или принимать метрики, либо может использовать механизм «прокси-серверов», когда запускается специализированный прокси сервер, который получает с сервера список оборудования и метрик для мониторинга и берет на себя нагрузку по опросу и получению метрик, после чего присылает на сервер полученные метрики.
Прокси используются для разделения нагрузки, либо для организации «локального присутствия» мониторинга, чтобы не терять метрики в случае проблем с надежностью каналов связи с удаленными локациями. Для сборки метрик с серверов существует агент под большинство ОС.
Управление конфигурацией, просмотр результатов мониторинга происходит через веб-интерфейс. Интерфейс реализован как типичное LAMP приложение посредством языка PHP. Также для автоматизированных средства есть JSON интерфейс (API), реализованный там-же.
Конфигурация сохраняется в реляционной базе данных. Поддерживаются MySQL и Postgres сервера.
Сервер выгружает метрики в базу данных для хранения временных метрик. Поддерживаются ClickHouse, VictoriaMetrics, возможно легкая адаптация других подходящих решений. Для оперативного взаимодействия и для получения метрик API и пользовательский интерфейс могут напрямую запрашивать данные из сервера напрямую через trapper интерфейс
Технические детали реализации:
Сервер и Прокси-сервер написаны на языке С, работают в forked режиме. Активно используется разделяемая память для доступа к совместным данным и организации различных кешей.
Web UI написан на языке PHP, для работы UI используется JQuery. Для некоторых элементов используются специфичные js библиотеки: для таблиц и для динамических топологий