1.2. Компоненты pgpro-otel-collector #

В этом разделе описаны входящие в pgpro-otel-collector компоненты.

Каждый компонент, в зависимости от его типа, нужно добавить в секцию receivers, processors или exporters соответственно, и, при необходимости, настроить. Конфигурация компонентов зависит от настройки экземпляра СУБД и используемого формата журнала (см. параметры logging_collector и log_destination).

1.2.1. Ресиверы #

1.2.1.1. postgrespro #

Ресивер postgrespro — главный компонент коллектора, заключающий в себе все инструменты (встроенные плагины) для сбора данных с экземпляра СУБД. Данный ресивер является внутренней разработкой компании Postgres Pro и не является частью открытой экосистемы OpenTelemetry.

Ресивер организован по модульному принципу и позволяет регулировать объём собираемых данных через включение модулей. Некоторые модули предусматривают дополнительную настройку.

Плагины — это внутренние компоненты ресивера, отвечающие за сбор разных типов статистических данных. Каждый плагин предназначен для сбора конкретной информации, которая затем преобразуется в группы метрик. Все группы метрик перечислены в Главе 4.

pgpro-otel-collector предоставляет группы метрик, описывающие различные подсистемы, события и процессы внутри системы управления базами данных (СУБД), такие как использование таблиц и индексов, работа фоновых процессов, использование ресурсов запросами и т. д.

Количество статистических данных может варьироваться в зависимости от версии и редакции Postgres Pro, что ведёт к большой вариативности и сложности методов сбора. Ещё одна важная роль pgpro-otel-collector — скрывать эти отличия от систем мониторинга, в то же время предоставляя максимум информации о базе данных.

1.2.1.1.1. Плагины postgrespro #

Ресивер postgrespro содержит следующие плагины:

activity #

Извлекает информацию об общей активности в экземпляре из представления pg_stat_activity.

См. раздел Метрики активности.

archiver #

Извлекает статистику архивирования журнала предзаписи (WAL) из представления pg_stat_archiver.

См. раздел Метрики архивирования WAL.

bgwriter #

Извлекает статистику процессов фоновой записи и контрольных точек из представления pg_stat_bgwriter.

См. раздел Метрики фоновой записи.

biha #

Извлекает статистику узлов BiHA-кластера из представлений biha.status_v и biha.nodes_v.

См. раздел Метрики BiHA.

bloat_indexes #

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

См. раздел Метрики раздувания таблиц и индексов.

bloat_tables #

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

См. раздел Метрики раздувания таблиц и индексов.

buffercache #

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

См. раздел Метрики использования общего кеша.

cache #

Собирает статистику использования кеша из представления pg_stat_database.

См. раздел Метрики использования баз данных.

checkpointer #

Извлекает данные об активности процесса контрольных точек кластера из представления pg_stat_checkpointer.

См. раздел Метрики фоновой записи.

cfs #

Отслеживает использование CFS (Compressed File System, сжатая файловая система) (доступно только в Postgres Pro Enterprise).

См. раздел Метрики CFS.

databases #

Извлекает статистику использования баз данных из представления pg_stat_database.

См. раздел Метрики использования баз данных.

functions #

Извлекает статистику применения пользовательских функций из представления pg_stat_user_functions.

См. раздел Метрики использования пользовательских функций.

health #

Извлекает статистические данные, относящиеся к работоспособности системы, такие как время непрерывной работы (uptime).

См. раздел Прочие метрики.

indexes #

Извлекает статистику использования индексов из представлений pg_stat_user_indexes и pg_statio_user_indexes.

См. раздел Метрики использования индексов.

io #

Собирает метрики ввода-вывода (I/O) из представления pg_stat_io.

См. раздел Метрики использования ввода-вывода.

locks #

Извлекает информацию о состояниях блокировки и ожидания из представления pg_locks.

См. раздел Метрики блокировок.

logs #

Собирает статистику журналов (например, размер каталога журналов) с помощью функции pg_ls_logdir().

См. раздел Прочие метрики.

pg_stat_slru #

Собирает статистику SLRU-кешей (simple least-recently-used, простое вытеснение давно не используемых) из представления pg_stat_slru.

См. раздел Прочие метрики.

pgpro_statements_generic #

Собирает общую статистику из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_inval_msgs #

Собирает информацию о количестве сообщений об аннулировании кеша из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_jit #

Собирает статистику использования JIT-компилятора операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_local_io #

Собирает статистику использования локального кеша операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_parallel #

Собирает статистику по параллельному выполнению из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_planning #

Собирает статистику по времени планирования операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_plans #

Собирает тексты планов запросов из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_queries #

