Устройство современного мониторинга

Сегодня есть тысячи разных систем мониторинга и выбрать какую-то одну сложно. Системы мониторинга и извещения включают в себя самые различные детали: сбор данных, анализ (временами умный), систему извещений (на основе триггеров или применяя статистический подход) и визуализацию. А как всегда, в точных целях эталон пока еще недосягаем или за него надо оплатить очень много денежных средств.

Акцент выполнен на пользовательских метриках, а не системных. Что будем мониторить? Метрики из нескольких десятков сервисов, написанных на языке, который сохраняет jvm (java, scala). Цель: создать инструмент, позволяющий подвергать анализу в живую то, что происходит в дополнениях, не роясь в больших логах на нескольких серверах.

Во всем мире jvm есть прекрасная библиотека для сбора метрик. Лучше, я пока ничего не видел. Ок, создавать метрики мы обучились.

Как их подвергать анализу и визуализировать? Несовременный подход требовать какую-то точную метрику через jmx или создавать их плагином jmx в какой-то zabbix для нас не подходит, поскольку мы не знаем какая метрика (какое ее значение mean, max, percentile) может потребоваться, за какой этап, с какой группировкой.

После начала сервиса, все значения метрик будут раз в 10 сек идти в influxdb. Скорости одной базы данных (single server deployment) хватит чтобы принимать десятки тысяч значений метрик раз в 10 сек. А можно без проблем перейти и в режим кластера.

Несколько слов про модель хранения. Приходит эра микросервисов и дележ 1 сервис — 1 физ.сервер почти не встречается.

Из-за этого, надо задуматься про это и завести аналогичные индексы в influxdb. Ориентировочная схема может выглядить так. Всю информацию про снижение расходов на транспортные средства читайте пройдя по ссылке.

Любая метрика имеет имя (seriesName), сервер (host), имя сервиса (app). В моем случае есть еще machine id, а это специфика моего приложения. Такая организация весьма понадобится, когда мы начнем строить дашборды.

Когда все настроено и данные пишутся в influxdb можно переходить к созданию дашбордов. С моей точки зрения, имеет резон сделать несколько template variables и применять их как условия для фильтров. Давайте сделаем дашборд, где будет можно посмотреть среднее значение для любой метрики типа Meter.

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий