Диагностический отчет. Утилита pangolin-diagnostic-tool
Описание
Утилита формирования диагностического отчета pangolin-diagnostic-tool предназначена для упрощения и ускорения сбора информации о состоянии и настройках стенда СУБД Pangolin. Информация собирается посредством запуска утилиты и передачи в нее определенных параметров сбора. Утилита на выходе формирует набор файлов, упакованный в tar.gz архив. Некоторые компоненты отчета требуют повышенных привилегий или доступов к каталогам.
Утилита представляет собой скомпилированный бинарный файл и набор .so библиотек.
Принцип работы
При запуске скрипт проверяет возможность повышения привилегий до суперпользователя:
- при успешной проверке собирается дополнительная информация, требующая прав суперпользователя;
- при отсутствии привилегий в лог работы утилиты выводится сообщение о нехватке прав для соответствующих разделов, выполнение продолжается.
Собранная информация представляется в двух форматах:
- единый текстовый лог;
- набор файлов в формате CSV.
Если у пользователя ОС, от имени которого выполняется скрипт, есть доступ к конфигурационным файлам компонентов кластера, они копируются в директорию configs отчета.
При передаче параметра --logs дополнительно копируются N последних строк из журналов компонентов кластера, где N задается параметром log_lines_count. Журналы сохраняются в директорию logs отчета.
В начале работы создается директория вида pgse_diag_out_suffix, где suffix — это текущая временная метка.
По завершении работы данная директория архивируется, а в консоль выводится путь к архиву.
Для получения данных из СУБД необходим доступ к консольной утилите psql.
Предполагается, что:
- у пользователя, от имени которого запускается скрипт, есть права на использование
psql; - путь к исполняемому файлу утилиты прописан в переменной окружения
$PATH.
При старте выполняется проверка доступности psql. При ее отсутствии выводится сообщение, и сбор данных из СУБД не выполняется.
Внутри СУБД дополнительно проверяются права суперпользователя:
- при наличии прав собирается полный набор диагностической информации;
- при их отсутствии собирается только часть данных, для остальных разделов выводится сообщение о нехватке привилегий.
Настройка
Установка утилиты
При установке СУБД Pangolin с помощью скриптов автоматизации утилита pangolin-diagnostic-tool устанавливается автоматически и доступна в каталоге /opt/pangolin-diagnostic-tool/bin/.
Для установки вручную воспользуйтесь пакетным менеджером и поставляемым компонентом в виде rpm/deb-пакета:
Установите rpm/deb-пакет компонента pangolin-diagnostic-tool:
- SberLinux, РЕД ОС, CentOS
- Astra Linux
- Альт СП
sudo dnf install pangolin-diagnostic-tool-7.3.1-{OS}.x86_64.rpm
sudo apt install pangolin-diagnostic-tool-7.3.1_amd64.deb
sudo apt-get install pangolin-diagnostic-tool-7.3.1-{OS}.x86_64.rpm
Пример команды:
sudo dnf install -y {path}/pangolin-diagnostic-tool-7.3.1-sberlinux9.x86_64.rpm
Где {path} – путь к директории или путь к дистрибутиву, {product_version} – версия продукта (текущая версия: 7.3.1).
Утилита не требует выполнения дополнительных действий для работоспособности и установки дополнительных модулей.
Есть возможность скопировать каталог в любое другое доступное пользователю место.
Параметры запуска утилиты
Для утилиты pangolin-diagnostic-tool существуют следующие опциональные параметры запуска:
-U USER, --user USER
Параметр username для подключения к СУБД Pangolin. Значение по умолчанию: postgres.
-p PORT, --port PORT
Параметр port для подключения к СУБД Pangolin. Значение по умолчанию: 5433.
-h, --help
Выводит справку по использованию утилиты.
-H HOST, --host HOST
Параметр host для подключения к СУБД Pangolin. Значение по умолчанию: 127.0.0.1.
-d DATABASE, --database DATABASE
Параметр database для подключения к СУБД Pangolin. Значение по умолчанию: postgres.
--pgdata PGDATA
Параметр, определяющий путь к $PGDATA. Если не задан — будет произведена попытка поиска данного каталога в переменных окружения и запущенных процессах СУБД Pangolin. Значение по умолчанию отсутствует.
--pgbuser PGBUSER
Параметр username для подключения к виртуальной БД Pangolin Pooler для сбора статистики использования Pangolin Pooler. Значение по умолчанию отсутствует.
--logs
Параметр, включающий сбор лог-файлов. По умолчанию лог-файлы не собираются.
--log_lines_count LOG_LINES_COUNT
Параметр, определяющий, сколько последних строк лог-файлов сохранить в отчет. Параметр введен для ограничения размера итогового отчета, количество строк должно быть достаточным для анализа и не слишком большим для экономии размера, как правило, достаточно 300-700 последних строк.
Значение по умолчанию: 300.
--version
Выводит версию утилиты и завершает работу.
В случае, если переданные параметры --user или --pgbuser отличаются от значений по умолчанию, утилита запросит пароль для данных пользователей. В ответ на запрос утилиты введите соответствующий пароль (пароль при вводе не отображается).
Запуск утилиты pangolin-diagnostic-tool с параметром --help отображает параметры запуска:
Вывод команды pangolin-diagnostic-tool --help
$ /opt/pangolin-diagnostic-tool/bin/pangolin-diagnostic-tool --help
usage: pangolin-diagnostic-tool.bin [-h] [-H HOST] [-p PORT] [-U USER] [-d DATABASE] [--pgbuser PGBUSER] [--logs] [--pgdata PGDATA] [--log_lines_count LOG_LINES_COUNT] [--without-password] [--version]
This is the Pangolin or PostgreSQL Diagnostics Collection Script. Some parts of script need superuser or root privileges, if the privileges are insufficientsome information cannot be collected.
optional arguments:
-h, --help show this help message and exit
-H HOST, --host HOST database server host or socket directory (default: 127.0.0.1)
-p PORT, --port PORT database server port (default: 5433)
-U USER, --user USER database user name (default: postgres)
-d DATABASE, --database DATABASE
database name (default: postgres)
--pgbuser PGBUSER pangolin pooler user name
--logs collect log files
--pgdata PGDATA pgdata dir path
--log_lines_count LOG_LINES_COUNT
count last lines of log for collecting (default: 300)
--without-password option to signify a passwordless authentication method to database.
--version show program's version number and exit
Файловый состав
Файловый состав утилиты следующий:
diag— основной файл, который является точкой входа и используется для запуска сбора статистики. Утилита осуществляет сбор аргументов, вывод справки и последовательный запуск модулей сбора информации. После окончания работы утилиты осуществляется архивирование отчета, вывод сообщения о завершении работы и пути до сформированного отчета;lib/common.so— модуль общих переиспользуемых функций (печать в общий лог, создание каталогов, синтаксический анализ текста в CSV);lib/vars.so— модуль глобальных переменных;lib/sql.so— модуль с текстами SQL для сбора статистики из СУБД;lib/linux_info.so— модуль сбора информации об ОС;lib/linux_stat.so— модуль сбора статистики использования ОС;lib/logs_collect.so— модуль сбора лог-файлов;lib/config.so— модуль сбора конфигурационных файлов;lib/libfe_elog.so– модуль поддержки сообщений об ошибках из драйвераlibpq;lib/dbms_info.so– модуль сбора статистики с помощью SQL из СУБД.
Управление
Синтаксис запуска утилиты
Запуск утилиты осуществляется с указанием полного пути:
/opt/pangolin-diagnostic-tool/bin/pangolin-diagnostic-tool [OPTION]
Где OPTION – опциональные параметры запуска, описанные в разделе «Параметры запуска утилиты».
Чтобы вызывать утилиту без полного пути, добавьте каталог /opt/pangolin-diagnostic-tool/bin/ в переменную окружения $PATH:
-
Временное добавление (на время текущей сессии):
export PATH="/opt/pangolin-diagnostic-tool/bin:$PATH" -
Постоянное добавление (для всех новых сессий):
Добавьте строку в конец файла
~/.bashrc(дляbash) или~/.zshrc(дляzsh):export PATH="/opt/pangolin-diagnostic-tool/bin:$PATH"Затем примените изменения:
source ~/.bashrc
После этого вызов утилиты выглядит так:
pangolin-diagnostic-tool [OPTION]
Отчет диагностики
После того, как утилита отработала, она выдаст сообщение о том, где сохранена диагностическая информация. Отчет формируется в каталоге с утилитой из префикса pgse_diag_out_ и временной метки запуска утилиты YYYYMMDD_HHmmSS, где YYYY — год, MM — месяц, DD — день, HH — часы, mm — минуты, SS — секунды. Сформированный архив с отчетом можно скопировать с удаленного хоста, например, с помощью scp:
scp postgres@{IP-Address}:/home/postgres/diagnostic_tool/pgse_diag_out_20220607_145935.tar.gz
Чтобы проверить содержимое архива его нужно распаковать:
tar -xvf ./pgse_diag_out_20220607_145935.tar.gz
Перед отправкой отчета нужно убедиться в отсутствии недопустимой к передаче информации, а именно:
-
непараметризованных запросов или значений параметров в:
- секции
collect hot statements statфайлаdiag.log; - секции
collect slow statements statфайлаdiag.log; - файле
csv/dbms/hot_statements.csv; - файле
csv/dbms/slow_statements.csv; - файле
logs/postgresql-XXXXXXXX.log, гдеXXXXXXXXкомбинация из даты и порядкового номера лог-файла.
- секции
-
логинов/паролей, а также иной чувствительной информации в:
- секции
collect running servicesфайлаdiag.log(в колонкеCOMMANDстрока запуска процесса); - файле
csv/psaux.csv(в колонкеCOMMANDстрока запуска процесса).
- секции
-
логинов/паролей (в том числе хешей паролей) в:
- конфигурационном файле
config/pg_hba.conf; - конфигурационном файле
config/postgres.yml(конфигурационный файл Pangolin Manager, проверить в том числе секциюpg_hba).
- конфигурационном файле