Извлекает информацию о текстах операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_rusage #

Собирает статистику использования ресурсов при планировании и выполнении операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_shared_io #

Собирает статистику использования разделяемого буфера операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_temp_io #

Собирает статистику использования временных файлов операторами из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_timing #

Собирает статистику по времени выполнения операторов из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_wait_stats #

Собирает статистику по событиям ожидания для каждого выполнения запроса из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

pgpro_statements_wal #

Собирает статистику по количеству записей, добавляемых операторами в WAL, из представления pgpro_stats_statements (требуется расширение pgpro_stats).

См. раздел Метрики по SQL-запросам и операторам.

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.

См. раздел Метрики последовательностей.

settings_info #

Собирает статистику параметров времени выполнения из представления pg_settings.

См. раздел Прочие метрики.

statements_generic #

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

См. раздел Метрики по SQL-запросам и операторам.

statements_timing #

Собирает статистику по времени выполнения операторов из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_parallel #

Собирает статистику по параллельному выполнению из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_planning #

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

См. раздел Метрики по SQL-запросам и операторам.

statements_shared_io #

Собирает статистику использования разделяемого буфера операторами из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_local_io #

Собирает статистику использования локального кеша операторами из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_temp_io #

Собирает статистику использования временных файлов операторами из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_wal #

Собирает статистику по количеству записей в WAL, вносимых операторами, из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_jit #

Собирает статистику по использованию JIT-компилятора операторами из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

statements_queries #

Извлекает информацию о текстах запросов из представления pg_stat_statements.

См. раздел Метрики по SQL-запросам и операторам.

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. В зависимости от длины запросов в статистике операторов, метрики могут вызывать значительные накладные расходы при записи и хранении в хранилище метрик. Рекомендуется настроить коллектор для ограничения максимальной длины значений в метриках.

1.2.1.2. filelog #

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

1.2.1.3. hostmetrics #

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

1.2.1.4. journald #

Ресивер journald — это компонент OpenTelemetry Collector с открытым исходным кодом для сбора записей журнала systemd, что особенно полезно для Shardman и Postgres Pro Enterprise Manager (PPEM).

1.2.1.5. sqlquery #

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

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

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

1.2.2. Процессоры #

1.2.2.1. attributes #

Процессор attributes — компонент OpenTelemetry Collector с открытым исходным кодом для обработки отдельных атрибутов записей журнала.

1.2.2.2. resource #

Процессор resource — компонент OpenTelemetry Collector с открытым исходным кодом для добавления дополнительных атрибутов записей журнала.

1.2.2.3. batch #

Процессор batch — компонент OpenTelemetry Collector с открытым исходным кодом для формирования пакетов данных и регулировки механизма отправки данных.

1.2.2.4. transform #

Процессор transform — компонент OpenTelemetry Collector с открытым исходным кодом для изменения телеметрических данных с помощью языка преобразований OpenTelemetry (OTTL).

1.2.2.5. memory_limiter #

Процессор memory_limiter — компонент OpenTelemetry Collector с открытым исходным кодом для ограничения потребления памяти, что позволяет избежать ошибок нехватки памяти.

1.2.2.6. filter #

Процессор filter — это компонент OpenTelemetry Collector с открытым исходным кодом, который позволяет включать или исключать телеметрические данные на основе заданных условий.

1.2.2.7. metricstransform #

Процессор metricstransform — это компонент OpenTelemetry Collector с открытым исходным кодом, который позволяет переименовывать метрики и управлять метками (добавлять, переименовывать, удалять), а также выполнять операции масштабирования и агрегирования.

1.2.3. Экспортёры #

1.2.3.1. prometheus #

Экспортёр prometheus — компонент OpenTelemetry Collector с открытым исходным кодом для отправки собранных метрик по встроенному HTTP-серверу и публикации их на странице /metrics в формате системы мониторинга Prometheus. Этот экспортёр наиболее простой в использовании — он не требует обязательной настройки внешних компонентов и может быть включён по умолчанию.

1.2.3.2. otlphttp #

Экспортёр otlphttp — компонент OpenTelemetry Collector с открытым исходным кодом для отправки собранных метрик в OTLP-совместимую систему хранения или мониторинга, которая предварительно должна быть развёрнута и доступна. При этом используется протокол HTTP.

1.2.3.3. kafka #

Экспортёр kafka — компонент OpenTelemetry Collector с открытым исходным кодом для отправки метрик и журналов в Apache Kafka.

1.2.3.4. zabbix #

Экспортёр zabbix — это компонент коллектора для отправки метрик в Zabbix. За примерами использования обратитесь к Интеграция с Zabbix.

FAQ