Логирование в Phoenix

Обзор

Apache Phoenix позволяет выполнять логирование выполненных запросов SELECT, сохраняя их в таблицу SYSTEM.LOG. Можно указывать уровень подробности и среднее количество запросов для логирования. Кроме того, можно добавить лог компонента Phoenix Query Server к логу сервиса HBase.

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

Чтобы включить логирование запросов в Phoenix, перейдите в веб-интерфейс ADCM и выполните следующие действия:

  1. Перейдите в раздел Clusters и выберите ваш кластер.

  2. Откройте вкладку Services и выберите сервис HBase.

  3. Активируйте переключатель Show advanced и раскройте секцию параметров Custom hbase-site.xml.

  4. Нажмите Add property и в качестве названия параметра введите phoenix.log.level. В качестве значения параметра введите одно из следующих значений:

    • OFF — запросы логироваться не будут (значение по умолчанию);

    • INFO — будут логироваться основные сведения о запросах;

    • DEBUG — будут логироваться подробные сведения о запросах;

    • TRACE — будут логироваться подробные сведения о запросах, включая bind-параметры.

  5. Нажмите Add property и в качестве названия параметра введите phoenix.log.sample.rate. В качестве значения параметра введите численное представление вероятности логирования запроса от 0.0 до 1.0. Например, значение 0.5 означает, что примерно половина выполненных запросов SELECT будет логироваться. Значение по умолчанию: 1.0 (все запросы).

  6. Сохраните конфигурацию, нажав Save → Create, и перезапустите сервис, выполнив действие Actions → Reconfig and graceful restart.

  7. Если на текущий момент была загружена командная оболочка Phoenix, выйдите из неё и снова загрузите, чтобы изменения вступили в силу.

  8. Если необходимо, с помощью команды GRANT назначьте права на запись в таблицу SYSTEM.LOG пользователям, чьи запросы необходимо логировать.

ВАЖНО
Лог запросов смогут увидеть все имеющие доступ к таблице SYSTEM.LOG пользователи. Используйте логирование запросов с осторожностью.

Просмотр лога запросов

Для просмотра лога запросов нужно составить и выполнить соответствующий запрос к таблице SYSTEM.LOG. Пример:

SELECT * FROM SYSTEM.LOG;

Результат:

+---------------+--------------+--------------------------------------+-----------+------------------+--------------+----------------------------------------------------+
|  START_TIME   |  TABLE_NAME  |               QUERY_ID               | TENANT_ID |       USER       |  CLIENT_IP   |                         QUERY                      |
+---------------+--------------+--------------------------------------+-----------+------------------+--------------+----------------------------------------------------+
| 1743693276315 | WEAPON_TYPES | efa9397d-56b4-4766-940f-b2dca9ed88ac |           | rsa-key-20240513 | 10.92.40.104 | SELECT ammo_type FROM weapon_types GROUP BY ammo_t |
| 1744124555613 |              | a380c6f4-cffc-4fd8-b35c-1ef02aa52632 |           | rsa-key-20240513 | 10.92.40.104 | SELECT ammo_type FROM weapon_types GROUP BY ammo_t |
+---------------+--------------+--------------------------------------+-----------+------------------+--------------+----------------------------------------------------+

Таблица SYSTEM.LOG имеет гораздо больше столбцов, чем может поместиться в окне терминала какой бы то ни было ширины. Можно использовать команду !outputformat vertical перед выполнением запроса и/или сузить его условия.

Для очистки таблицы SYSTEM.LOG используйте выражение DELETE с условием WHERE. Например, чтобы удалить все записи из этой таблицы, выполните следующий запрос:

DELETE FROM SYSTEM.LOG WHERE START_TIME > 0;

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

Для настройки логирования Phoenix Query Server перейдите в веб-интерфейс ADCM и выполните следующие действия:

  1. Перейдите в раздел Clusters и выберите ваш кластер.

  2. Откройте вкладку Services и выберите сервис HBase.

  3. Активируйте переключатель Show advanced и выберите параметр Custom log4j.properties.

  4. Добавьте следующие строки к содержимому параметра:

    log4j.logger.org.apache.phoenix.queryserver=DEBUG
    log4j.logger.org.apache.phoenix.queryserver.server=DEBUG
    log4j.logger.org.apache.phoenix=DEBUG
    log4j.logger.org.eclipse.jetty.io.AbstractEndPoint=DEBUG
  5. Замените значение log4j.threshold на DEBUG и нажмите Apply.

  6. Сохраните конфигурацию, нажав Save → Create и перезапустите сервис, выполнив действие Actions → Reconfig and graceful restart.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней