Trino QueryLog is a Trino (formerly Presto SQL) plugin for logging query events into separate log file.
Its main purpose is to gather queries metadata and statistics as one event per line, so it can be easily collected by external software (e.g. Elastic FileBeat which will send data to Logstash/ElasticSearch/Kibana for storage/analysis).
mvn clean package dependency:copy-dependencies -DincludeScope=runtime
Copy the following artifacts (after successful build) to the Trino plugin folder (<path_to_trino>/plugin/trino-querylog/)
target/dependency/*.jar
target/trino-querylog-*.jar
Create <path_to_trino>/etc/event-listener.properties with the following required parameters, e.g.:
event-listener.name=trino-querylog
trino.querylog.log4j2.configLocation=<path_to_trino>/etc/querylog-log4j2.xml
| Configuration | Default | Description |
|---|---|---|
trino.querylog.log.queryCreatedEvent |
true | Log Query Create event. |
trino.querylog.log.queryCompletedEvent |
true | Log Query Completed event. |
trino.querylog.log.splitCompletedEvent |
true | Log Split Completed event. |
trino.querylog.log.queryCompletedEventcan be used for post-hoc analysis of completed queries, as it contains all of the statistics of the query.trino.querylog.log.splitCompletedEventcan be used to track query progress.trino.querylog.log.queryCreatedEventcan be used to track long-running queries that are stuck without progress.
Prepare configuration file for logging query events, e.g. <path_to_trino>/etc/querylog-log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="TrinoQueryLog" packages="">
<Appenders>
<RollingFile name="JsonRollingFile">
<FileName>/var/log/trino/trino-querylog.log</FileName>
<FilePattern>/var/log/trino/%d{yyyy-MM-dd-hh}-%i.log</FilePattern>
<JsonLayout charset="UTF-8" includeStacktrace="false"
compact="true" eventEol="true" objectMessageAsJsonObject="true"/>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="JsonRollingFile"/>
</Root>
</Loggers>
</Configuration>
Most of the configuration can be safely changed, but for easier consumption by FileBeat it is advised to leave at least JsonLayout and its parameters.