Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

Настройка логирования в PXF

Антон Монаков

В PXF поддерживаются два типа логирования: на уровне сервиса и на уровне клиента.

Логирование на уровне сервиса управляется PXF и предоставляет следующие уровни (от более критичных к менее критичным):

  • FATAL

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

По умолчанию PXF логирует сообщения уровня INFO и выше. Для некоторых сторонних библиотек записываются только сообщения уровня WARN и выше, что позволяет снизить избыточность вывода.

PXF перехватывает сообщения, выводимые в stdout и stderr, и записывает их в файл $PXF_LOGDIR/pxf-app.out. В этом файле могут содержаться сообщения о запуске сервиса, перехваченные до полной настройки логирования, а также отладочные сообщения. По умолчанию сообщения, полученные после запуска, сохраняются в файл $PXF_LOGDIR/pxf-service.log. При необходимости можно изменить каталог логирования, как описано в разделе Настройка каталога логирования.

Логирование на уровне клиента управляется конкретным клиентским приложением Greengage DB. Подробнее о настройке логирования на уровне клиента для утилиты psql см. в разделе Настройка логирования на уровне клиента.

Настройка каталога логирования

По умолчанию PXF сохраняет сообщения в каталог $PXF_LOGDIR, где переменная окружения PXF_LOGDIR определена как $PXF_BASE/logs.

Чтобы изменить каталог логирования:

  1. На мастер-хосте Greengage DB войдите под пользователем gpadmin.

  2. Откройте файл $PXF_BASE/conf/pxf-env.sh в текстовом редакторе и установите путь к каталогу логирования в качестве значения переменной PXF_LOGDIR. Указанный каталог логирования должен существовать на всех хостах кластера Greengage DB и быть доступен пользователю gpadmin.

    export PXF_LOGDIR="/new/log/dir"
  3. Синхронизируйте конфигурацию между хостами кластера Greengage DB, а затем перезапустите PXF на всех хостах:

    $ pxf cluster sync
    $ pxf cluster restart

Настройка логирования на уровне сервиса

Для логирования на уровне сервиса в PXF используется Apache Log4j 2. Сообщения уровня сервиса сохраняются в файлах $PXF_LOGDIR/pxf-app.out и $PXF_LOGDIR/pxf-service.log.

По умолчанию PXF логирует сообщения с уровнем INFO и выше. Вы можете изменить уровень логирования на одном из хостов кластера Greengage DB или на всех хостах кластера.

ПРИМЕЧАНИЕ

Логи уровней DEBUG и TRACE более детальны, но при этом и более объемны и влияют как на производительность, так и на место в хранилище. После сбора необходимой информации рекомендуется понизить уровень логирования.

Настройка уровня логирования для конкретного хоста

  1. На мастер-хосте Greengage DB войдите под пользователем gpadmin.

  2. Выполните одно из следующих действий:

    • Установите уровень логирования с помощью команды pxf restart в командной строке. Например, чтобы изменить уровень с INFO на DEBUG, выполните следующую команду:

      $ PXF_LOG_LEVEL=debug pxf restart
    • Установите уровень логирования в файле $PXF_BASE/conf/pxf-application.properties:

      1. Откройте файл pxf-application.properties в текстовом редакторе и установите нужный уровень логирования в свойстве pxf.log.level. Например, чтобы изменить уровень с INFO на DEBUG, установите DEBUG в качестве значения свойства pxf.log.level:

        pxf.log.level=DEBUG
      2. Перезапустите PXF на хосте:

        $ pxf restart
  3. После выполнения любых операций с PXF проверьте сообщения в файле pxf-service.log.

Чтобы вернуть уровень логирования к INFO, выполните одно из следующих действий:

  • Если уровень был установлен с помощью командной строки, перезапустите PXF на хосте:

    $ pxf restart
  • Если уровень был установлен в файле pxf-application.properties, закомментируйте строку или установите для свойства pxf.log.level значение INFO, а затем перезапустите PXF на хосте:

    $ pxf restart

Настройка уровня логирования для кластера

