Мониторинг PXF
Мониторинг PXF можно производить с помощью командной строки, а также нескольких HTTP-эндпойнтов, предоставляемых PXF. Эндпойнты позволяют получать дополнительную информацию о состоянии PXF, включая статус работы, сведения о сборке и различные метрики выполняющегося процесса.
Просмотр статуса PXF с помощью командной строки
Команда pxf cluster status позволяет просмотреть статус PXF на всех хостах кластера Greengage DB.
Команда pxf status позволяет просмотреть статус PXF на локальном хосте Greengage DB.
Просмотр статуса PXF доступен только пользователю gpadmin.
Полное описание команд pxf и pxf cluster приведено в статьях Обзор команд pxf и Обзор команд pxf cluster.
Для просмотра статуса PXF в кластере Greengage DB:
-
На мастер-хосте Greengage DB войдите под пользователем
gpadmin. -
Выполните команду
pxf cluster status:
$ pxf cluster status
Вывод должен выглядеть подобным образом:
Checking status of PXF servers on coordinator host, standby coordinator host, and 2 segment hosts... PXF is running on 4 out of 4 hosts
Мониторинг работы сервиса PXF
PXF предоставляет следующие HTTP-эндпойнты для мониторинга работы сервиса PXF на локальном хосте:
-
/actuator/health— возвращает статус сервиса PXF. -
/actuator/info— возвращает информацию о сборке сервиса PXF. -
/actuator/metrics— возвращает метрики JVM, расширенные метрики Tomcat, системные метрики, метрики процессов и Log4j2, а также специфичные метрики сервиса PXF. -
/actuator/prometheus— возвращает все метрики в формате, подходящем для дальнейшей обработки сервером Prometheus.
HTTP-эндпойнты и данные мониторинга PXF доступны любому пользователю.
Чтобы просмотреть данные, возвращаемые конкретным HTTP-эндпойнтом, используйте URL следующего вида (открыв его в браузере или выполнив команду curl):
http://localhost:5888/<endpoint>[/<name>]
В случае альтернативной топологии развертывания PXF, URL имеет следующий вид:
http://<pxf_listen_address>:<port>/<endpoint>[/<name>]
Более подробная информация о топологиях развертывания PXF приведена в статье Установка.
Например, чтобы просмотреть в командной строке информацию о сборке сервиса PXF, работающего на локальном хосте, выполните запрос к эндпойнту /actuator/info:
$ curl http://localhost:5888/actuator/info
Вывод должен выглядеть подобным образом:
{"build":{"pxfApiVersion":"16","version":"6.15.0","artifact":"pxf-service","name":"pxf-service","time":"2025-09-26T12:13:51.925Z","group":"org.greenplum.pxf"}}
Чтобы просмотреть в командной строке статус сервиса PXF, работающего на локальном хосте, выполните запрос к эндпойнту /actuator/health:
$ curl http://localhost:5888/actuator/health
Вывод должен выглядеть подобным образом:
{"status":"UP","groups":["liveness","readiness"]}
Анализ метрик PXF
Так как сервис PXF основан на Spring Boot, он предоставляет метрики JVM, расширенные метрики Tomcat и системные метрики. Подробная информация об этих метриках приведена в статье Metrics документации Spring Boot.
Данные, возвращаемые при запросе метрики, агрегированы с момента последнего запуска сервиса PXF.
Для просмотра списка всех доступных метрик сервиса PXF выполните запрос к эндпойнту /metrics:
$ curl http://localhost:5888/actuator/metrics
PXF также предоставляет следующие дополнительные метрики.
| Название метрики | Описание |
|---|---|
pxf.executor.active |
Количество потоков, которые в данный момент активно выполняют задачи. Так как статусы задач и потоков могут динамически изменяться во время выполнения, возвращаемое значение является приблизительным |
pxf.executor.completed |
Общее количество завершенных задач Так как статусы задач могут динамически изменяться во время выполнения, возвращаемое значение является приблизительным, но не уменьшается при последующих вызовах |
pxf.executor.pool.core |
Базовое количество потоков в пуле |
pxf.executor.pool.max |
Максимально допустимое количество потоков в пуле |
pxf.executor.pool.size |
Текущее количество потоков в пуле |
pxf.executor.queue.capacity |
Максимальное число задач, которое может хранить очередь |
pxf.executor.queue.remaining |
Количество дополнительных задач, которые очередь может принять без блокировки |
pxf.executor.queued |
Количество задач, находящихся в очереди на выполнение. Так как статусы задач могут динамически изменяться во время выполнения, возвращаемое значение является приблизительным |
Кроме того, доступны следующие метрики, связанные с передачей данных. Обратите внимание, что поскольку службы PXF, работающие на мастер-хосте и резервном мастер-хосте, не участвуют в передаче данных, эти метрики можно просмотреть только при запросе с сегментных хостов.
| Название метрики | Описание |
|---|---|
pxf.fragments.sent |
Количество фрагментов, отправленных в Greengage DB, и общее время, затраченное на отправку всех фрагментов |
pxf.records.sent |
Количество записей, отправленных в Greengage DB |
pxf.records.received |
Количество записей, полученных из Greengage DB |
pxf.bytes.sent |
Количество байт, отправленных в Greengage DB |
pxf.bytes.received |
Количество байт, полученных из Greengage DB |
http.server.requests |
Стандартная метрика, дополненная тегами PXF |
Фильтрация данных метрик
Все возвращаемые метрики помечаются тегом application, значение которого всегда равно pxf-service.
Метрики PXF помечаются дополнительными тегами: user, segment, profile и server.
Все эти теги присутствуют в каждой метрике PXF.
Если значение тега не может быть определено, PXF возвращает значение unknown.
С помощью тегов можно фильтровать данные, возвращаемые метриками PXF.
Например, для анализа метрики pxf.bytes.sent для PXF-сервера с именем oracle на сегменте 2 локального хоста используйте следующий запрос:
$ curl http://localhost:5888/actuator/metrics/pxf.bytes.sent?tag=segment:2&tag=server:oracle
Вывод должен выглядеть подобным образом:
{"name":"pxf.bytes.sent","measurements":[{"statistic":"COUNT","value":272.0}],"availableTags":[{"tag":"server","values":["oracle"]},{"tag":"application","values":["pxf-service"]},{"tag":"profile","values":["jdbc"]},{"tag":"user","values":["gpadmin"]}]}
Некоторые метрики, например pxf.fragments.sent, включают дополнительный тег с именем outcome, а его значение (success или error) определяет, были ли отправлены все данные для фрагмента.
Данный тег можно также использовать для фильтрации агрегированных данных.