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

от автора

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


ссылка на оригинал статьи https://habr.com/ru/articles/928854/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *