В нашей инфраструктуре развернуто более 40 сервисов на базе docker-compose, и с увеличением количества контейнеров возникла необходимость в централизованном мониторинге их состояния. Мы столкнулись с тем, что стандартный healthcheck Docker не предоставляет метрики в Prometheus/Grafana. Попытки использовать cAdvisor не увенчались успехом, так как он не поддерживает метрики healthcheck контейнеров.
Исследовав рынок, мы поняли, что проще создать собственный экспортер, отвечающий нашим требованиям. Основные задачи: получать актуальную информацию о состоянии сервисов, минимизировать нагрузку на Docker API и обеспечить простоту в использовании с docker-compose.
Мы реализовали систему, где экспортер собирает данные о контейнерах с заданной периодичностью и предоставляет готовый снапшот по запросу. Это позволяет избежать излишней нагрузки на хост. Экспортер различает несколько состояний контейнеров, включая healthy, unhealthy и exited.
После завершения разработки мы создали дашборд в Grafana для визуализации состояния контейнеров, что упрощает мониторинг. Также были настроены алерты для предупреждения о проблемах. Изначально этот инструмент был внутренним, но мы решили сделать его open-source, так как проблема актуальна для многих. Мы рады получать обратную связь и предложения по улучшению.
tasani.ru