postgrespro #Ресивер postgrespro — главный компонент коллектора, заключающий в себе все инструменты (встроенные плагины) для сбора данных с экземпляра СУБД. Данный ресивер является внутренней разработкой компании Postgres Pro и не является частью открытой экосистемы OpenTelemetry.
Ресивер организован по модульному принципу и позволяет регулировать объём собираемых данных через включение плагинов. Некоторые плагины предусматривают дополнительную настройку.
Плагины — это внутренние компоненты ресивера, отвечающие за сбор разных типов статистических данных. Каждый плагин предназначен для сбора конкретной информации, которая затем преобразуется в группы метрик.
pgpro-otel-collector предоставляет группы метрик, описывающие различные подсистемы, события и процессы внутри системы управления базами данных (СУБД), такие как использование таблиц и индексов, работа фоновых процессов, использование ресурсов запросами и т. д.
Количество статистических данных может варьироваться в зависимости от версии и редакции Postgres Pro, что ведёт к большой вариативности и сложности методов сбора. Ещё одна важная роль pgpro-otel-collector — скрывать эти отличия от систем мониторинга, в то же время предоставляя максимум информации о базе данных.
Ресивер postgrespro содержит следующие плагины:
activity извлекает информацию об общей активности в экземпляре из представления pg_stat_activity.
archiver извлекает статистику архивирования журнала предзаписи (WAL) из представления pg_stat_archiver.
bgwriter извлекает статистику процессов фоновой записи и контрольных точек из представления pg_stat_bgwriter.
biha извлекает статистику узлов BiHA-кластера из представлений biha.status_v и biha.nodes_v.
bloat_indexes извлекает информацию о раздувании индексов.
bloat_tables извлекает информацию о раздувании таблиц.
buffercache отслеживает использование общего кеша (требуется расширение pg_buffercache).
cache собирает статистику использования кеша из представления pg_stat_database.
checkpointer извлекает данные об активности процесса контрольных точек кластера из представления pg_stat_checkpointer.
cfs отслеживает использование CFS (Compressed File System, сжатая файловая система) (доступно только в Postgres Pro Enterprise).
databases извлекает статистику использования баз данных из представления pg_stat_database.
functions извлекает статистику применения пользовательских функций из представления pg_stat_user_functions.
indexes извлекает статистику использования индексов из представлений pg_stat_user_indexes и pg_statio_user_indexes.
io собирает метрики ввода-вывода (I/O) из представления pg_stat_io.
locks извлекает информацию о состояниях блокировки и ожидания из представления pg_locks.
logs собирает статистику журналов (например, размер каталога журналов) с помощью функции pg_ls_logdir().
pgpro_statements_generic собирает общую статистику из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_inval_msgs собирает информацию о количестве сообщений об аннулировании кеша из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_jit собирает статистику использования JIT-компилятора операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_local_io собирает статистику использования локального кеша операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_parallel собирает статистику по параллельному выполнению из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_planning собирает статистику по времени планирования операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_plans собирает тексты планов запросов из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_queries извлекает информацию о текстах операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_rusage собирает статистику использования ресурсов при планировании и выполнении операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_shared_io собирает статистику использования разделяемого буфера операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_temp_io собирает статистику использования временных файлов операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_timing собирает статистику по времени выполнения операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_wait_stats собирает статистику по событиям ожидания для каждого выполнения запроса из представления pgpro_stats_statements (требуется расширение pgpro_stats).
pgpro_statements_wal собирает статистику по количеству записей, добавляемых операторами в WAL, из представления pgpro_stats_statements (требуется расширение pgpro_stats).
prepared_transactions извлекает статистику подготовленных транзакций из представления pg_prepared_xacts.
recovery собирает статистику восстановления из представлений pg_stat_recovery_prefetch и pg_stat_database_conflicts.
replication извлекает метрики о ведомых узлах и потоковой репликации из представлений pg_stat_replication и pg_stat_wal_receiver.
replication_slots извлекает статистику использования слотов репликации из представления pg_replication_slots.
sequences собирает статистику использования последовательностей из представления pg_sequences.
statements_generic собирает общую статистику по операторам из представления pg_stat_statements.
statements_timing собирает статистику по времени выполнения операторов из представления pg_stat_statements.
statements_parallel собирает статистику по параллельному выполнению из представления pg_stat_statements.
statements_planning собирает статистику по времени планирования операторов из представления pg_stat_statements.
statements_shared_io собирает статистику использования разделяемого буфера операторами из представления pg_stat_statements.
statements_local_io собирает статистику использования локального кеша операторами из представления pg_stat_statements.
statements_temp_io собирает статистику использования временных файлов операторами из представления pg_stat_statements.
statements_wal собирает статистику по количеству записей в WAL, вносимых операторами, из представления pg_stat_statements.
statements_jit собирает статистику по использованию JIT-компилятора операторами из представления pg_stat_statements.
statements_queries извлекает информацию о текстах запросов из представления pg_stat_statements.
subscription собирает статистику подписок из представлений pg_stat_subscription и pg_stat_subscription_stats.
tables извлекает статистику доступа и кортежей на уровне таблиц из представления pg_stat_all_tables.
tables_io извлекает статистику операций ввода-вывода на уровне таблиц из представления pg_statio_all_tables.
tables_size извлекает статистику размеров таблиц, куч (heap) и TOAST-частей из представления pg_tables.
tables_vacuum извлекает статистику операций очистки и анализа на уровне таблиц из представления pg_stat_all_tables.
tablespaces извлекает статистику по использованию табличных пространств.
version извлекает метрики с информацией о версии Postgres Pro.
wait_sampling извлекает метрики на основе выборки по событиям ожидания (требуется расширение pg_wait_sampling).
wal собирает статистику по количеству записей, добавляемых экземпляром в WAL, из представления pg_stat_wal.
Включение дополнительных плагинов может создавать высокую нагрузку на экземпляр СУБД, поэтому должно быть тщательно продумано.
Следующие плагины выключены по умолчанию:
bloat_indexes и bloat_tables. Процедура оценки раздувания ресурсоёмкая и в случае большого количества таблиц может создавать избыточную нагрузку. Рекомендуется ограничивать сбор данных отдельными базами данных, схемами или даже таблицами. Кроме того, данные о раздувании изменяются редко и могут содержать погрешности, поэтому рекомендуется устанавливать длительный интервал между сборами данных — например, 5 минут или более.
indexes и tables. Таблицы и индексы содержат большое количество статистических данных. При наличии множества таблиц и индексов может генерироваться значительный объём метрик, что может привести к проблемам с производительностью при записи в хранилище метрик. Кроме того, не все эти метрики представляют ценность для пользователя. Рекомендуется ограничивать сбор данных, выбирая только определённые базы данных, схемы или таблицы.
statements. В зависимости от нагрузки на экземпляр СУБД, объём статистики по операторам SQL может быть очень большим. Это может привести к генерации значительного количества метрик и нагрузке на запись в хранилище метрик. В силу своей специфичности, статистика операторов не всегда представляет ценность для пользователя. Рекомендуется включать только те плагины, которые действительно полезны в вашем сценарии использования.
statements_queries. В зависимости от длины запросов в статистике операторов, метрики могут вызывать значительные накладные расходы при записи и хранении в хранилище метрик. Рекомендуется настроить коллектор для ограничения максимальной длины значений в метриках.
filelog #Ресивер filelog — компонент OpenTelemetry Collector с открытым исходным кодом для сбора журналов активности экземпляра СУБД. Коллектор поддерживает сбор журналов в формате CSV и JSON.
hostmetrics #Ресивер hostmetrics — компонент OpenTelemetry Collector с открытым исходным кодом для сбора метрик операционной системы (могут потребоваться права root).
journald #Ресивер journald — это компонент OpenTelemetry Collector с открытым исходным кодом для сбора записей журнала systemd, что особенно полезно для Shardman и Postgres Pro Enterprise Manager (PPEM).