Компоненты коллектора
Ресиверы:
postgrespro
filelog
hostmetrics
Процессоры:
attributes
resource
batch
Экспортеры:
prometheus
otlphttp
Ресиверы
Postgrespro
Ресивер postgrespro
является компонентом OpenTelemetryCollector и осуществляет сбор данных с экземпляров СУБД. Ресивер является внутренней разработкой компании PostgresPro и НЕ является частью открытой экосистемы 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) (доступно только в Postgres Pro Enterprise).
- databases — извлекает статистику использования баз данных из представления pg_stat_database.
- functions — извлекает статистику утилизации пользовательских функций из представления pg_stat_user_functions.
- hostmetrics — собирает метрики операционной системы.
- 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, вносимых экземпляром.
Каждый из этих модулей может предоставлять десятки видов метрик. В зависимости от числа объектов в экземпляре, количество метрик может исчисляться тысячами. Однако некоторые метрики или даже группы метрик могут быть не нужны. Поэтому pgpro-otel-collector
позволяет включать и выключать нужные модули, таким образом контролируя количество и качество собираемых данных.
Важно: включение следующих модулей в некоторых обстоятельствах могут создавать значительную нагрузку на экземпляр СУБД. Модули выключены в конфигурации по умолчанию и их включение должно рассматриваться очень серьезно с должным уровнем ограничения сбора только по необходимым объектам.
bloat_indexes
иbloat_tables
- процедура оценки раздувания является ресурсоемкой и в случае большого количества таблиц может создавать избыточную нагрузку. Рекомендуется ограничивать сбор данных отдельными базами данных, схемами или даже таблицами. Также, данные о раздувании изменяются редко и их точность допускает некоторую погрешность, поэтому рекомендуется устанавливать длинный интервал между сборами данных, например 5 минут и более.indexes
иtables
- таблицы и индексы содержат большое количество статистики и при большом количестве таблиц и индексов может генерироваться большое количество метрик - запись такого объема в хранилище метрик может вызвать проблемы производительности и не все эти метрики могут иметь конечную пользовательскую ценность. Рекомендуется ограничивать сбор данных отдельными базами данных, схемами или даже таблицами.statements
- в зависимости от нагрузки на экземпляр СУБД статистики по операторам может быть очень много, это может привести к генерации большого количества метрик и нагрузке на запись в хранилище метрик. В силу специфичности статистики операторов она не всегда может иметь достаточную пользовательскую ценность. Рекомендуется включать только те модули которые действительно представляют ценность в вашем случае.statements_queries
- в зависимости от длины текстов запросов в статистике операторов метрики могут быть иметь большие накладные расход при записи и хранении в хранилище метрик. Рекомендуется настройками коллектора ограничивать максимальную длину значений в метриках.
Filelog
Ресивер filelog
является открытым компонентом OpenTelemetry, подробную информацию о ресивере можно получить тут.
Коллектор использует ресивер filelog
для сбора журналов экземпляра СУБД - для этого нужно добавить ресивер filelog
в секцию receivers
и описать его настройку.
Настройка ресивера зависит от настроек экземпляра СУБД и используемого формата журнала (см. параметры logging_collector
и log_destination
). Коллектор поддерживает сбор журналов в формате CSV и JSON.
Hostmetrics
Ресивер hostmetrics
является открытым компонентом OpenTelemetry, подробную информацию о ресивере можно получить тут.
Коллектор использует ресивер hostmetrics
для сбора метрик операционной системы - для этого нужно добавить ресивер hostmetrics
в секцию receivers
и описать его настройку.
Процессоры
Attributes
Процессор attributes
является открытым компонентом OpenTelemetry, подробную информацию о процессоре attributes
можно получить тут.
Процессор attributes
используется для обработки отдельных атрибутов записей журнала. Процессор нужно добавить в секцию processors
и описать его настройку.
Настройка процессора также зависит от настроек экземпляра СУБД и используемого формата журнала (см. параметры logging_collector
и log_destination
).
Resource
Процессор resource
является открытым компонентом OpenTelemetry, подробную информацию о процессоре resource
можно получить тут.
Процессор resource
используется для добавления дополнительных атрибутов записей журнала. Процессор нужно добавить в секцию processors
и описать его настройку.
Настройка процессора также зависит от настроек экземпляра СУБД и используемого формата журнала (см. параметры logging_collector
и log_destination
).
Batch
Процессор batch
является открытым компонентом OpenTelemetry, подробную информацию о процессоре batch
можно получить тут.
Процессор batch
используется для формирования пакетов данных и регулировки механизма отправки данных. Процессор нужно добавить в секцию processors
и описать его настройку.
Экспортеры
Prometheus
Экспортер prometheus
является открытым компонентом OpenTelemetry, подробную информацию о ресивере можно получить тут. Экспортер prometheus
является наиболее простым в использовании. Экспортер не требует обязательной настройки внешних компонентов и может быть включен по умолчанию. Экспортер нужно добавить в секцию exporters
и описать его настройку.
OTLPHTTP
Экспортер otlphttp
является открытым компонентом OpenTelemetry, подробную информацию о ресивере можно получить тут. Экспортер otlphttp
используется для отправки собранных метрик в OTLP-совместимую систему хранения или мониторинга которая предварительно должна быть развернута и доступна. Экспортер нужно добавить в секцию exporters
и описать его настройку.