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.