Чтобы изменить уровень логирования сервиса PXF на всех хостах кластера Greengage DB:

  1. На мастер-хосте Greengage DB войдите под пользователем gpadmin.

  2. Откройте файл $PXF_BASE/conf/pxf-application.properties в текстовом редакторе и установите нужный уровень логирования в качестве значения свойства pxf.log.level:

    pxf.log.level=DEBUG
  3. Синхронизируйте конфигурацию между хостами кластера Greengage DB, а затем перезапустите PXF на всех хостах:

    $ pxf cluster sync
    $ pxf cluster restart
  4. После выполнения любых операций с PXF проверьте сообщения в файле pxf-service.log.

Чтобы вернуть уровень логирования к INFO, закомментируйте строку или установите для свойства pxf.log.level значение INFO, синхронизируйте конфигурацию между хостами кластера Greengage DB, а затем перезапустите PXF на всех хостах.

Настройка логирования на уровне клиента

Логирование сессии клиента на уровне базы данных может помочь при устранении неполадок во внутренних операциях сервиса PXF. Чтобы включить логирование отладочных сообщений клиента Greengage DB (psql), установите параметр конфигурации сервера client_min_messages на нужный уровень логирования.

Доступны следующие уровни (от более критичных к менее критичным):

  • ERROR

  • WARNING

  • NOTICE

  • LOG

  • DEBUG1

  • DEBUG2

  • DEBUG3

  • DEBUG4

  • DEBUG5

Указанная конфигурация логирования записывает сообщения в stdout и применяется ко всем операциям, выполняемым в течение сессии, включая операции с внешними таблицами PXF.

Например:

SET client_min_messages=DEBUG2;
SELECT * FROM customers;

Вывод должен выглядеть подобным образом:

DEBUG1:  Message type Q received by from libpq, len = 31
LOG:  statement: SELECT * FROM customers;
DEBUG2:
[OPT]: Using default search strategy
DEBUG1:  GPORCA produced plan
DEBUG1:  Query plan size to dispatch: 1KB
DEBUG2:  add icid 8 cid 28 status 1
DEBUG1:  Message type M received by from libpq, len = 739  (seg0 slice1 10.92.51.161:10500 pid=1567361)
DEBUG1:  Message type M received by from libpq, len = 739  (seg1 slice1 10.92.51.161:10501 pid=1567360)
...
DEBUG1:  TeardownUDPIFCInterconnect successful
DEBUG1:  Interconnect State: isSender 1 isReceiver 0 snd_queue_depth 2 recv_queue_depth 4
Gp_max_packet_size 8192 UNACK_QUEUE_RING_SLOTS_NUM 2000 TIMER_SPAN 5000 DEFAULT_RTT 20000
hasErrors 0, ic_instance_id 8 ic_id_last_teardown 8 snd_buffer_pool.count 0
snd_buffer_pool.maxCount 0 snd_sock_bufsize 2097152 recv_sock_bufsize 2097152 snd_pkt_count 1
retransmits 0 crc_errors 0 recv_pkt_count 0 recv_ack_num 1 recv_queue_size_avg -nan capacity_avg -nan
freebuf_avg 2.000000 mismatch_pkt_num 0 disordered_pkt_num 0
duplicated_pkt_num 0 rtt/dev [17541/4303, 17541.000000/4303.000000, 17541/4303]  cwnd 2.000000
status_query_msg_num 0  (seg3 slice1 10.92.51.96:10501 pid=1566326)
DEBUG1:  TeardownUDPIFCInterconnect successful  (seg3 slice1 10.92.51.96:10501 pid=1566326)
 id | first_name | last_name |         email          |      address
----+------------+-----------+------------------------+-------------------
  1 | John       | Doe       | john.doe@example.com   | 123 Elm Street
  2 | Jane       | Smith     | jane.smith@example.com | 456 Oak Street
  3 | Bob        | Brown     | bob.brown@example.com  | 789 Pine Street
  4 | Rob        | Stuart    | rob.stuart@example.com | 119 Willow Street
(4 rows)
ПРИМЕЧАНИЕ

Уровни логирования сессии клиента DEBUG2 и выше негативно влияют на производительность. После сбора необходимой информации рекомендуется понизить уровень логирования, например:

SET client_min_messages=NOTICE;