m2/monitoring - questions & lection

pull/5/head
Dmitry Ignatiev 12 months ago
parent 96c8b1be85
commit 2d6cfcbbef

@ -1,10 +1,45 @@
## Основы мониторинга
## Ссылки
Одна из главных задач системного администратора или 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 существует больше количество подробной документации и примеров, как на официальном сайте, так и в других местах интернета.
## Полезные ссылки
- https://prometheus.io/docs/prometheus/latest/getting_started/
- https://habr.com/ru/companies/tochka/articles/683608/
- 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/
- https://grafana.com/docs/
- https://grafana.com/blog/2020/06/23/how-to-visualize-prometheus-histograms-in-grafana/

@ -0,0 +1,11 @@
1. Чем метрики отличаются от логов?
2. Как называется файл конфигурации Prometheus?
3. Какие виды метрик поддерживает Prometheus?
4. Зачем нужны экспортеры(exporters)?
5. Что делает node_exporter, для чего он нужен?
6. Какие типы данных поддерживает PromQL?
7. Что делает функция `rate()` из PromQL и зачем она нужна?
8. Как в PromQL вывести среднее значение какой-либо метрики(напр. типа Gauge, и с названием my_metric), за последние 5 минут?
9. Как сконфигурировать Prometheus в кластере Docker Swarm так, чтобы он собирал метрики из всех репликаций какого-либо сервиса Swarm, доступных по одному доменному имени?
10. Как установить пароль администратора в Grafana?
11. Как экспортировать Dashboard в Grafana и потом импортировать назад?
Loading…
Cancel
Save