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.

47 lines
6.6 KiB
Markdown

## Основы мониторинга
1 year ago
Одна из главных задач системного администратора или 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 существует больше количество подробной документации и примеров, как на официальном сайте, так и в других местах интернета.
## Полезные ссылки
1 year ago
- https://prometheus.io/docs/prometheus/latest/getting_started/
- https://habr.com/ru/companies/tochka/articles/683608/
1 year ago
- https://povilasv.me/prometheus-tracking-request-duration/
- https://www.innoq.com/en/blog/2020/04/scraping-docker-swarm-service-instances-with-prometheus/
- https://github.com/prometheus/node_exporter
- https://prometheus.io/docs/practices/histograms/
- https://prometheus.io/docs/visualization/grafana/
1 year ago
- https://grafana.com/docs/
- https://grafana.com/blog/2020/06/23/how-to-visualize-prometheus-histograms-in-grafana/
- https://www.timescale.com/blog/four-types-prometheus-metrics-to-collect/