Интеграция с экосистемой мониторинга Prometheus

YMatrix предоставляет собственный экспортер, который бесшовно интегрируется с экосистемой мониторинга Prometheus.

Обратите внимание, что экспортер YMatrix и связанные с ним дашборды охватывают только метрики уровня базы данных, а не метрики уровня операционной системы. Для мониторинга на уровне ОС требуются дополнительные экспортеры, такие как node_exporter. Структура модулей показана ниже:
Module Layout

1 Развертывание

Экспортер YMatrix включен в установочный пакет YMatrix и может быть активирован во время установки. После активации установите и разверните node_exporter, Grafana и Prometheus.

1.1 Активация экспортера YMatrix

  • Создайте базу данных matrixmgr
createdb matrixmgr;
  • Подключитесь к базе данных matrixmgr, создайте расширения matrixts и matrixmgr и активируйте экспортер
psql -d matrixmgr

matrixmgr=# CREATE EXTENSION matrixts;
matrixmgr=# CREATE EXTENSION matrixmgr;

matrixmgr=# SELECT mxmgr_init_exporter();

При успешном выполнении в базе данных matrixmgr появится новая схема с именем "exporter". Эта схема содержит таблицы и представления с данными мониторинга и конфигурации кластера. Не изменяйте определения или содержимое этих таблиц и представлений.

Эта команда запускает matrixdb_exporter на всех хостах кластера.

Примечание!
Если в кластере уже запущена устаревшая система мониторинга, сначала отключите её — иначе активация завершится ошибкой.
Для отключения: SELECT mxmgr_remove_all('local');

1.2 Установка и настройка node_exporter

node_exporter собирает метрики уровня операционной системы. Скачайте последнюю версию с официального сайта: node_exporter. В следующем примере используется версия 1.3.1 (запуск от имени root).

# Download node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz

# Extract the package
tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local

# Create a symbolic link
ln -s /usr/local/node_exporter-1.3.1.linux-amd64/ /usr/local/node_exporter

# Generate systemctl configuration
cat << EOF > /usr/lib/systemd/system/node_exporter.service
[Service]
User=root
Group=root
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

[Unit]
Description=node_exporter
After=network.target

EOF

# Start node_exporter
systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter

Примечание!
node_exporter должен быть развернут на всех хостах кластера. Повторите вышеуказанные шаги на каждом хосте.

1.3 Установка и настройка Prometheus

Выберите хост, который имеет доступ к портам экспортеров на всех узлах кластера. Это может быть Master, Standby Master или отдельный компьютер (Linux, macOS, Windows и т.д.).

Установите последнюю версию Prometheus с официального сайта: https://prometheus.io/download/.

Команды ниже приведены для CentOS 7. Для других операционных систем обратитесь к соответствующей документации.

  • Скачайте и установите Prometheus (требуются права root)

Примечание!
При установке вы можете выбрать, включать ли мониторинг mxgate. В приведённом примере включена конфигурация, связанная с mxgate. Удалите этот раздел, если мониторинг mxgate не требуется. См. комментарии в коде.


