Новый экспортер для мониторинга Docker-контейнеров
Привет, Хабр! Мы разворачиваем более 40 сервисов в docker-compose, и у многих из них есть API, базы данных и другие компоненты. Со временем возникла необходимость централизованного мониторинга состояния контейнеров и получения алертов о проблемах. Docker предоставляет healthcheck, однако его статусы не интегрируются в Prometheus по умолчанию. Мы изучили cAdvisor, но он не поддерживает метрики healthcheck.
В поисках решений мы столкнулись с устаревшими проектами и решили создать собственный экспортер. Он будет собирать информацию о состоянии контейнеров, не перегружая Docker API частыми запросами. Экспортер работает по принципу снапшота, обновляя данные раз в N секунд, что делает его стабильным и быстрым.
Мы выделили несколько состояний контейнеров: healthy, unhealthy, running без healthcheck, stopped и unknown. Важным аспектом стало игнорирование одноразовых контейнеров, чтобы избежать ложных алертов. Экспортер предоставляет простые статусы и метрики для удобной визуализации в Grafana.
Мы решили поделиться инструментом в open-source, так как проблема актуальна для многих. Ожидаем обратной связи и продолжим улучшать проект.