Вчера в блоге Elasticsearch появилась отличная новость - проект Packetbeat, развиваемый до этого энтузиастами, присоединился к Elastic.
Я уже довольно давно слежу за этим проектом, и теперь, когда можно не беспокоиться о его будущем, хочу о нем рассказать.
Packetbeat это такой инструмент мониторинга, который работает как анализатор сетевых пакетов, парсит различные протоколы (сейчас поддерживаются HTTP, MySQL, PostgreSQL, Redis, Thrift-RPC), получает нужные данные, и отсылает их либо напрямую в Elasticsearch, либо в Redis, из которого данные будет забирать Logstash и класть их все в тот же Elasticsearch.
Поскольку парсится весь сетевой трафик, мы получаем полную картину взаимодействия хостов и сервисов в нашей сети, а благодаря Elasticsearch и Kibana эту информацию можно удобно обрабатывать и визуализировать.
Чем же это так круто? Да тем, что поставив Elasticsearch, Kibana и Packetbeat, практически без какой-либо конфигурации, мы сразу видим ключевые метрики сервисов, и получаем ответы на основные вопросы, например:
- сколько у нас вообще запросов к базе в минуту?
- а какие из этих запросов к базе данных самые медленные?
- каково соотношение select и insert/update запросов?
- каковы процентили времени ответов базы данных?
- какие у нас самые частые HTTP-запросы?
- сколько у нас ошибок в ответах на HTTP-запросы?
- как вообще у нас ходит трафик в системе web-база-кеш?
Посмотреть все это великолепие живьем можно на демо-странице Packetbeat.
Конечно, у этого подхода есть и минусы, главный из которых - производительность. Packetbeat парсит сетевой трафик, и это недешевое удовольствие. Идеальным вариантом работы для него является анализ трафика с помощью mirror ports на сетевых устройствах, таким образом можно собирать информацию на отдельном сервере, и Packetbeat не будет создавать нагрузки на сервер с наблюдаемым сервисом.
Если же это невозможно, Packetbeat умеет снифать трафик с сетевого интерфейса хоста, причем разными способами - подробности в документации.
Я его именно в таком режиме использую, и весьма доволен - на средненьком сервере с ~15k запросами к Postgres в минуту Packetbeat не создает значимой нагрузки на производительность, и отлично все парсит.
В комплекте идут удобные дашборды для Kibana 4, так что процесс построения мониторинга сделан максимально безболезненным.
В общем, попробуйте - это очень простой в развертывании и очень удобный и наглядный инструмент мониторинга.