# Download package
wget https://github.com/prometheus/prometheus/releases/download/v2.36.1/prometheus-2.36.1.linux-amd64.tar.gz
# Extract to /usr/local and create symbolic link
tar -xf ./prometheus-2.36.1.linux-amd64.tar.gz -C /usr/local
ln -s /usr/local/prometheus-2.36.1.linux-amd64/ /usr/local/prometheus
# Create Prometheus user
useradd -s /sbin/nologin -M prometheus
# Create data directory
mkdir /data/prometheus -p
# Set ownership
chown -R prometheus:prometheus /usr/local/prometheus/ 
chown -R prometheus:prometheus /data/prometheus/
# Configure systemctl
cat << EOF > /etc/systemd/system/prometheus.service 
[Unit] 
Description=Prometheus 
Documentation=https://prometheus.io/ 
After=network.target
[Service] 
Type=simple 
User=prometheus 
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus
Restart=on-failure 
[Install] 
WantedBy=multi-user.target
EOF
# Edit Prometheus configuration
# Add matrixdb and node exporter IPs and ports in scrape_configs
# (matrixdb_exporter default port: 9273, node_exporter default port: 9100)
# Note: The matrixdb and mxgate dashboards use the matrixdb_cluster label to filter clusters.
# Add relabel_configs to replace the job label with matrixdb_cluster.
# Set 'replacement' to your cluster name.
# Example configuration:
scrape_configs:
  - job_name: "matrixdb_exporter"
    relabel_configs:
      - source_labels: ['job']
        regex: .*
        target_label: matrixdb_cluster
        replacement: cluster1
        action : replace
    static_configs:
      - targets: ["localhost:9273"]
  - job_name: "node_exporter"
    static_configs:
      - targets: ["localhost:9100"]
# For multi-host clusters, list all host IPs and ports in targets:
scrape_configs:
  - job_name: "matrixdb_exporter"
    relabel_configs:
      - source_labels: ['job']
        regex: .*
        target_label: matrixdb_cluster
        replacement: cluster1
        action : replace
    static_configs:
    - targets: ["192.168.0.1:9273", "192.168.0.2:9273", "192.168.0.3:9273"]
  - job_name: "node_exporter"
    static_configs:
    - targets: ["192.168.0.1:9100", "192.168.0.2:9100", "192.168.0.3:9100"]
# Optional: Add the following section to monitor mxgate. Restart Prometheus after adding.
  - job_name: "gate_exporter"
    relabel_configs:
      - source_labels: ['job']
        regex: .*
        target_label: matrixdb_cluster
        replacement: cluster1
        action : replace
    static_configs:
      - targets: ["192.168.0.1:9275"]
# Note: Pay attention to indentation in YAML. Incorrect indentation causes syntax errors and prevents startup.
# Start Prometheus
systemctl start prometheus
systemctl status prometheus
systemctl enable prometheus

После запуска откройте веб-интерфейс Prometheus для проверки статуса: http://IP:9090/

В веб-интерфейсе Prometheus перейдите в Status → Targets:
Check Data Source 1

Все настроенные экспортеры (matrixdb_exporter, node_exporter и сам Prometheus) должны показывать статус UP, что указывает на успешное развертывание.
Check Data Source 2

1.4 Установка и настройка Grafana

Prometheus хранит данные мониторинга. Grafana извлекает и визуализирует эти данные. Подготовьте хост, имеющий доступ к Prometheus (Grafana и Prometheus могут размещаться на одном хосте).

Версия Grafana должна быть не ниже 8.0.0. При возможности используйте последнюю версию. Скачайте с сайта: https://grafana.com/grafana/download

Команды ниже приведены для CentOS 7. Для других систем обратитесь к их документации (запуск от имени root).

  • Скачайте и установите Grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.5-1.x86_64.rpm
yum install grafana-enterprise-8.5.5-1.x86_64.rpm
  • Запустите Grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable grafana-server

После установки откройте в браузере порт 3000 хоста:

http://<IP_or_hostname>:3000

Войдите с учетными данными по умолчанию: admin / admin. Измените пароль для обеспечения безопасности.

1.5 Добавление источника данных и дашборда

После развертывания экспортера, Prometheus и Grafana загрузите дашборд для визуализации данных мониторинга.

Каждый дашборд требует источника данных. Сначала добавьте источник данных:

  1. Нажмите значок шестерёнки в Grafana и выберите Data Sources:
    Add Data Source 1

  2. Нажмите Add data source:
    Add Data Source 2

  3. Выберите Prometheus в разделе Databases:
    Add Data Source 3

  4. Назовите источник данных (например, MatrixDB-Prometheus) и укажите IP-адрес и порт сервера Prometheus в поле URL:
    Add Data Source 4

  5. После добавления источника данных импортируйте дашборд. Нажмите значок + и выберите Import:
    Add Dashboard 1

  6. Варианты импорта: URL/ID, вставка JSON или загрузка файла. Здесь используйте загрузку из файла. Дашборд MatrixDB Prometheus находится по пути $GPHOME/share/doc/postgresql/extension/PrometheusDashboard.json в директории установки:
    Add Dashboard 2

