7.1. Ресиверы #
7.1.1. 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. В зависимости от длины запросов в статистике операторов, метрики могут вызывать значительные накладные расходы при записи и хранении в хранилище метрик. Рекомендуется настроить коллектор для ограничения максимальной длины значений в метриках.
7.1.2. filelog #
Ресивер filelog — компонент OpenTelemetry Collector с открытым исходным кодом для сбора журналов активности экземпляра СУБД. Коллектор поддерживает сбор журналов в формате CSV и JSON.
7.1.3. hostmetrics #
Ресивер hostmetrics — компонент OpenTelemetry Collector с открытым исходным кодом для сбора метрик операционной системы (могут потребоваться права root).
7.1.4. journald #
Ресивер journald — это компонент OpenTelemetry Collector с открытым исходным кодом для сбора записей журнала systemd, что особенно полезно для Shardman и Postgres Pro Enterprise Manager (PPEM).