Evreke / prometheus-demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Prometheus

localhost:9090

Собирает метрики в определённом формате с хостов.

Файл prometheus.yml содержит простую конфигурацию для Prometheus.

Параметр Назначение
scrape_interval Как часто прометей будет забирать (скрапить) метрики с хостов
scrape_timeout Если скрапинг не завершится за время заданное в этом параметре, тогда случится timeout
external_labels Список меток и значений присваемых временным рядам при взаимодействии с Prometheus (remote storage, alertmanager, federation)
evaluation_interval Интервал вычисления alert\record rules
scrape_configs Конфигурация задач на сбор метрик с экспортеров или с помощью федерации

В данной конфигурации Prometheus каждые 15 секунд будет собирать собственные метрики и метрики postgres отдаваемые через postgres_exporter

Генерация синтетических метрик

  1. Запусти сервисы командой docker-compose up -d
  2. Подключись к веб-интерфейсу прометея по адресу http://localhost:9090/graph
  3. Найди метрику pg_stat_user_tables_n_live_tup{relname="first_table"}. Значение будет 100000.
  4. Запусти скрипт delete.sh, подожди 15 секунд и проверь метрики ещё раз. Значение должно равняться 0.
  5. Запусти скрипт create.sh, подожди 15 секунд и увидишь, что значение метрики снова 100000.

Alertmanager

localhost:9093

  • Фильтрует входящие от prometheus предупреждения по заданным в конфигурации правилам
  • Принимает решение куда отправить сообщение
  • Позволяет обогатить уведомление дополнительной метаинформацией

Базовая конфигурация - alerting.rules.yml, alertmanager.yml

Как работает:

  1. alerting.rules.yml содержит простое правило для отслеживания состояния postgres сервиса. При недоступности сервиса в течение 10 секунд prometheus отправит предупреждение в alertmanger.

Как проверить:

  • Запусти все сервисы, а затем погаси сервис postgres
  • Проверить админ интерфейс alertmanager

Расширенная конфигурация - alerting.extended.rules.yml, alertmanager.yml

С отправкой в Slack

Как работает:

  1. В alerting.extended.rules.yml находятся правила:
    1. для уведомления потребителя о падении базы - PostgreInstanceDown.
    2. для уведомления команды backend при недоступности 50% контейнеров с базами данных.
    3. для уведомления команды backend при недоступности 100% контейнеров с базами данных.
  2. Alertmanager настроен так, чтобы сообщения для потребителей и для команды backend отправлялись в соответствующие каналы

Как проверить:

  • Создай два url для slack api webhooks для двух разных каналов. Укажи по каналу для получателей в alertmanager.yml конфиге
  • Запусти все сервисы, а затем отключай один или сразу оба контейнера с базами данных
  • Через 30-60 секунд в slack придёт первое предупреждение.

Grafana

Используется для визуализации метрик

Доступна по адресу localhost:3000 Данные для входа admin\admin

Примечание

Данные примеры не отражают лучшие практики, а служат исключительно для демонстрации возможностей prometheus\alertmanager

About


Languages

Language:Shell 100.0%