Tracks authenticated UI user requests to understand usage patterns:
- New ClickHouse usage_events table with 90-day TTL
- UsageTrackingInterceptor captures method, path, duration, user
- Path normalization groups dynamic segments ({id}, {hash})
- Buffered writes via WriteBuffer + periodic flush
- Admin endpoint GET /api/v1/admin/usage with groupBy=endpoint|user|hour
- Skips agent requests, health checks, and data ingestion
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
14 lines
423 B
SQL
14 lines
423 B
SQL
CREATE TABLE IF NOT EXISTS usage_events (
|
|
timestamp DateTime64(3) DEFAULT now64(3),
|
|
username LowCardinality(String),
|
|
method LowCardinality(String),
|
|
path String,
|
|
normalized LowCardinality(String),
|
|
status_code UInt16,
|
|
duration_ms UInt32,
|
|
query_params String DEFAULT ''
|
|
)
|
|
ENGINE = MergeTree()
|
|
ORDER BY (username, timestamp)
|
|
TTL toDateTime(timestamp) + INTERVAL 90 DAY;
|