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

в 8:00, , рубрики: DBaaS, Grafana, observability, postgresql, prometheus, selectel, базы данных, облако
Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 1

Если вы работаете с базами данных, то вам определенно стоит иметь понимание о производительности кластера СУБД. Для этого можно использовать базовые метрики. А можно — метрики от 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.

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

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 2

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 3

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 4

Игровой сервер с криперами и порталом в Незер. Добывайте ресурсы, стройте объекты, исследуйте мир 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-адрес или хостнейм виртуального сервера.

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 5

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

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

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 6

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 7

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 8

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 9

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 10

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

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 11

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 12

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

Использование метрик для мониторинга облачных баз данных на примере PostgreSQL - 13

Заключение

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

Автор: luckyonion

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js