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

Привет! Меня зовут Рамиль Адильбеков, я DevOps-инженер в Selectel. В этой статье покажу, как можно настроить базовый стек Prometheus/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.

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

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

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

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

Игровой сервер с криперами и порталом в Незер. Добывайте ресурсы, стройте объекты, исследуйте мир Selectel в Minecraft и получайте призы.

Исследовать →

Установка 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.

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

Заключение

Дашборд все еще улучшается, но базовые данные можно увидеть уже сейчас. Приглашаю вас в комментарии — активное и конструктивное обсуждение всегда идут на пользу. Если вы ранее уже пользовались метриками облачных баз данных Selectel и сформировали свои запросы PromQL, также поделитесь ими. Так мы улучшим дашборд и сделаем его еще более функциональным и информативным.

Комментарии (0)