Pull или Push: какую систему мониторинга выбрать? (1 часть)
Типы систем мониторинга
Мониторинг всегда был основным компонентом ИТ-систем. Он отвечает за обнаружение и помощь в локализации проблем. Разработчикам (и тестировщикам) необходимо обращать внимание на систему мониторинга и участвовать в ее построении и оптимизации. Сейчас существует более сотни систем мониторинга, которые состоят из:
- Объект мониторинга:
- Общий - общий метод мониторинга, подходит для большинства объектов мониторинга;
- Специализированный - настраивается под конкретную функцию, например, система Java JMX, защита от перегрева процессора, защита от сбоев питания жесткого диска и т.д.
- Метод сбора данных:
- Push (CollectD, Zabbix и InfluxDB) - агенты сами пишут в базу данных;
- Pull (Prometheus, SNMP и JMX) - система мониторинга собирает с каждого агента информацию
- Режим развертывания:
- Coupled (связанный режим) - мониторинговая система развертывается вместе с основным ПО;
- Standalone (автономный режим) - отдельное развертывание мониторинговой системы, которая работает независимо от других компонентов;
- Distributed (распределённый режим) - cистема мониторинга построена на распределённой архитектуре, что позволяет масштабировать её горизонтально;
- SaaS (software as a service — программное обеспечение как услуга) - не требует развертывания, предоставляется сторонними компаниями. Не нужно разворачивать собственные инстанции — они просто используют готовое решение через облако
- Метод получения данных:
- Тип интерфейса - данные можно получить только через API;
- DSL (Domain-Specific Language) - использование специализированного языка запросов, разработанного для конкретной задачи, например PromQL и GraphQL;
- SQL - используется стандартный SQL или его вариации (SQL-like), чтобы запрашивать данные из баз данных
- Инструменты
- Open-source и бесплатные - системы с открытым исходным кодом, которые можно использовать бесплатно (например, Prometheus и InfluxDB standalone edition);
- Коммерческие с открытым исходным кодом - эти системы имеют открытый исходный код, но их расширенные функции предоставляются на коммерческой основе (например, InfluxDB cluster edition, Elastic Search X-Pack);
- Коммерческие с закрытым исходным кодом - это полностью проприетарные (закрытые) системы, которые разрабатываются частными компаниями и доступны только на платной основе(например, DataDog, Splunk и AWS Cloud Watch).
Pull или Push?
Существует множество вариантов построения платформы системы мониторинга для внутреннего использования, будь то самостоятельная сборка с использованием решений с открытым исходным кодом или коммерческих SaaS-продуктов. Однако независимо от того, будет ли это решение с открытым исходным кодом или коммерческий SaaS-продукт, при реальном внедрении необходимо продумать, как передать данные платформе мониторинга или как платформа мониторинга может получить эти данные. Для этого нужно сделать выбор метода получения данных: Pull или Push.
Система мониторинга на основе Pull-модели, как следует из названия, активно запрашивает метрики у объектов мониторинга, которые должны обладать возможностью быть доступными удалённо. В отличие от неё, Push-модель мониторинга не запрашивает данные самостоятельно — объекты мониторинга сами отправляют метрики в систему.
Эти два подхода имеют существенные различия в ряде аспектов. При разработке и выборе системы мониторинга важно заранее понимать преимущества и недостатки каждого из методов, чтобы выбрать наиболее подходящий вариант для реализации. В противном случае в будущем могут возникнуть значительные затраты на поддержку стабильности системы, её развертывание и эксплуатацию.
Источник alibabacloud |