Мониторинг

Сегодняшний выпуск–продолжение темы мониторинга, которую мы начали в прошлый раз, но немного под другим углом. Если тогда мы говорили в основном про организационные вопросы, то в этот раз обсуждали инструментарий.

Если начать с поверхностных вопросов, то есть 3 больших группы, на которые можно условно разбить инструменты мониторинга: алерты, тренды и перфоманс.

Алерты

Задача системы алертинга – периодически проверять основные жизненные показатели ваших серверов, и будить дежурного опса в случае проблем. Ну и частенько хорошим бонусом к системе алертинга идет возможность посмотреть на текущее состояние системы в целом через веб гуй.

Сейчас на рынке не так много OpenSource продуктов, которые умеют делать сносный алертинг:

  • Icinga – более-менее современная производная от Nagios. Совместима с ним почти во всем, но интерфейс выглядит получше.
  • Zabbix – еще одна взрослая и продвинутая система алертинга, отличается от производных Nagios философией сбора данных и конфигурирования.
  • Sensu – то, что авторы называют "Alert Router". Довольно недавняя разработка. Очень сильно отличается по дизайну от Nagios и Zabbix

Все они имеют право на жизнь, но если вы пользуетесь системой автоматического провиженинга типа Chef, Puppet или Ansible, то вам будет удобнее пользоваться Icinga или Sensu, так как их конфиги хранятся в текстовых файлах, которые удобно генерить.

Технически здесь не слишком много проблем. Они, в основном, лежат в организационном поле, которое мы обсудили ранее. К счастью, и для некоторых орг. проблем есть инструментальные решения, которые могут снять рутину с людей:

  • Nagios Herald – представляет алерты Nagios-а в удобном для человека виде, с прогресс-барами, цветом, и т.п.
  • Ops Weekly – собирает статистику о том, кто и насколько реально страдает от шума системы алертинга.

Тренды и метрики

Задача сбора метрик и анализа их во времени – совсем не связана с Алертами. Обычно для предсказания проблем, или анализа причин уже произошедшего факапа, нужно иметь во-первых гораздо больше разных датчиков, а во-вторых хранить значительную историю.

Здесь из открытых решений есть 2 популярных:

  • Graphite – система хранения и отображения метрик. Очень популярная и используемая.
  • Специализированная база данных InfluxDB в связке с Grafana для визуализации. Более молодое, но потенциально более качественное решение.

Вообще есть идея, что собирать нужно практически все события, которые имеют смысл в виде отдельных сущностей. Компания Etsy, известная своими продвинутыми DevOps практиками, даже основала то, что у них называется Church of Graphs. При помощи инструмента StatsD со всех серверов по обычному UDP принимаются самые разные события, собираются в "чанки" и отправляются в Graphite. Почему UDP? Потому что нужно чтобы сбор метрик минимально тормозил ваше приложение. Более подробно можно посмотреть презентацию "Measure Everything".

Также метрики можно собирать не только из событий, которые вы явням образом генерируете, но и путем анализа логов, например инструментом от тех же Etsy под названием Logster.

Если же вам нужно чуть больше, чем может предложить StatsD, можно попробовать Riemann, который является гибридом между средством сбора метрик и алертинга. Его особенность в том, что он может собирать данные с большого количества серверов и анализировать их совместно, при помощи кода, написанного разработчиками сервиса, и выдавать более сложные, производные метрики. Ну или генерировать на основе этих метрик алерты, посылая их по цепочке в Sensu. Развернутый пример использования можно подсмотреть здесь: Riemann+InfluxDB+Grafana.

Перфоманс анализ

Здесь, к сожалению, хороших открытых инструментов нет. Если вам действительно это нужно, например если вы пишете очень высоконагруженный сервис типа видео стриминга или SAAS, то придется раскошелиться. Варианты:

Что из этого выбрать – очень сильно зависит от типа проблем, с которыми вы сталкиваетесь.

Советы новичкам

Если мониторинг для вас – новая область, или вы только начинаете свой первый веб-проект или бизнес, и не знаете, с какой стороны вообще подойти к мониторингу, вот несколько советов:

  • На первых порах для веб-проектов используйте Pingdom. Это по крайней мере даст вам возможность понять, когда что-то существенное падает.
  • Посмотрите на Zabbix. Поскольку у него много проверок "из коробки", вы сможете понять, что вообще можно мониторить.
  • Попробуйте взять бесплатный месяц от NewRelic. По той же причине.
  • Обязательно избавляйтесь от алертов, которые не требуют никакого действия. Это самая большая и распространенная проблема. Получаете алерт и ничего не делаете? Удаляйте его.
comments powered by Disqus