2. Установка РБДМонитор
Доступно несколько способов установки:
2.1. RPM-пакет
Скачайте с официального сайта rpm-пакеты серверной и клиентской части РБДМонитор.
Установите серверную часть РБДМонитор:
dnf install <путь_до_rpm_пакета_rdbmonitor-server>
Установите РЕД Базу Данных для серверной части, следуя инструкции в Руководстве администратора.
Установите клиентскую часть РБДМонитор:
dnf install <путь_до_rpm_пакета_rdbmonitor-client>
Настройте РБДМонитор по инструкции.
2.2. Установка из архива
Скачайте установочный архив для клиентской части с официального сайта. После скачивания распакуйте архив, выполнив команду:
tar -xzf <архив>Установите клиентскую часть, выполнив
install.shс правами администратора:sudo ./install.sh -o install -p clientСкачайте установочный архив для серверной части с официального сайта. После скачивания распакуйте архив, выполнив команду:
tar -xzf <архив>Установите плагины
redsoft-rdbmonitor-appиredsoft-reddatabase-datasourceкомандой:sudo ./install.sh -o install -p grafana_pluginsПри установке плагинов для нужно внести
redsoft-rdbmonitor-appиredsoft-reddatabase-datasourceв список доверенных, разрешив редактировать файл/etc/grafana/grafana.ini.Установите
Loki:sudo ./install.sh -o install -p lokiНастройте РБДМонитор по инструкции.
3. Настройка РБДМонитор
Запустите РЕД Базу Данных:
systemctl start firebird
Скорректируйте скрипт
create_tables.sql, расположенный по пути/opt/rdbmonitor/server/rdb/create_tables.sql. По умолчанию база данных пользовательских запросов (statements.fdb) будет создана по пути/db/statemens.fdb. По умолчанию доступ к СУБД с базой данных пользовательских запросов осуществляется по порту 3050.Выполните скрипт:
/opt/RedDatabase/bin/isql -user <имя пользователя> -password <пароль> -i /opt/rdbmonitor/server/rdb/create_tables.sql
Установите асинхронный режим записи на диск:
gfix -write async <база данных statements.fdb>
Запустите
Loki:sudo systemctl start loki.service
Укажите настройки
Prometheusв файле/etc/prometheus/prometheus.yml:global: scrape_interval: <интервал сбора метрик><единицы измерения s/m/h> scrape_timeout: <время ожидания получения в секунду> scrape_configs: - job_name: "RDBMonitor" static_configs: - targets: ["<хост>:<порт>", ..., "<хост>:<порт>"] rule_files: - rules.yml # alerting: # alertmanagers: # - static_configs: # - targets: ["localhost:9093"]Параметр
scrape_intervalопределяет, как часто нужно собирать метрики. Допустимые единицы измерения: s - секунды, m - минуты, h - часы.Параметр
scrape_timeoutустанавливает время ожидания получения метрик.Предупреждение
Параметр
job_nameзадаёт имя группы экспортёров. Экспортёры, входящие в группу, определяются в параметреtargets. Изменять значение параметраjob_nameнельзя.Параметр
targetsопределяет сетевые узлы экспортёров, к которым будет обращатьсяPrometheusдля сбора метрик. Портом экспортёра по умолчанию является 3051.В секции
rule_filesуказывается список файлов с правилами, на соответствие которым нужно проверять собранные метрики. Файлrules.ymlнеобходимо скопировать из/opt/RedMonitor/server/prometheus/в корневой каталогPrometheus.Секция
alertingопределяет сущностиAlertmanager, в которыеPrometheusбудет отправлять предупреждения, когда собранные метрики соблюдают правила, указанные в секцииrule_files. Если нет необходимости в уведомлениях, то эту секцию нужно оставить закомментированной.Подробнее о настройке
Prometheusсм. документацию на официальном сайте.Запустите
Prometheus:sudo systemctl start prometheus
Предупреждение
Если уведомления не нужны, то этот пункт можно пропустить.
Для получения уведомлений укажите настройки
Alertmanagerв файле/etc/alertmanager/alertmanager.yml. Можно использовать готовый набор правил уведомлений, поставляемый вместе с РБДМонитор. Файлыrules.ymlиcluster_rules.yml, расположенные по пути/opt/RedMonitor/server/prometheus/, Если уведомления не нужны, то этот пункт можно пропустить.После настройки запустите
Alertmanager:sudo systemctl start alertmanager
Более подробно о настройке
Alertmanagerможно узнать в официальной документации.Запустите
Grafana:sudo systemctl start grafana-server
Откройте в браузере страницу запущенной
Grafana(по умолчанию http://localhost:3000/). По умолчанию для входа используется логинadminи парольadmin.Укажите источники данных:
Во вкладке
Connections\(\to\)Data sourcesнажмите на кнопкуAdd data source. В открывшемся окне из списка источников выберитеPrometheus. УкажитеURL-адресдля доступа кPrometheus(по умолчаниюhttp://localhost:9090/). Необходимо настроить интервал сбора метрик. Для параметраScrape intervalукажите число, совпадающее со значением параметраscrape_intervalв конфигурационном файлеPrometheus(prometheus.yml). Нажмите на кнопкуSave & test.Укажите источником базу данных, в которой хранятся пользовательские запросы. Для этого во вкладке
Data sourcesнажмите на кнопкуAdd new data source. В открывшемся окне из списка источников выберитеРЕД База Данных. Заполните поля для соединения с базой данных и нажмите на кнопкуSave & test.Во вкладке
Data sourcesнажмите на кнопкуAdd data source. В открывшемся окне из списка источников выберитеLoki, для сбора логов операционной системы и СУБД. УкажитеURL-адресдля доступа кLoki(по умолчаниюhttp://127.0.0.1:3100) и нажмите на кнопкуSave & test.
В корневом каталоге сервера, который необходимо мониторить, создайте конфигурационный файл агрегатного аудита запросов -
aggtrace.conf, и укажите в нём следующие параметры:database { format = 3 enabled = true }Опция
enabled = trueвключает ведение аудита для сбора сбора данных о запросах.Опция
format = 3указывает, что нужно использовать агрегатный аудит.Для сервера, который необходимо мониторить, в
firebird.confукажите следующие настройки:TracePlugin = fbtrace, messagetrace AuditTraceConfigFiles = fbtrace.conf;aggtrace.conf
У наблюдаемой СУБД включите плагин агрегатного аудита в
plugins.conf:Plugin = messagetrace { Module = /opt/rdbmonitor/client/messagetrace Required = true Config = monitor_config } Config = monitor_config { ConfigFile = /opt/rdbmonitor/client/exporter/exporter_conf.json }Запустите РЕД Базу Данных:
systemctl start firebird
Укажите настройки экспортёра в файле
/opt/rdbmonitor/client/exporter/exporter_conf.json.{ "exporter": { "port": <порт экспортёра>, "rdb_lock_print": { "enabled": true }, "scrape_system":{ "enabled": false }, "scrape_queries": { "enabled": true, "filters": "<путь к файлу с настройками фильтрации>", "default": { "shmem_size":<размер разделяемой памяти в МиБ> } }, "scrape_mon_tables":{ "enabled": true }, "user_metrics": { "enabled": true, "timeout": <таймаут сбора метрики в секундах>, "max_metric_labels": <максимальное кол-во метрик>, "max_user_metrics": <максимальное кол-во пользовательских метрик>, "max_metric_data_blocks": <максимальное кол-во блоков метрики> } }, "promtail": { "host": "<хост наблюдаемого сервера>" }, "dictserver": { "host": "<хост базы данных>", "port": <порт базы данных>, "database": "/opt/rdbmonitor/server/rdb/statements.fdb", "user": "<пользователь>", "password": "<пароль>", "Auth_plugins": ["<плагин>", ..., "<плагин>"], "loki": { "port": <порт loki> } }, "RedDatabase": { "host": "<хост СУБД>", "port": <порт СУБД>, "user": "<логин>", "password": "<пароль>", "folder_path": "<путь к папке установки RedDatabase>", "Auth_plugins": ["<плагин>", ..., "<плагин>"] }, "databases": { "<псевдоним>": { "alias": "<алиас>", "scrape": { "enabled": true, "filters":"<путь к файлу с настройками фильтрации>", "shmem_size":<размер разделяемой памяти в МиБ> } } } }Значения строковых параметров должны заключаться в двойные кавычки. Значения для целочисленных параметров нужно указывать без кавычек.
Параметры конфигурации:
В секции
exporterобязательно должны быть указаны все параметры, иначе экспортёр не запустится. Параметры секции:port- Порт, на котором работает экспортёр, по умолчанию 3051. Параметр имеет целочисленный тип.rdb_lock_print- Определяет, собирать ли данные файла блокировок. Аналогичноrdb_lock_print -n -l -o -c. По умолчанию установлено значениеtrue.scrape_system- Определяет, собирать ли информацио об операционной системе. По умолчанию установлено значениеtrue.scrape_mon_tables- Определяет, собирать ли данные из таблиц мониторинга. По умолчанию установлено значениеtrue.scrape_queries- Определяет, собирать ли данные с помощью aгрегирующего трейса. По умолчанию установлено значениеfalse. Агрегатный аудит необходимо предварительно настроить по инструкции.Опция
shmem_sizeуказывает размер разделяемой памяти в МиБ. Допустимы целочисленные значения от 128 до 1024. По умолчаниюshmem_size = 128.Необязательная опция
filtersопределяет путь к предварительно созданному файлу с настройками фильтрацииfilters.ini. Собираться будут только запросы, характеристики которых превышают хотя бы одно из указанных значений параметров вfilters.ini. Например, еслиtime = 100, то соберутся только запросы, выполняющиеся дольше 100 миллисекунд. Указанные здесь параметры фильтрации распостраняются на все отслеживаемые базы данных. Настроить фильтры для конкретной базы данных можно в секцииdatabases.Структура
filters.ini:[limits.statements] <параметр> ... <параметр>
Параметры фильтрации:
time- время выполнения запроса в миллисекундах;prepare- количество подготовленных запросов (событий prepare);prepare failed- количество запросов, подготовка которых завершилась ошибкой;start- количество запущенных запросов (событий start);start failed- количество неудачно запустившихся запросов;finish- количество завершённых запросов (событий finish);finish failed- количество неудачно завершённых запросов;free- количество освобождённых запросов (событий free);free failed- количество неудачно освобождённых запросов;reads- количество страниц, считанных с диска;marks- количество отмеченных (mark) страниц;writes- количество страниц, записанных на диск;fetches- количество страниц, считанных из страничного кэша (fetch);mem use by sort in total- количество байт, выделенных под сортировку;mem use by sort in cache- количество байт, выделенных под сортировку в кеше;mem use by sort in disk- количество байт, выделенных под сортировку на диске.
Значения всех параметров фильтрации должны быть целым положительным числом.
Пример настройки
filters.ini, где будут собираться запросы, которые выполнялись дольше 60 секунд или более 100 раз[limits.statements] time = 60000 finish = 100
user_metrics- определяет, собирать ли пользовательские метрики. По умолчанию выключено ("enabled": false). Опцияtimeoutуказывает таймаут в секундах, по истечении которого метрика перестанет запрашиваться, значение должно быть дробным числом (по умолчанию значение 0.1). Опцияmax_metric_labelsопределяет максимальное количество собираемых метрик (по умолчанию значение 5). Опцияmax_user_metricsмаксимальное количество пользовательских метрик (по умолчанию значение 100). Опцияmax_metric_data_blocksмаксимальное количество блоков метрики (по умолчанию значение 10).
Секция
promtail:host- определяет ip-адрес устройства наблюдаемого сервера, указанное значение должно совпадать со значением в конфигурационном файле Prometheus. параметр имеет строковый тип.
Секция
dictserver:host- определяет ip-адрес устройства, на котором работает база даннных для пользовательских запросов; параметр имеет строковый тип;port- порт, на котором работает база даннных для пользовательских запросов, по умолчанию 3050; параметр имеет целочисленный тип;database- псевдоним базы данных пользовательских запросов;user- имя пользователя, от которого экспортёр будет подключаться к базе данных пользовательских запросов; параметр имеет строковый тип;password- пароль пользователя для подключения к базе данных пользовательских запросов; параметр имеет строковый тип;Auth_plugins- определяет список плагинов, которые используются для аутентификации при подключении к базе данных пользовательских запросов, в качестве разделителя используется запятая, каждый плагин должен заключаться в двойные кавычки; cписок заключается в квадратные скобки;loki- определяет порт, на котором работаетLoki. По умолчанию 3100.
Секция
RedDatabase:host- определяет ip-адрес устройства, на котором работает наблюдаемая СУБД; параметр имеет строковый тип;port- порт, на котором работает наблюдаемая СУБД; параметр имеет целочисленный тип;login- имя пользователя, от которого экспортёр будет подключаться к СУБД. Желательно использовать пользователя с административными привилегиями для мониторинга всех подключений; параметр имеет строковый тип;password- пароль пользователя; параметр имеет строковый тип;folder_path- путь к установочной папкеRedDatabase;Auth_plugins- определяет список плагинов, которые экспортёр использует для аутентификации, в качестве разделителя используется запятая, каждый плагин должен заключаться в двойные кавычки; cписок заключается в квадратные скобки;
Секция
databasesопределяет список баз данных для мониторинга, указывающийся следующим образом:"databases": { "<псевдоним>": { "alias": "<алиас>", "scrape": { "enabled": true, "filters":"filters_employee.ini" } }, ... }Где:
псевдоним- уникальный псевдоним базы данных;alias- псевдоним базы данных, который используется СУБД;enabled- логический параметр, определяющий отслеживать ли указанную базу данных;filters- необязательная опция, которая определяет путь к предварительно созданному файлу с настройками фильтрацииfilters.ini. Собираться будут только запросы, характеристики которых превышают указанные значения параметров вfilters.ini. Например, еслиtime = 100, то соберутся только запросы, выполняющиеся дольше 100 миллисекунд. Параметры фильтрации распостраняются на указанную базу данных.
Пример настроенного файла
exporter_conf.json:{ "exporter": { "port": 3051, "rdb_lock_print": { "enabled": true }, "scrape_system": { "enabled": true }, "scrape_queries": { "enabled": true, "filters": "/opt/rdbmonitor/client/exporter/filters.ini" }, "scrape_mon_tables": { "enabled": true }, "user_metrics": { "enabled": false, "timeout": 0.1, "max_metric_labels": 5, "max_user_metrics": 100, "max_metric_data_blocks": 10 } }, "promtail": { "host": "127.0.0.1" }, "dictserver": { "host": "127.0.0.1", "port": 3050, "database": "/opt/rdbmonitor/server/rdb/statements.fdb", "user": "SYSDBA", "password": "masterkey", "Auth_plugins": ["Srp"], "loki": { "port": 3100 } }, "RedDatabase": { "host": "127.0.0.1", "port": 3050, "user": "SYSDBA", "password": "masterkey", "folder_path": "/opt/RedDatabase", "Auth_plugins": ["Srp"] }, "databases": { "employee_db": { "alias": "employee", "scrape": { "enabled": true, "filters":"filters_employee.ini" } } } }Предупреждение
Перед запуском экспортёра убедитесь, что РЕД База Данных запущена. В конфигурационном файле экспортёра в секции
scrape_queriesдолжно быть установлено значение"enabled": true.Запустите клиентскую часть РБДМонитор:
systemctl start rdbmonitor-client.target