Pull to refresh

Comments 12

Есть же замечательная штука PMM — Percona Monitoring and Management, который под капотом содержит тот же Prometheus + еще кучку всего и из коробки умеет мониторить MySQL, Pg и MongoDB
Возможно. Ещё есть mamonsu для zabbix, а так же это можно делать скриптами и вероятно есть ещё много разных инструментов… Но к заметке выше это не имеет ни какого отношения.
Я не сравнивал решения, а разобрал вполне конкретную ситуацию и не более того.
То есть если у меня уже стоит prometheus и даже если поднят тот же consul, то предполагается что я буду ставить дополнительно еще одну систему мониторинга отдельно для БД в виде PMM?
хотя PMM это тот же prometheus + consul + клиент для регистрации и куча хороших шаблонов.
Кстати шаблоны percona не скрывает и они лежат в открытом доступе. Для себя я взял их за основу, раскатил exporter и донастроил шаблоны под себя.
У PMM есть хорошая фича по анализу запросов для разных БД — MySQL, Mongo и начиная с релиза 2.0 добавили Postgres. Кстати, если я не ошибаюсь, данный экспортер не умеет в метрики по SQL запросам(pg_stat_statements).
Последнее утверждение, не очень понятно. О каком экспортере речь?
В простом случае, когда у Вас один экземпляр и одна БД, с описанным в статье экспортером, вообще нет никаких проблем. Он работает, без особых, нареканий.
Но самое интересное начинается когда баз в одном экземпляре более одной, а каких именно и почему, описано в статье.
Для информации: есть еще pgwatch2, я остановился на этом решении.
github.com/cybertec-postgresql/pgwatch2

Главный плюс (по моему мнению) нет необходимости ставить каких либо агентов/экспортёров на хосты PG.
Остальные возможности, указаны в описании репозитория.
Может показаться, что я «топлю» за использование postgres_exporter… Но все таки отмечу, что он так же не требует установки на одном узле с PG. И в какой то мере, безопаснее ставить экспортер ближе к prometheus так как postgres_exporter не умеет шифровать трафик до prometheus, но может общаться с PG по ssl

Насчет отсутствия авторизации и TLS — это общее место для всех prometheus exporter и это осознанная позиция их разработчиков. Они считают что экспортер должен заниматься только непосредственное собственной задачей, обеспечение защищенности канала предоставляется на усмотрение пользователя. И нельзя сказать что они не правы — ведь в ином случае код каждого из сотен экспортеров должен был включать работу с авторизацией и TLS.
По-умолчанию считается, что на хосте который мы мониторим должна быть private network и экспортер должен слушать интерфейс внутренней сети — в этом случае необходимость доп. защиты отсутствует.
Если же возможности такой нет, а у нас доступен только публичный адрес, то можно сделать две вещи:


  • поставить экспортер на локальный интерфейсе, а на публичный адрес поставить nginx, который будет по определенному location проксировать запрос на экспортер, плюс обеспечивать tls и авторизацию
  • поставить экспортер на локальный интерфейс, а на публичный адрес поставить telegraf (который умеет и в авторизацию и в tls, а также может собой заменить и некоторые экспортеры), а уже telegraf заставить собирать данные с prometheus экспортеров хоста и отдавать их же в prometheus формате.
    На текущий момент я использую последний вариант — на инстанс ставится telegraf, все prometheus экспортеры подключаются к нему локально, а prometheus сервер стучится только на один target хоста — в telegraf.
Позиция может и верная, но в результате чтобы мониторить пяток сервисов нужно поставить на сервер 5 разных экспортеров, да еще потом воткнуть и настроить тот же nginx (к примеру) и получается гора софта и гора настроек — усложнение на ровном месте.

Альтернативный вариант — использовать решения all-in-one вроде сборщика telegraf или системы мониторинга netdata.

sfalkongm подскажите почему pg_stat_database_blk_read_time у вас по нулям? от чего она зависит?

Счетчик на нулях, так как track_io_timing (включает замер времени операций ввода/вывода) по-умолчанию выключен, на демонстрационном стенде я его не включил.
Sign up to leave a comment.

Articles