Установка и управление Prometheus

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

Обратите внимание, что экспортер YMatrix и соответствующие дашборды охватывают только метрики базы данных, а не метрики операционной системы. Мониторинг на уровне ОС требует дополнительных экспортеров, таких как node_exporter. Архитектура показана ниже:
Architecture Diagram

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

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

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');

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 file
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 должен быть развернут на всех хостах кластера. Повторите вышеуказанные шаги на каждом хосте.

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 file  
# Add matrixdb and node exporter IPs and ports in scrape_configs  
# (matrixdb_exporter default port: 9273, node_exporter default port: 9100)  
# Note: matrixdb and mxgate dashboards use the matrixdb_cluster label for cluster filtering.  
# 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:  
# Example:
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"]
# Important: Ensure correct indentation in YAML to avoid syntax errors.
# 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

Управление

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

При перезапуске YMatrix или перезагрузке сервера и последующем запуске YMatrix служба matrixdb_exporter запустится автоматически.

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

psql -d matrixmgr

matrixmgr=# SELECT mxmgr_remove_exporter();

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

matrixmgr=# SELECT mxmgr_deploy_exporter();

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

Обновление

Миграция с устаревшей системы мониторинга на новую, основанную на 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();  

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