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).

7.1.5. sqlquery #

Ресивер sqlquery — компонент OpenTelemetry Collector с открытым исходным кодом для сбора метрик и/или журналов из пользовательских SQL-запросов.

Предупреждение

В настоящее время ресивер sqlquery является экспериментальным и не рекомендован для использования в производственной среде.