Использование метрик для мониторинга Managed PostgreSQL - Академия Selectel

Использование метрик для мониторинга Managed PostgreSQL

В этой статье посмотрим, как можно настроить базовый стек Prometheus/Grafana, подключить метрики от кластера облачных баз данных и загрузить дашборд.

Если вы работаете с базами данных, то вам определенно стоит иметь понимание о производительности кластера СУБД. Для этого можно использовать базовые метрики. А можно — метрики от DBaaS в сочетании с Grafana. Они позволяют строить кастомные графики, которые могут быть полезны в той или иной ситуации.

Тестовый стенд и версии ПО

В качестве сервера мониторинга будет развернута виртуальная машина в облачной платформе Selectel.

Характеристики виртуального сервера:

  • 2 vCPU,
  • 4 ГБ RAM,
  • сетевой диск: 5 ГБ, HDD Базовый.

Характеристики кластера Managed Database PostgreSQL:

  • версия СУБД: PostgreSQL 17;
  • конфигурация: 2 vCPU, 4 ГБ RAM, 32 ГБ;
  • количество нод: 3.

Кластер и виртуальный сервер подключены к одной приватной сети для обеспечения доступности подключения метрик.

Версии ПО:

  • ОС: Debian 12 Bookworm;
  • Prometheus: 3.4.2;
  • Grafana: 11.6.3;
  • Docker: 28.3.0.

Подготовка стека Prometheus/Grafana

В данной статье мы будем устанавливать Prometheus и Grafana при помощи Docker Compose.

Получение токена

Токен предоставляет доступ к метрикам всех кластеров в проекте в рамках одного пула. Для получения токена перейдите в панели управления в карточку кластера, вкладка Мониторинг. Затем нажмите на кнопку Создать токен.

Скриншот из панели управления.

После этого токен появится в списке.

Скриншот из панели управления.

Сохраните его, он пригодится в следующих этапах.

Установка Docker

В данном разделе приведен пример установки Docker для Debian 12. Если вы используете другой дистрибутив GNU/Linux, то вам следует ознакомиться с официальной документацией Docker.

Подключение репозитория


      # Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Установка Docker и зависимостей


      sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Описание Docker Compose и конфигурационных файлов

Создайте директорию /app/monitoring в которой будет располагаться конфигурация Prometheus и Grafana:


      mkdir -p /app/monitoring
cd /app/monitoring

Затем создайте файл docker-compose.yaml со следующим содержимым:


      ---
services:
  prometheus:
    image: prom/prometheus:v3.4.2
    user: root
    volumes:
      - ./prometheus:/etc/prometheus/
      - ./prometheus-data:/prometheus
    container_name: prometheus
    hostname: prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
    restart: unless-stopped
    environment:
      TZ: "Europe/Moscow"
    ports:
       - "9090:9090"
    networks:
      - infra

  grafana:
    image: grafana/grafana:11.6.3
    user: root
    depends_on:
      - prometheus
    volumes:
      - ./grafana:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    container_name: grafana
    hostname: grafana
    restart: unless-stopped
    environment:
      TZ: "Europe/Moscow"
    ports:
       - "3000:3000"
    networks:
      - infra

networks:
  infra:

Конфигурация Prometheus

Создайте директорию prometheus:


      mkdir prometheus

Далее необходимо создать файл prometheus.yaml со следующим содержимым:


      global:
  scrape_interval: 20s
  evaluation_interval: 20s

scrape_configs:
  - job_name: get-metrics-from-dbaas
    scrape_interval: 1m
    static_configs:
      - targets:
        - '<pool>.dbaas.selcloud.ru'
    scheme: https
    authorization:
      type: Bearer
      credentials: <monitoring_token>

Здесь <pool> — это пул, в котором находится ваш кластер БД (например ru-3), а <monitoring_token> — это токен для доступа к метрикам, который мы получали ранее.

Запуск Prometheus/Grafana

Для запуска стека вернитесь в директорию monitoring и запустите Docker Compose:


      cd /app/monitoring
docker compose up -d

Затем перейдите в браузер и введите в адресной строке http://<Your_server_IP_or_fqdn>:3000. Здесь <Your_server_IP_or_fqdn> — это IP-адрес или хостнейм виртуального сервера.

Скриншот.

По умолчанию имя пользователя для учетной записи — admin, пароль — admin.

Подключение datasource Prometheus в Grafana

Перейдите в ConnectionsData sources.

Скриншот.

Затем нажмите на кнопку Add new data source.

Скриншот.

В списке выберите Prometheus.

Скриншот.

Затем в поле Prometheus server URL укажите адрес сервера Prometheus. В нашем случае это http://prometheus:9090.

Скриншот.

После этого нажмите на кнопку Save & test. Если подключение произойдет успешно, вы увидите следующее сообщение:

Скриншот.

Импорт дашборда в Grafana

Для загрузки дашборда перейдите в раздел Dashboards, нажмите на кнопку New и выберите пункт Import.

Скриншот.

В поле Find and import dashboards for common applications введите ID дашборда — 23611 и нажмите Load. После этого отобразится информация об импортируемом дашборде, как на скриншоте ниже. Укажите datasource prometheus.

Скриншот.

После этого отобразится импортированный дашборд.

Скриншот.