При загрузке выберите ранее созданный источник данных Prometheus.
Add Dashboard 3

Импортированный дашборд теперь отображается в списке дашбордов.

Для подробного объяснения метрик дашборда см. Руководство по параметрам дашборда YMatrix

1.6 Добавление дашборда node_exporter

Предыдущие шаги показывают, как добавить дашборд YMatrix. Теперь добавьте дашборд node_exporter.

Официальный дашборд Grafana доступен по ссылке: dashboard. Импортируйте его по ID:

При импорте выберите ранее добавленный источник данных MatrixDB-Prometheus. Если node_exporter использует отдельный экземпляр Prometheus, добавьте отдельный источник данных.
node_exporter_2

2 Управление

После включения сбора метрик кластера каждый хост запускает службу сбора. Логи сохраняются в /var/log/matrixdb.

matrixdb_exporter автоматически перезапускается при перезагрузке YMatrix или хоста. Ручное вмешательство не требуется.

Чтобы остановить службу matrixdb_exporter, подключитесь к базе данных matrixmgr и выполните:

psql -d matrixmgr

matrixmgr=# SELECT mxmgr_remove_exporter();

Чтобы снова включить сбор данных, выполните:

matrixmgr=# SELECT mxmgr_deploy_exporter();

Примечание!
mxmgr_remove_exporter останавливает только matrixdb_exporter. node_exporter, Grafana и Prometheus необходимо останавливать отдельно.

3 Обновление

Переход с устаревшей системы мониторинга на новую, основанную на Prometheus.

Сначала установите и разверните Prometheus и обновите Grafana до последней версии:

# Stop legacy monitoring
psql -d matrixmgr
matrixmgr=# SELECT mxmgr_remove_all('local');

# Initialize and start new monitoring
matrixmgr=# SELECT mxmgr_init_exporter();

Примечание!
Обе системы мониторинга могут сосуществовать. Вы можете запускать новую систему без остановки старой, хотя это приведёт к избыточности.

4 Развертывание дашборда мониторинга MatrixGate

MatrixGate — компонент высокой производительности для ввода данных — также совместим с экосистемой мониторинга Prometheus. Как правило, метрики MatrixDB и MatrixGate хранятся в одном экземпляре Prometheus. Ниже приведены шаги, предполагающие такую настройку.

4.1 Развертывание gate_exporter

Как и экспортер YMatrix, развертывание gate_exporter требует базы данных matrixmgr и расширений matrixts и matrixmgr. Предполагается, что они уже созданы.

Вызовите mxmgr_init_gate_exporter для инициализации и запуска:

matrixmgr=# SELECT mxmgr_init_gate_exporter();

При успешном выполнении в базе данных matrixmgr появится новая схема с именем "gate_exporter". Эта схема содержит таблицы и представления для мониторинга и конфигурации gate. Не изменяйте их.

Эта команда запускает gate_exporter на хосте Master.

Чтобы остановить gate_exporter, выполните:

matrixmgr=# SELECT mxmgr_remove_gate_exporter();

Чтобы перезапустить, выполните:

matrixmgr=# SELECT mxmgr_deploy_gate_exporter();

4.2 Импорт дашборда мониторинга

Как и в случае с дашбордом YMatrix, файл дашборда MatrixGate расположен по пути $GPHOME/share/doc/postgresql/extension/MxgateDashboard.json. Импортируйте этот файл.

Для подробного объяснения метрик см. Руководство по параметрам дашборда MatrixGate