﻿# Мониторинг баз данных

> [HTML Version](monitoring-databases.html)

DBSExporter — дополнение, которое предназначено для мониторинга баз данных PostgreSQL, MongoDB, RabbitMQ, Redis и S3‑хранилища.

Установка дополнения состоит из следующих этапов:

1. [Загрузить helm-чарт и конфигурационный файл](#download-helm-chart-and-config-file).

2. [Создать токен конфигурации, чтобы использовать MinIO-метрики для Prometheus](#create-configuration-token).

3. [Заполнить конфигурационный файл](#filling-out-configuration-file).

4. [Установить Node Exporter на серверы с базами данных](#node-exporter).

5. [Установить чарт DBSExporter с помощью Helm в Kubernetes-кластер](#install-chart-dbsexporter).

## Шаг 1. Загрузить Helm-чарт и конфигурационный файл

Для установки через интернет получите конфигурационный файл \[OBJECT\], выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/dbsexporter > values-dbsexporter.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет загрузите архив актуальной версии (latest) чарта **DBSExporter** из репозитория ELMA365, выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/dbsexporter````
 

2. Полученный архив чарта **dbsexporter-X.Y.Z.tgz** скопируйте на сервер, где будет производиться установка.

3. Распакуйте чарт и скопируйте конфигурационный файл по умолчанию \[OBJECT\] в \[OBJECT\].

````
tar -xf dbsexporter-X.Y.Z.tgz  
cp dbsexporter/values.yaml values-dbsexporter.yaml
````

## ````
Шаг 2. Создать токен конфигурации, чтобы использовать MinIO-метрики для Prometheus

Cоздайте \[OBJECT\] и отправьте команду для генерации токена, выполнив команду:

````
mc alias set my\_alias http://minio.local accessKey secretKey  
mc admin prometheus generate my\_alias

## ````
Шаг 3. Заполнить конфигурационный файл

Заполнение конфигурационного файла для установки DBSExporter

  
Сгенерированный токен используйте при настройке подключения к MinIO в файле \[OBJECT\].

````
  
dbsexporter:  
  # Включение импорта графиков  
  grafana-dashboards:  
    dashboards:  
      enabled: true  
      grafanaFolder: dbs  
  # Настройки подключения к Minio  
  prometheus-minio-exporter:  
    nameOverride: minio  
    instances:  
    - name: minio-job  
      token: generated\_token  
      path: /minio/v2/metrics/cluster  
      host: 'minio.local'  
      port: 80  
      scheme: http  
  # Настройки подключения к MongoDB  
  prometheus-mongodb-exporter:  
    nameOverride: mongo  
    instances:  
    - name: mongodb  
      uri: "mongodb://mongodb:27017"  
  # Настройка подключения к Postgres  
  prometheus-postgres-exporter:  
    nameOverride: postgres  
    config:  
      instances:  
      - name: postgres  
        # Укажите один из источников данных и секрета источника данных.  
        host: 'example.ru'  
        user: postgres  
        userSecret: \{\}  
          # # Имя секрета  
          # name:  
          # # Ключ пользователя внутри секрета  
          # key:  
        password: postgres\_password  
        # Укажите passwordFile, если пароль БД хранится в файле.  
        passwordFile: ''  
        # Укажите passwordSecret, если пароль БД хранится в секрете.  
        passwordSecret: \{\}  
          # # Секретное имя  
          # name:  
          # # Ключ пароля внутри секрета  
          # key:  
        pgpassfile: ''  
        # Если установлен pgpassfile, он используется для инициализации переменной среды PGPASSFILE.  
        port: "5432"  
        database: ''  
        sslmode: disable  
        extraParams: ''  
\# Настройки подключения к rabbitMQ  
  prometheus-rabbitmq-exporter:  
    nameOverride: rabbitmq  
    rabbitmq:  
      instances:  
      - name: rabbitmq  
        url: 'http://rabbitmq:15672'  
        user: rabbitmq\_user  
        password: rabbitmq\_password  
        # Указанный пароль будет помещён в Secret:  
        existingPasswordSecret: rabbitmq-secret  
        existingPasswordSecretKey: password  
        capabilities: bert,no\_sort  
        include\_queues: ".\*"  
        include\_vhost: ".\*"  
        skip\_queues: "^\$"  
        skip\_verify: "false"  
        skip\_vhost: "^\$"  
        exporters: "exchange,node,overview,queue"  
        output\_format: "TTY"  
        timeout: 60  
        max\_queues: 0  
        excludeMetrics: ""  
        # Позволяет переопределять переменные окружения с помощью внешнего ConfigMap.  
        configMapOverrideReference: ""  
\# Настройки подключения к Redis  
  prometheus-redis-exporter:  
    nameOverride: redis  
    instances:  
    - name: redis1  
      redisAddress: 'redis://redis:6379/0'
````

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** нужно:

1. Скачать образы ELMA365 и загрузить их в локальный реестр образов. Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Задать адрес и путь для параметра \[OBJECT\].

3. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в Base64.

````
prometheus-minio-exporter:  
\# параметры подключения к приватному registry  
    image:  
\# адрес и путь для приватного registry  
      repository: registry.example.com/minio\_exporter  
\#      tag: "1.0.15"  
    imagePullSecrets:  
      - myRegistryKeySecretName  
prometheus-mongodb-exporter:  
\# параметры подключения к приватному registry  
    image:  
\# адрес и путь для приватного registry  
      repository: registry.example.com/mongodb\_exporter  
\#      tag: "0.31.0"  
    imagePullSecrets:  
      - myRegistryKeySecretName  
prometheus-postgres-exporter:  
\# параметры подключения к приватному registry  
    image:  
\# адрес и путь для приватного registry  
      repository: registry.example.com/postgres-exporter  
\#      tag: "v0.13.2"  
    imagePullSecrets:  
      - myRegistryKeySecretName  
\# Настройки подключения к rabbitMQ  
prometheus-rabbitmq-exporter:  
\# параметры подключения к приватному registry  
    image:  
\# адрес и путь для приватного registry  
      repository: registry.example.com/rabbitmq-exporter  
\#      tag: "v0.29.0"  
    imagePullSecrets:  
      - myRegistryKeySecretName  
prometheus-redis-exporter:  
\# параметры подключения к приватному registry  
\#    image:  
\# адрес и путь для приватного registry  
      repository: registry.example.com/redis\_exporter  
\#      tag: "v1.44.0"  
    imagePullSecrets:  
      - myRegistryKeySecretName````
 

Где формат **repository**: адрес — \[OBJECT\].

В конфигурационный файл \[OBJECT\] вы можете добавить дополнительные настройки:

1. Подключить в DBSExporter несколько баз данных как внутренних, так и внешних. Для этого продублируйте параметры блока \[OBJECT\] и настройте параметры подключения к каждой реплике. Например:

````
instances:      
  - name: mongodb-1  
    uri: "mongodb://mongodb-1:27017"  
  - name: mongodb-2  
    uri: "mongodb://mongodb-2:27017"

2. ````
Включить сбор метрик с Yandex Cloud.

Сбор метрик с Yandex Cloud является платной услугой. Подробнее читайте в [официальной документации сервиса](https://yandex.cloud/ru/docs/monitoring/pricing).

Пример включения сбора метрик с Yandex Cloud:

````
global:  
\# Экспорт yandex метрик  
  yandexExporter:  
    enabled: true  
    bearerToken: "your\_bearerToken"  
    folderId: "your\_folderId"  
    services: \["managed-mongodb", "managed-postgresql"\]  
    relabelings: \{\}

3. ````
Связать DBSExporter с Deckhouse. Пример:

````
global:      
  provisioner: "deckhouse"

## ````
Шаг 4. Установить Node Exporter на серверы с базами данных

Чтобы отслеживать состояние серверов с базами данных, выполните установку Node Exporter. Для этого:

1. Загрузите Node Exporter на сервер с базой данных:

````
wget https://github.com/prometheus/node\_exporter/releases/download/v1.8.2/node\_exporter-1.8.2.linux-amd64.tar.gz

2. ````
Разархивируйте архив, загруженный на предыдущем шаге:

````
tar xvf node\_exporter-1.8.2.linux-amd64.tar.gz \&\& cd node\_exporter-1.8.2.linux-amd64

3. ````
Скопируйте файл \[OBJECT\]: 

````
sudo cp node\_exporter /usr/local/bin/

4. ````
Создайте пользователя для Node Exporter:

````
sudo useradd --no-create-home --shell /bin/false nodeusr

5. ````
Задайте владельца для исполняемого файла \[OBJECT\]: 

````
sudo chown -R nodeusr:nodeusr /usr/local/bin/node\_exporter;

6. ````
Создайте файл \[OBJECT\] для запуска Node Exporter в качестве службы:

````
cat <<EOF | sudo tee /etc/systemd/system/node\_exporter.service;  
\[Unit\]  
Description=NodeExporter  
\[Service\]  
TimeoutStartSec=0  
User=nodeusr  
ExecStart=/usr/local/bin/node\_exporter \\  
\--web.listen-address=:9100  
\[Install\]  
WantedBy=multi-user.target  
EOF

7. ````
Перечитайте конфигурацию \[OBJECT\]:

````
sudo systemctl daemon-reload

8. ````
Запустите службу \[OBJECT\]:

````
sudo systemctl enable --now node\_exporter.service

````
После установки Node Exporter заполните параметры в конфигурационном файле \[OBJECT\], чтобы отслеживать состояния серверов с базами данных. При этом адреса хостов будут извлекаться из пунктов \[OBJECT\] конфигурационного файла.

Пример заполнения параметров:

````
global:  
\# Настройки node exporter  
  nodeExporter:  
    enabled: true  
    port: 9100  
    relabelings: \{\}

## ````
Шаг 5. Установить чарт DBSExporter с помощью Helm в Kubernetes-кластер

Выполните установку чарта **DBSExporter** в \[OBJECT\].

Для установки через интернет:

````
helm upgrade --install -n monitoring dbsexporter elma365/dbsexporter -f values-dbsexporter.yaml

````
Для офлайн-установки без доступа в интернет перейдите в каталог с загруженным чартом и выполните команду:

````
helm upgrade --install dbsexporter ./dbsexporter -f values-dbsexporter.yaml -n monitoring
````