Skip to content

Commit f7dfab3

Browse files
feng-95innsd
authored andcommitted
fix: update telemetry
(cherry picked from commit 95d59b3f0eef649bebc022375293201d097e9417)
1 parent 2383b11 commit f7dfab3

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

agentkit/apps/agent_server_app/middleware.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919

2020
from agentkit.apps.agent_server_app.telemetry import telemetry
2121

22-
23-
trace_paths = ["/run_sse", "/run", "/invoke"]
22+
_EXCLUDED_HEADERS = {
23+
"authorization",
24+
"token"
25+
}
2426

2527

2628
class AgentkitTelemetryHTTPMiddleware:
@@ -36,19 +38,23 @@ async def __call__(self, scope, receive, send):
3638
path = scope.get("path", "")
3739
headers_list = scope.get("headers", [])
3840
headers = {k.decode("latin-1"): v.decode("latin-1") for k, v in headers_list}
39-
4041
span = telemetry.tracer.start_span(name="agent_server_request")
4142
ctx = trace.set_span_in_context(span)
4243
context_api.attach(ctx)
44+
headers = {
45+
k: v for k, v in headers.items()
46+
if k.lower() not in _EXCLUDED_HEADERS
47+
}
4348

49+
# Currently unable to retrieve user_id and session_id from headers; keep logic for future use
4450
user_id = headers.get("user_id") or headers.get("x-user-id") or ""
4551
session_id = headers.get("session_id") or headers.get("x-session-id") or ""
46-
headers_like = {"user_id": user_id, "session_id": session_id}
47-
52+
headers["user_id"] = user_id
53+
headers["session_id"] = session_id
4854
telemetry.trace_agent_server(
4955
func_name=f"{method} {path}",
5056
span=span,
51-
headers=headers_like,
57+
headers=headers,
5258
text="", # do not consume body in middleware
5359
)
5460

@@ -58,7 +64,7 @@ async def send_wrapper(message):
5864
more_body = message.get("more_body", False)
5965
if not more_body:
6066
telemetry.trace_agent_server_finish(
61-
func_result="", exception=None
67+
path=path, func_result="", exception=None
6268
)
6369
elif message.get("type") == "http.response.start":
6470
# could record status code if needed
@@ -69,5 +75,5 @@ async def send_wrapper(message):
6975
try:
7076
await self.app(scope, receive, send_wrapper)
7177
except Exception as e:
72-
telemetry.trace_agent_server_finish(func_result="", exception=e)
78+
telemetry.trace_agent_server_finish(path=path,func_result="", exception=e)
7379
raise

agentkit/apps/agent_server_app/telemetry.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323

2424
from agentkit.apps.utils import safe_serialize_to_json_string
2525

26+
_INVOKE_PATH = ["/run_sse", "/run", "/invoke"]
27+
2628
_GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS = [
2729
0.01,
2830
0.02,
@@ -77,22 +79,26 @@ def trace_agent_server(
7779
if user_id:
7880
span.set_attribute(key="gen_ai.user.id", value=user_id)
7981

80-
span.set_attribute(
81-
key="gen_ai.input", value=safe_serialize_to_json_string(text)
82-
)
82+
# Currently unable to retrieve input
83+
# span.set_attribute(
84+
# key="gen_ai.input", value=safe_serialize_to_json_string(text)
85+
# )
8386

84-
span.set_attribute(key="gen_ai.span.kind", value="workflow")
87+
span.set_attribute(key="gen_ai.span.kind", value="agent_server")
8588
span.set_attribute(key="gen_ai.operation.name", value="invoke_agent")
8689
span.set_attribute(key="gen_ai.operation.type", value="agent_server")
8790

8891
def trace_agent_server_finish(
8992
self,
93+
path: str,
9094
func_result: str,
9195
exception: Optional[Exception],
9296
) -> None:
9397
span = trace.get_current_span()
9498
if span and span.is_recording():
95-
span.set_attribute(key="gen_ai.output", value=func_result)
99+
# Currently unable to retrieve output
100+
# span.set_attribute(key="gen_ai.output", value=func_result)
101+
96102
attributes = {
97103
"gen_ai_operation_name": "invoke_agent",
98104
"gen_ai_operation_type": "agent_server",
@@ -101,7 +107,8 @@ def trace_agent_server_finish(
101107
self.handle_exception(span, exception)
102108
attributes["error_type"] = exception.__class__.__name__
103109

104-
if hasattr(span, "start_time") and self.latency_histogram:
110+
# only record invoke request latency metrics
111+
if hasattr(span, "start_time") and self.latency_histogram and path in _INVOKE_PATH:
105112
duration = (time.time_ns() - span.start_time) / 1e9 # type: ignore
106113
self.latency_histogram.record(duration, attributes)
107114
span.end()

0 commit comments

Comments
 (0)