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.

  • bloat_indexes извлекает информацию о раздувании индексов.

  • bloat_tables извлекает информацию о раздувании таблиц.

  • buffercache отслеживает использование общего кеша (требуется расширение pg_buffercache).

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

  • prepared_transactions извлекает статистику подготовленных транзакций из представления pg_prepared_xacts.

  • replication извлекает метрики о ведомых узлах и потоковой репликации из представлений pg_stat_replication и pg_stat_wal_receiver.

  • replication_slots извлекает статистику использования слотов репликации из представления pg_replication_slots.

  • statements_generic собирает общую статистику по операторам из представления pg_stat_statements.

  • statements_timing собирает статистику по времени выполнения операторов из представления 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.

  • tables извлекает статистику по использованию таблиц из представлений pg_stat_user_tables и pg_statio_user_tables.

  • tablespaces извлекает статистику по использованию табличных пространств.

  • version извлекает метрики с информацией о версии Postgres Pro.

  • wait_sampling извлекает метрики на основе выборки по событиям ожидания (требуется расширение pg_wait_sampling).

  • wal извлекает статистику по количеству записей в WAL, вносимых экземпляром.

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

⚠️ ВАЖНО! Включение дополнительных плагинов может создавать высокую нагрузку на экземпляр СУБД, поэтому должно быть тщательно продумано.

Следующие плагины выключены по умолчанию:

  • bloat_indexes и bloat_tables. Процедура оценки раздувания ресурсоёмкая и в случае большого количества таблиц может создавать избыточную нагрузку. Рекомендуется ограничивать сбор данных отдельными базами данных, схемами или даже таблицами. Кроме того, данные о раздувании изменяются редко и могут содержать погрешности, поэтому рекомендуется устанавливать длительный интервал между сборами данных — например, 5 минут или более.

  • indexes и tables. Таблицы и индексы содержат большое количество статистических данных. При наличии множества таблиц и индексов может генерироваться значительный объём метрик, что может привести к проблемам с производительностью при записи в хранилище метрик. Кроме того, не все эти метрики представляют ценность для пользователя. Рекомендуется ограничивать сбор данных, выбирая только определённые базы данных, схемы или таблицы.

  • statements. В зависимости от нагрузки на экземпляр СУБД, объём статистики по операторам SQL может быть очень большим. Это может привести к генерации значительного количества метрик и нагрузке на запись в хранилище метрик. В силу своей специфичности, статистика операторов не всегда представляет ценность для пользователя. Рекомендуется включать только те плагины, которые действительно полезны в вашем сценарии использования.

  • statements_queries. В зависимости от длины запросов в статистике операторов, метрики могут вызывать значительные накладные расходы при записи и хранении в хранилище метрик. Рекомендуется настроить коллектор для ограничения максимальной длины значений в метриках.

7.1.2. filelog #

Ресивер filelog — открытый компонент OpenTelemetry для сбора журналов активности экземпляра СУБД. Коллектор поддерживает сбор журналов в формате CSV и JSON.

7.1.3. hostmetrics #

Ресивер hostmetrics — открытый компонент OpenTelemetry для сбора метрик операционной системы (могут потребоваться права root).