Skip to content

Query Analysis

Query Analysis - плагин который работает как Event Listener для Trino, который обеспечивает анализ, контроль и логирование пользовательских запросов,отправку json в RabbitMQ для дальнейшего анализа SQL пользователей.

Установка

Скопируйте файл trino-query-analysis-{version}.jar в каталог плагинов Trino <path_to_trino>/plugin.

Настройка

Заполнить конфигурационный файл <path_to_trino>/etc/event-listener.properties

Имя параметра Описание
event-listener.name Объявление о использовании Query Analysis. Обязательное значение: query-analysis
trino.queryanalysis.log4j2.configLocation Расположение файла конфигурации Log4j
trino.queryanalysis.log.queryCreatedEvent Boolean значение для отслеживания создания запросов
trino.queryanalysis.log.queryCompletedEvent Boolean значение для отслеживания завершения запросов
trino.queryanalysis.log.splitCompletedEvent Boolean значение для отслеживания завершения разделов
trino.queryanalysis.userName Имя пользователя для аутентификации из Active Directory
trino.queryanalysis.userPassword Пароль для аутентификации из Active Directory
trino.queryanalysis.urlJDBC URL для подключения Trino JDBC-драйвера
trino.queryanalysis.sentry.dsn Установка значения DSN из Sentry, где ошибки будут экспортированы
trino.queryanalysis.sentry.traces-sample-rate Установка значения для захвата 100% транзакций для мониторинга производительности
trino.queryanalysis.tpcdsDB.dbhost Хост базы данных tpcdsDB
trino.queryanalysis.tpcdsDB.dbport Порт базы данных tpcdsDB
trino.queryanalysis.tpcdsDB.database Имя базы данных tpcdsDB
trino.queryanalysis.tpcdsDB.username Имя пользователя для базы данных tpcdsDB
trino.queryanalysis.tpcdsDB.password Пароль для базы данных tpcdsDB
trino.queryanalysis.tpcdsDB.schema Схема для базы данных tpcdsDB
trino.queryanalysis.tpcdsDB.cacheRefreshIntervalMinutes Время обновления кэша в минутах
otel.exporter.endpoint URI для экспорта OTEL
log-filters.forbidden-patterns Паттерны, которые должны быть исключены из логов
log-filters.clean-nodes Ноды, которые необходимо очистить от секций
log-filters.exclude-sections Секции, которые следует удалить из нод
log-filters.forbidden-sources Источники, которые следует удалить из логов
trino.queryanalysis.rabbit.enabled Включение функционала отправки запросов для анализа ИИ
trino.queryanalysis.meta.model Имя модели ИИ для анализов запросов
trino.queryanalysis.meta.prompt_id Путь, где расположен promt-файл для анализа запросов
trino.queryanalysis.rabbit.host Адрес сервера RabbitMQ
trino.queryanalysis.rabbit.port Порт RabbitMQ
trino.queryanalysis.rabbit.username Имя пользователя для подключения к RabbitMQ
trino.queryanalysis.rabbit.password Пароль пользователя для подключения к RabbitMQ
trino.queryanalysis.rabbit.queue Имя очереди RabbitMQ, куда отправлять запросы для анализа

Настроить log4j

Заполнить конфигурационный файл <path_to_trino>/etc/queryanalysis-log4j2.xml

Пример заполнения:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="QueryAnalysis" packages="">
    <Appenders>
        <RollingFile name="JsonRollingFile">
            <FileName>/var/log/trino/query-analysis.log</FileName>
            <FilePattern>/var/log/trino/%d{yyyy-MM-dd-hh}-%i.log</FilePattern>
            <PatternLayout pattern="%m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="JsonRollingFile"/>
        </Root>
    </Loggers>
</Configuration>