среда, 13 мая 2020 г.

Dashboard Postgresql Overview для postgres_exporter (Prometheus)

Сделал dashboard Postgresql overview для postgres_exporter.

Чем отличается от других дашбородов postgres_exporter?

Я объединил все другие дашборды postgres_exporter в один.

Этот дашборд показывает общую информацию по кластеру.

Скриншоты и краткая инструкция по установке: postgresql, postgres_exporter, prometheus, grafana под катом.

Почему бы не использовать pgwatch2 c influxdb?


Про InfluxDB

Вот краткий и неполный список проблем на момент версии 1.7 (применимо и к более младшим и скорее всего к старшим, CORE team не поменялась):


  • Стабильность. Периодически падает и теряет данные или ломает данные на диске. В последнем случае не может подняться или не может сделать компакшен, от чего количество открытых файлов улетает в космос. Лечится полной остановкой DB и выполнением команд в надежде, что хоть одна поможет.
  • Скорость. Заявленное в маркетинговых бумажках касается не постоянного рейта, а спайков.
  • Не работают внутренние лимиты на запросы вида SHOW TAG KEYS FROM ALL или SHOW EXACT SERIES CARDINALITY и на средней базе может положить все.
  • Потребление ресурсов. Сожрать 256ГБ RAM, закусить 320GB свопа и все равно упасть по OOMу — легко (в момент 6-ти часового запуска, который обусловлен тем, что при старте он читает с диска все индексы в память(InMem)).
  • Платная кластеризация (была представлена как часть OSS в версии 0.9 (December 8, 2014) и исчезла в 1.0 (September 26, 2014), став привилегией Enterprise версии).
  • Частые breaking changes. За 3 года сменили 5+ движков (закончили это делать на версии 0.9 (December 8, 2014)). Следующий Breaking Changes — это Influx 2.0, где они ушли от База Данных\Ретеншн полиси в сторону Buckets, поменяли язык запросов на Flux.
  • Периодически выкатывают фичи непонятно зачем сделанные, например сделали ifql (Flux) или Continuous Queries (последние выпилили в пользу task, по факту те же яйца только с Flux-ом) или Chronograf(буква C в TICK), при живой то графане.
  • Безалаберность при подготовке релизов.
  • Не самосогласованные утилиты экспорта и импорта из базы — если вы что-то экспортировали через cli, то импортировать обратно файлик не прокатит. restore из backup полностью заменяет всю метаинформацию о базах. Селективности и merge не завезли.
  • Телеграф как часть платформы TICK(буква T), например, они ломали поддержку Прометея в телеграфе 1.3.2 (замена символов не попадающих под [a-z]). Или, например, невозможность оверрайдить Retention Policy в (input,output).kafka, т.е. организовать полноценную связку metrics -> telegraf -> kafka -> telegraf -> influx у вас не получится.
  • Капаситор(бука K в TICK), очень неадекватно себя ведет, подстать InfluxDB. Выжирает RAM как не в себя, может говорить, что всё "ок", когда данных нет. Требует нежного обращения и ухода.

PostgreSQL

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql96 postgresql96-server postgresql96-contrib

Инициализируем PostgreSQL.

/usr/pgsql-9.6/bin/postgresql96-setup initdb

Стартуем PostgreSQL

systemctl start postgresql-9.6

Postgres_exporter и Prometheus

Уточнение. Кто будет устанавливать postgres_exporter без rpm из бинарников, то ознакомьтесь с этим постом: https://mcs.mail.ru/help/monitoring-with-prometheus/postgresql-exporter

Postgres_exporter и Prometheus для Redhat систем устанавливаем из этого репозитория: https://github.com/lest/prometheus-rpm

Создаем файл /etc/yum.repos.d/prometheus.repo со следующим содержимым:

[prometheus]
name=prometheus
baseurl=https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/prometheus-rpm/release/gpgkey
       https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm
gpgcheck=1
metadata_expire=300

Устанавливаем prometheus2 и postgres_exporter

yum install -y prometheus2 postgres_exporter

В файле prometheus.yml для работы с postgres_exporter в scrape_configs добавьте следующую секцию:

scrape_configs:
  - job_name: postgresql
    static_configs:
      - targets: ['ip-адрес-prometheus:9187']
        labels:
          alias: postgres

Запускаем prometheus2 и postgres_exporter

systemctl start prometheus
systemctl start postgres_exporter

Grafana

Создаем файл /etc/yum.repos.d/grafana.repo со следующим содержимым:

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Устанавливаем grafana

yum -y install grafana initscripts urw-fonts wget

Запускаем grafana

systemctl start grafana-server

Берем dashboard здесь

https://grafana.com/grafana/dashboards/12273

Исходный код тут:

https://github.com/patsevanton/postgresql_overview_postgres_exporter

P.S. В этом дашборде мне не хватает знаний в promql и postgresql. Поэтому я надеюсь на то что вы мне поможете советом как улучшить дашборд или сделаете pull request.

P.S. Как руки дойдут, планирую сделать дашборд для информации по конкретной БД внутри PostgreSQL.

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий