Grafana + Prometheus. Заметки новичка
Без воды, очень сжато. Чисто заметки из 2018 года, но актуальные.
Основы
В основах все просто и держится на 4 китах:
- Сервис, с которого собираем данные (система, приложение, например mysql, можно даже с биржи или тупо погоду по API)
- Экспортер, который будет запрашивать и преобразовывать данные в нужный парсерам вид. Это чисто мост между любым сервисом и прометеусом
- Prometheus для сбора и хранения данных с экспортеров
- Grafana для красивого отображения всего, что насобирает Prometheus (чисто web gui)
Графана и прометеус не подойдет для построения графиков на основе данных из MySQL. Эти инструменты нужны непосредственно для работы с регулярно поступающих данных, например, пинг или котировки
Prometheus
Prometheus это сборщик метрик, инструмент аналитики и алертов. Больше ничего (собирает данные с экспортеров с интервалом в секундах, может сам его подобрать, хранит их с метаданными)
Настройки prometheus в prometheus.yml через prometheus.yml. Советую полазить по панельке, чтобы визуально понимать, что вообще можно настроить
Grafana
Графана визуализирует собранные в prometheus'е данные. Это Web UI с API и поддержкой плагинов. Может отображать данные с разных источников, например prometheus, graphite, influxdb
Экспортеры
Другие экспортеры и порты, на которых они работают: https://github.com/prometheus/prometheus/wiki/Default-port-allocations
Экспортеры получают данные сервиса и отформатировав, возвращают их через http в plain text. Ничего не хранят и не кешируют (только берут, форматируют и отдают)
Экспортеры и сервисы могут быть раскиданы по куче серверов в разных частях мира, даже отдельно друг от друга
Итак: прометеус собирает, экспортеры предоставляют, графана отображает
Презентация про сбор метрик с MySQL, которая вводила меня в курс дела: https://www.slideshare.net/roidelapluie/monitoring-mysql-with-prometheus-grafana-and-percona-dashbaords
Из нее кратко:
- Метрики должны:
- определить недоступность сервера раньше юзера
- понимать, что произошло
- предвидеть (это)
- Сбор метрик:
- Нужно собирать как можно больше метрик
- Как можно чаще (раз в 5 мин недостаточно)
- Чем собирать:
- Graphite
- Zabbix
- Prometheus
Мониторинг MySQL:
- Есть MySQL, экспортер и prometheus
- Прометеус периодично запрашивает данные с экспортера (http GET)
- Экспортер SQL запросом берет данные с MySQL, форматирует и возвращает plain text
- Прометеус сохраняет эти данные (и вроде как еще цепляет свои метаданные)
prometheus + mysql exporter собирают МНОГО данных, в тч глоб. переменные и статус раз в 15 сек (по дефолту)
Еще заметки
- Percona - готовые dashboards для графаны, т.к. самому делать геморно. Охватывают в т.ч. и MySQL
- На https://www.slideshare.net можно сжато изучить практически любую тему