Capture Horizon Iceberg REST Catalog events in the event table¶
Snowflake can capture the HTTP requests that external query engines (such as Spark, Trino, DuckDB, or PyIceberg) make against the Horizon Iceberg REST Catalog (IRC) APIs and route them to the event table configured for your account. Each IRC request produces a record you can query alongside your other Snowflake telemetry, so you can monitor IRC traffic and troubleshoot integrations with external engines.
These records are separate from access history. Access history records successful IRC operations. Event table records include the HTTP status code, so you can also find failed requests.
For more information about the Horizon IRC APIs, see Access Apache Iceberg™ tables with an external engine through Snowflake Horizon Catalog.
Enable telemetry for Horizon IRC events¶
To route Horizon IRC events to an event table, set the account’s log level to at least INFO and set the account event table.
If your account already has an event table configured, you only need to raise LOG_LEVEL.
For general information about configuring an event table, see Logging, tracing, and metrics.
Query Horizon IRC events¶
Every record that Snowflake writes for a Horizon IRC request sets the SCOPE column to snow.managed_polaris. Filter on that scope to return only IRC events.
Event table columns for Horizon IRC events¶
The following event table columns carry information about each captured IRC request.
-
TRACE: Correlates the record with the tracing context for the IRC request.
-
RESOURCE_ATTRIBUTES: Identifies the Snowflake account that served the IRC request.
-
SCOPE: Identifies the record as a Horizon IRC event. Filter on this value to isolate IRC records.
-
RECORD: Provides the severity of the event.
-
RECORD_ATTRIBUTES: Describes the IRC request itself, including the HTTP method and route, the IRC operation, the Snowflake principal that authenticated the client, the roles activated for the request, and the IRC request ID.
A
GET /polaris/api/catalog/v1/.../tables/<name>request looks like this:Where:
http.request.methodandhttp.route: The HTTP method and route of the IRC request.snow.polaris.operation_id: The IRC operation the request performed (for example,loadTable,updateTable,createTable,dropTable,reportMetrics).snow.polaris.principal_name: The Snowflake user that authenticated the IRC client.snow.polaris.activated_roles: The roles that were active for the request.snow.polaris.request_id: A unique identifier for the IRC request.
-
VALUE: Contains the HTTP response status code Snowflake returned for the request. Use this to distinguish successful requests from failures.
Other typical values include
204(no content, for example after a successful metrics report) and400(bad request).