Skip to content

Commit b192589

Browse files
committed
add eval support in traceloop
verify commit
1 parent 1548358 commit b192589

File tree

7 files changed

+285
-280
lines changed

7 files changed

+285
-280
lines changed
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
apiVersion: batch/v1
2+
kind: CronJob
3+
metadata:
4+
name: travel-planner-tl
5+
namespace: o11y-4-ai-admehra
6+
labels:
7+
app: travel-planner-tl
8+
component: telemetry
9+
annotations:
10+
description: "Multi-agent travel planner with Traceloop translator and GenAI evaluations (Deepeval telemetry disabled)"
11+
git-commit: "30c512d"
12+
spec:
13+
# Run every 30 minutes from 8 AM to 5 PM PST on weekdays (Monday-Friday)
14+
schedule: "*/30 8-17 * * 1-5"
15+
timeZone: "America/Los_Angeles"
16+
suspend: false
17+
18+
# Keep last 3 successful and 1 failed job for debugging
19+
successfulJobsHistoryLimit: 3
20+
failedJobsHistoryLimit: 1
21+
22+
jobTemplate:
23+
metadata:
24+
labels:
25+
app: travel-planner-tl
26+
component: telemetry
27+
spec:
28+
template:
29+
metadata:
30+
labels:
31+
app: travel-planner-tl
32+
component: telemetry
33+
spec:
34+
restartPolicy: OnFailure
35+
36+
containers:
37+
- name: travel-planner-traceloop
38+
# Multi-platform image (amd64, arm64) with git commit hash tag
39+
image: admehra621/travel-planner-tl:30c512d
40+
imagePullPolicy: Always
41+
42+
env:
43+
# === GenAI Semantic Conventions (REQUIRED) ===
44+
- name: OTEL_SEMCONV_STABILITY_OPT_IN
45+
value: "gen_ai_latest_experimental"
46+
47+
# === OpenTelemetry Resource Attributes ===
48+
- name: OTEL_RESOURCE_ATTRIBUTES
49+
value: "deployment.environment=o11y-inframon-ai,git.commit.id=30c512d"
50+
51+
# === Service name for telemetry ===
52+
- name: OTEL_SERVICE_NAME
53+
value: "travel-planner-tl"
54+
55+
# === OpenAI Configuration ===
56+
- name: OPENAI_API_KEY
57+
valueFrom:
58+
secretKeyRef:
59+
name: openai-credentials
60+
key: api-key
61+
62+
- name: OPENAI_MODEL
63+
value: "gpt-4o-mini"
64+
65+
# === Deepeval Telemetry Opt-Out ===
66+
- name: DEEPEVAL_TELEMETRY_OPT_OUT
67+
value: "1"
68+
69+
# === GenAI Content Capture ===
70+
- name: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT
71+
value: "true"
72+
73+
- name: OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT_MODE
74+
value: "SPAN_AND_EVENT"
75+
76+
# === GenAI Emitters Configuration ===
77+
- name: OTEL_INSTRUMENTATION_GENAI_EMITTERS
78+
value: "span_metric_event,splunk"
79+
80+
- name: OTEL_INSTRUMENTATION_GENAI_EMITTERS_EVALUATION
81+
value: "replace-category:SplunkEvaluationResults"
82+
83+
# === Evaluation Settings ===
84+
# All 5 default evaluations enabled (bias, toxicity, relevance, hallucination, sentiment)
85+
- name: OTEL_INSTRUMENTATION_GENAI_EVALS_RESULTS_AGGREGATION
86+
value: "true"
87+
88+
# === GenAI Debug Flags (disabled for production) ===
89+
# - name: OTEL_GENAI_EVAL_DEBUG_SKIPS
90+
# value: "true"
91+
# - name: OTEL_GENAI_EVAL_DEBUG_EACH
92+
# value: "true"
93+
# - name: OTEL_INSTRUMENTATION_GENAI_DEBUG
94+
# value: "true"
95+
96+
# === OpenTelemetry Logs Exporter ===
97+
- name: OTEL_LOGS_EXPORTER
98+
value: "otlp"
99+
100+
# === Get the host IP for Splunk OTEL agent ===
101+
- name: SPLUNK_OTEL_AGENT
102+
valueFrom:
103+
fieldRef:
104+
fieldPath: status.hostIP
105+
106+
# === OpenTelemetry OTLP endpoint using Splunk agent ===
107+
- name: OTEL_EXPORTER_OTLP_ENDPOINT
108+
value: "http://$(SPLUNK_OTEL_AGENT):4317"
109+
110+
# === OTLP Protocol (grpc) ===
111+
- name: OTEL_EXPORTER_OTLP_PROTOCOL
112+
value: "grpc"
113+
114+
# === Exclude health check URLs ===
115+
- name: OTEL_PYTHON_EXCLUDED_URLS
116+
value: "^(https?://)?[^/]+(/)?$"
117+
118+
# === Enable Python logging auto instrumentation ===
119+
- name: OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED
120+
value: "true"
121+
122+
# === Enable log correlation ===
123+
- name: OTEL_PYTHON_LOG_CORRELATION
124+
value: "true"
125+
126+
# === Enable LangChain content capture ===
127+
- name: OTEL_INSTRUMENTATION_LANGCHAIN_CAPTURE_MESSAGE_CONTENT
128+
value: "true"
129+
130+
# === Enable Splunk profiler ===
131+
- name: SPLUNK_PROFILER_ENABLED
132+
value: "true"
133+
134+
# === Unbuffered Python output ===
135+
- name: PYTHONUNBUFFERED
136+
value: "1"
137+
138+
# === GenAI evaluation sampling rate ===
139+
- name: OTEL_GENAI_EVALUATION_SAMPLING_RATE
140+
value: "1"
141+
142+
# === Resource limits ===
143+
resources:
144+
requests:
145+
memory: "512Mi"
146+
cpu: "500m"
147+
limits:
148+
memory: "1Gi"
149+
cpu: "1000m"
150+

instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/cronjob-traceloop.yaml

Lines changed: 0 additions & 149 deletions
This file was deleted.

instrumentation-genai/opentelemetry-instrumentation-langchain/examples/multi_agent_travel_planner/main.py

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -876,33 +876,10 @@ def main() -> None:
876876
)
877877
root_span.set_attribute("http.response.status_code", 200)
878878

879-
# Flush all telemetry providers before exit
880-
print("\n🔄 Flushing telemetry data...")
881-
882-
# Flush traces
883879
provider = trace.get_tracer_provider()
884880
if hasattr(provider, "force_flush"):
885-
print(" → Flushing traces...")
886-
provider.force_flush(timeout_millis=30000) # 30 seconds
887-
888-
# Flush logs
889-
log_provider = _logs.get_logger_provider()
890-
if hasattr(log_provider, "force_flush"):
891-
print(" → Flushing logs...")
892-
log_provider.force_flush(timeout_millis=30000) # 30 seconds
893-
894-
# Flush metrics
895-
meter_provider = metrics.get_meter_provider()
896-
if hasattr(meter_provider, "force_flush"):
897-
print(" → Flushing metrics...")
898-
meter_provider.force_flush(timeout_millis=30000) # 30 seconds
899-
900-
# Give batch processors time to complete final export operations
901-
print(" → Waiting for final batch export...")
902-
time.sleep(5)
903-
904-
print("✅ Telemetry flush complete!\n")
905-
881+
provider.force_flush()
882+
time.sleep(300)
906883
if hasattr(provider, "shutdown"):
907884
provider.shutdown()
908885

0 commit comments

Comments
 (0)