Без воды, очень сжато. Чисто заметки из 2018 года, но актуальные.

Основы

В основах все просто и держится на 4 китах:

  1. Сервис, с которого собираем данные (система, приложение, например mysql, можно даже с биржи или тупо погоду по API)
  2. Экспортер, который будет запрашивать и преобразовывать данные в нужный парсерам вид. Это чисто мост между любым сервисом и прометеусом
  3. Prometheus для сбора и хранения данных с экспортеров
  4. 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:

  1. Есть MySQL, экспортер и prometheus
  2. Прометеус периодично запрашивает данные с экспортера (http GET)
  3. Экспортер SQL запросом берет данные с MySQL, форматирует и возвращает plain text
  4. Прометеус сохраняет эти данные (и вроде как еще цепляет свои метаданные)

prometheus + mysql exporter собирают МНОГО данных, в тч глоб. переменные и статус раз в 15 сек (по дефолту)

Еще заметки

  • Percona - готовые dashboards для графаны, т.к. самому делать геморно. Охватывают в т.ч. и MySQL
  • На https://www.slideshare.net можно сжато изучить практически любую тему

На почитать: