Skip to content

Commit 4a38ef6

Browse files
CopilotnikhilNava
andauthored
Add /otlp/ segment to observability exporter URL paths
Agent-Logs-Url: https://github.com/microsoft/Agent365-python/sessions/15f00c02-8b53-473e-857f-ad6ba3a9e1bb Co-authored-by: nikhilNava <211831449+nikhilNava@users.noreply.github.com>
1 parent 402f822 commit 4a38ef6

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/exporters/agent365_exporter.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class _Agent365Exporter(SpanExporter):
4646
Agent 365 span exporter for Agent 365:
4747
* Partitions spans by (tenantId, agentId)
4848
* Builds OTLP-like JSON: resourceSpans -> scopeSpans -> spans
49-
* POSTs per group to https://{endpoint}/maven/agent365/agents/{agentId}/traces?api-version=1
49+
* POSTs per group to https://{endpoint}/observability/tenants/{tenantId}/otlp/agents/{agentId}/traces?api-version=1
50+
* or, when use_s2s_endpoint is True, https://{endpoint}/observabilityService/tenants/{tenantId}/otlp/agents/{agentId}/traces?api-version=1
5051
* Adds Bearer token via token_resolver(agentId, tenantId)
5152
"""
5253

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/exporters/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,9 @@ def build_export_url(
221221
The fully constructed export URL with path and query parameters.
222222
"""
223223
endpoint_path = (
224-
f"/observabilityService/tenants/{tenant_id}/agents/{agent_id}/traces"
224+
f"/observabilityService/tenants/{tenant_id}/otlp/agents/{agent_id}/traces"
225225
if use_s2s_endpoint
226-
else f"/observability/tenants/{tenant_id}/agents/{agent_id}/traces"
226+
else f"/observability/tenants/{tenant_id}/otlp/agents/{agent_id}/traces"
227227
)
228228

229229
parsed = urlparse(endpoint)

tests/observability/core/test_agent365_exporter.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def test_export_success(self):
124124

125125
self.assertIn(DEFAULT_ENDPOINT_URL, url)
126126
self.assertIn(
127-
"/observability/tenants/test-tenant-123/agents/test-agent-456/traces", url
127+
"/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces", url
128128
)
129129
self.assertEqual(headers["authorization"], "Bearer test_token_123")
130130
self.assertEqual(headers["content-type"], "application/json")
@@ -237,10 +237,10 @@ def test_s2s_endpoint_path_when_enabled(self):
237237

238238
self.assertIn(DEFAULT_ENDPOINT_URL, url)
239239
self.assertIn(
240-
"/observabilityService/tenants/test-tenant-123/agents/test-agent-456/traces", url
240+
"/observabilityService/tenants/test-tenant-123/otlp/agents/test-agent-456/traces", url
241241
)
242242
self.assertNotIn(
243-
"/observability/tenants/test-tenant-123/agents/test-agent-456/traces", url
243+
"/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces", url
244244
)
245245
self.assertEqual(headers["authorization"], "Bearer test_token_123")
246246
self.assertEqual(headers["content-type"], "application/json")
@@ -269,10 +269,10 @@ def test_default_endpoint_path_when_s2s_disabled(self):
269269

270270
self.assertIn(DEFAULT_ENDPOINT_URL, url)
271271
self.assertIn(
272-
"/observability/tenants/test-tenant-123/agents/test-agent-456/traces", url
272+
"/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces", url
273273
)
274274
self.assertNotIn(
275-
"/observabilityService/tenants/test-tenant-123/agents/test-agent-456/traces", url
275+
"/observabilityService/tenants/test-tenant-123/otlp/agents/test-agent-456/traces", url
276276
)
277277
self.assertEqual(headers["authorization"], "Bearer test_token_123")
278278
self.assertEqual(headers["content-type"], "application/json")
@@ -318,7 +318,7 @@ def test_export_logging(self, mock_logger):
318318
unittest.mock.call.debug("Found 1 identity groups with 2 total spans to export"),
319319
# Should log endpoint being used at DEBUG (default endpoint)
320320
unittest.mock.call.debug(
321-
f"Exporting 2 spans to endpoint: {DEFAULT_ENDPOINT_URL}/observability/tenants/test-tenant-123/agents/test-agent-456/traces?api-version=1 "
321+
f"Exporting 2 spans to endpoint: {DEFAULT_ENDPOINT_URL}/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces?api-version=1 "
322322
"(tenant: test-tenant-123, agent: test-agent-456)"
323323
),
324324
# Should log token resolution success at DEBUG
@@ -391,7 +391,7 @@ def test_export_uses_domain_override_when_env_var_set(self):
391391
args, kwargs = mock_post.call_args
392392
url, body, headers = args
393393

394-
expected_url = f"https://{override_domain}/observability/tenants/test-tenant-123/agents/test-agent-456/traces?api-version=1"
394+
expected_url = f"https://{override_domain}/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces?api-version=1"
395395
self.assertEqual(url, expected_url)
396396

397397
def test_export_uses_default_endpoint_when_no_override(self):
@@ -420,7 +420,7 @@ def test_export_uses_default_endpoint_when_no_override(self):
420420
args, kwargs = mock_post.call_args
421421
url, body, headers = args
422422

423-
expected_url = f"{DEFAULT_ENDPOINT_URL}/observability/tenants/test-tenant-123/agents/test-agent-456/traces?api-version=1"
423+
expected_url = f"{DEFAULT_ENDPOINT_URL}/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces?api-version=1"
424424
self.assertEqual(url, expected_url)
425425

426426
def test_export_ignores_empty_domain_override(self):
@@ -474,7 +474,7 @@ def test_export_uses_valid_url_override_with_https(self):
474474
args, kwargs = mock_post.call_args
475475
url, body, headers = args
476476

477-
expected_url = "https://override.example.com/observability/tenants/test-tenant-123/agents/test-agent-456/traces?api-version=1"
477+
expected_url = "https://override.example.com/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces?api-version=1"
478478
self.assertEqual(url, expected_url)
479479

480480
def test_export_uses_valid_url_override_with_http(self):
@@ -502,7 +502,7 @@ def test_export_uses_valid_url_override_with_http(self):
502502
args, kwargs = mock_post.call_args
503503
url, body, headers = args
504504

505-
expected_url = "http://localhost:8080/observability/tenants/test-tenant-123/agents/test-agent-456/traces?api-version=1"
505+
expected_url = "http://localhost:8080/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces?api-version=1"
506506
self.assertEqual(url, expected_url)
507507

508508
def test_export_uses_valid_domain_override_with_port(self):
@@ -530,7 +530,7 @@ def test_export_uses_valid_domain_override_with_port(self):
530530
args, kwargs = mock_post.call_args
531531
url, body, headers = args
532532

533-
expected_url = "https://example.com:8080/observability/tenants/test-tenant-123/agents/test-agent-456/traces?api-version=1"
533+
expected_url = "https://example.com:8080/observability/tenants/test-tenant-123/otlp/agents/test-agent-456/traces?api-version=1"
534534
self.assertEqual(url, expected_url)
535535

536536
def test_export_ignores_invalid_domain_with_protocol(self):

0 commit comments

Comments
 (0)