diff --git a/services/o11y/pipelines/api-metrics-schema.json b/services/o11y/pipelines/api-metrics-schema.json index 8685ecf59f..94935145aa 100644 --- a/services/o11y/pipelines/api-metrics-schema.json +++ b/services/o11y/pipelines/api-metrics-schema.json @@ -6,6 +6,7 @@ { "name": "is_error", "type": "bool", "required": true }, { "name": "inference_provider", "type": "string", "required": false }, { "name": "user_byok", "type": "bool", "required": true }, + { "name": "kilo_user_id", "type": "string", "required": true }, { "name": "ttfb_ms", "type": "int64", "required": true }, { "name": "complete_request_ms", "type": "int64", "required": true }, { "name": "status_code", "type": "int32", "required": true }, diff --git a/services/o11y/src/o11y-analytics.ts b/services/o11y/src/o11y-analytics.ts index 0a3a3b9644..10833a6ed0 100644 --- a/services/o11y/src/o11y-analytics.ts +++ b/services/o11y/src/o11y-analytics.ts @@ -15,6 +15,7 @@ type ApiMetricsParams = z.infer; * blob4 = "1" if error (statusCode >= 400), "0" otherwise * blob5 = inferenceProvider (best-effort) * blob6 = "1" if userByok, "0" otherwise + * blob7 = kiloUserId * double1 = ttfbMs * double2 = completeRequestMs * double3 = statusCode @@ -36,6 +37,7 @@ export function writeApiMetricsDataPoint( isError ? '1' : '0', params.inferenceProvider, params.userByok ? '1' : '0', + params.kiloUserId, ], doubles: [params.ttfbMs, params.completeRequestMs, params.statusCode], }); @@ -52,6 +54,7 @@ export function writeApiMetricsDataPoint( is_error: isError, inference_provider: params.inferenceProvider, user_byok: params.userByok, + kilo_user_id: params.kiloUserId, ttfb_ms: params.ttfbMs, complete_request_ms: params.completeRequestMs, status_code: params.statusCode,