You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.6 KiB

Основы мониторинга

Одна из главных задач системного администратора или DevOps-инженера это мониторинг состояния и работоспособности подотчетных ему систем.

Инструментов и средств для мониторинга существует огромное множество, и в простейших случаях они могут быть даже самописными. Вы уже сталкивались с такими в приложениях cats_app и при использовании healthcheck в Docker. В реальном мире для мониторинга используются внешние сторонние инструменты, такие, как Google Analytics, Zabbix, Elastic Search(и вообще стек ELK), Sentry, и другие, однако на этом занятии мы рассмотрим один из наиболее распространенных стеков программного обеспечения, применяемых для этих задач - Prometheus + Grafana.

Prometheus

Prometheus - это серверное ПО, собирающее метрики из каких-либо других систем, и хранящее их в своей специализированной базе данных, приспособленной для обработки временных рядов(time series).

Отличие метрик от логов в том, что метрики дают более общую картину о каком-либо процессе, тогда как логи обычно показывают какое-либо событие или же их последовательность.

Prometheus может собирать метрики сам, делая запросы по HTTP(если какая либо платформа и система имеет возможность их таким образом показывать), либо же, получать их через сторонние средства, называемые экспортерами(exporters). Один из наиболее примечательных экспортеров называется node-exporter, который собирает информацию об операционной системе, на которой запущен.

После того как метрики были собраны в базу, к ней можно делать запросы на специализированном языке PromQL, специально предназначенном для обработки временных рядов и статистики, точно так же как SQL предназначен для обработки реляционных данных.

Prometheus поддерживает 4 вида метрик "из коробки":

  • Counter - метрика этого типа используется чтобы замерять какое-либо неубывающее значение, как пример - общее количество HTTP-запросов к серверу.
  • Gauge - данный вид метрик используется для отображения значений, которые могут как увеличиваться, так и уменьшаться. Пример - количество памяти, занимаемой процессом.
  • Histogram - такие метрики представляют собой счетчики событий для нескольких заданных диапазонов. Используются, например, для отслеживания времени обработки HTTP-запросов.
  • Summary - похожи на Histogram, но представляют собой препросчитанное разбиение значений по квантилям. Этот тип метрик не поддерживает агрегацию, что делает его слабо приспособленным для распределенных приложений в кластере.

К каждой метрике Prometheus могут быть прикрепленые разные метки(label), которые позволяют, например, идентифицировать источник информации.

После того, как метрики были собраны в TSDB - внутреннюю базу данных Prometheus, их могут собирать и обрабатывать сторонние системы, такие как Grafana(для их визуализации), или, например, Alertmanager(для, к примеру, оповещения о превышении каких-либо значений путем email, slack и т.п.; его использование выходит за рамки данного занятия).

Grafana

Grafana это система для визуализации данных с открытым исходным кодом. Очень часто используется в связке вместе с Prometheus.

Хотя веб-интерфейс самого Prometheus позволяет создавать базовые визуализации, Grafana добавляет множество удобств - возможность группировки визуализаций в Dashboard, помощь в составлении выражений PromQL, огромное количество видов визуализаций, плагины, и так далее.

По Grafana существует больше количество подробной документации и примеров, как на официальном сайте, так и в других местах интернета.

Полезные ссылки