Event listener#

Trino supports custom event listeners that are invoked for the following events:

  • Query creation

  • Query completion (success or failure)

  • Split completion (success or failure)

Event details include session, query execution, resource utilization, timeline, and more.

This functionality enables development of custom logging, debugging and performance analysis plugins.

Implementation#

EventListenerFactory is responsible for creating an EventListener instance. It also defines an EventListener name which is used by the administrator in a Trino configuration. Implementations of EventListener implement methods for the event types they are interested in handling.

The implementation of EventListener and EventListenerFactory must be wrapped as a plugin and installed on the Trino cluster.

Configuration#

After a plugin that implements EventListener and EventListenerFactory has been installed on the coordinator, it is configured using an etc/event-listener.properties file. All of the properties other than event-listener.name are specific to the EventListener implementation.

The event-listener.name property is used by Trino to find a registered EventListenerFactory based on the name returned by EventListenerFactory.getName(). The remaining properties are passed as a map to EventListenerFactory.create().

Example configuration file:

event-listener.name=custom-event-listener
custom-property1=custom-value1
custom-property2=custom-value2

Multiple event listeners#

Trino supports multiple instances of the same or different event listeners. Install and configure multiple instances by setting event-listener.config-files in Config properties to a comma-separated list of the event listener configuration files:

event-listener.config-files=etc/event-listener.properties,etc/event-listener-second.properties