Skip to content

Commit 58340e3

Browse files
committed
use OTEL Resource
1 parent 6217cf4 commit 58340e3

File tree

1 file changed

+29
-14
lines changed
  • livekit-agents/livekit/agents/telemetry

1 file changed

+29
-14
lines changed

livekit-agents/livekit/agents/telemetry/traces.py

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
LogRecordProcessor,
2929
LogData,
3030
)
31+
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
3132
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
3233
from opentelemetry.sdk.trace import SpanProcessor, TracerProvider, Span
3334
from opentelemetry.sdk.trace.export import BatchSpanProcessor
@@ -39,6 +40,7 @@
3940
from opentelemetry.exporter.otlp.proto.http import Compression
4041

4142
from ..utils import misc
43+
from ..log import logger
4244

4345
if TYPE_CHECKING:
4446
from ..voice.report import SessionReport
@@ -123,7 +125,15 @@ def _setup_cloud_tracer(
123125
headers = (("Authorization", f"Bearer {access_token.to_jwt()}"),)
124126
metadata = {"room_id": room_id, "job_id": job_id}
125127

126-
tracer_provider = TracerProvider()
128+
resource = Resource.create(
129+
{
130+
SERVICE_NAME: "livekit-agents",
131+
"room_id": room_id,
132+
"job_id": job_id,
133+
}
134+
)
135+
136+
tracer_provider = TracerProvider(resource=resource)
127137
set_tracer_provider(tracer_provider)
128138

129139
span_exporter = OTLPSpanExporter(
@@ -132,7 +142,7 @@ def _setup_cloud_tracer(
132142
compression=otlp_compression,
133143
)
134144

135-
tracer_provider.add_span_processor(_MetadataSpanProcessor(metadata))
145+
# tracer_provider.add_span_processor(_MetadataSpanProcessor(metadata))
136146
tracer_provider.add_span_processor(BatchSpanProcessor(span_exporter))
137147

138148
logger_provider = LoggerProvider()
@@ -143,7 +153,7 @@ def _setup_cloud_tracer(
143153
headers=headers,
144154
compression=otlp_compression,
145155
)
146-
logger_provider.add_log_record_processor(_MetadataLogProcessor(metadata))
156+
# logger_provider.add_log_record_processor(_MetadataLogProcessor(metadata))
147157
logger_provider.add_log_record_processor(BatchLogRecordProcessor(log_exporter))
148158
handler = LoggingHandler(level=logging.NOTSET, logger_provider=logger_provider)
149159

@@ -229,6 +239,7 @@ def _to_proto_chat_ctx(chat_ctx: ChatContext) -> agent_pb.agent_session.ChatCont
229239

230240
return ctx_pb
231241

242+
232243
async def _upload_session_report(
233244
*,
234245
room_id: str,
@@ -252,29 +263,31 @@ async def _upload_session_report(
252263
chat_history_pb = _to_proto_chat_ctx(report.chat_history)
253264
chat_history_bytes = chat_history_pb.SerializeToString() if chat_history_pb is not None else b""
254265

255-
mp = aiohttp.MultipartWriter('form-data')
266+
mp = aiohttp.MultipartWriter("form-data")
256267

257268
part = mp.append(header_bytes)
258-
part.set_content_disposition('form-data', name='header', filename='header.binpb')
259-
part.headers['Content-Type'] = 'application/protobuf'
260-
part.headers['Content-Length'] = str(len(header_bytes))
269+
part.set_content_disposition("form-data", name="header", filename="header.binpb")
270+
part.headers["Content-Type"] = "application/protobuf"
271+
part.headers["Content-Length"] = str(len(header_bytes))
261272

262273
if chat_history_bytes:
263274
part = mp.append(chat_history_bytes)
264-
part.set_content_disposition('form-data', name='chat_history', filename='chat_history.binpb')
265-
part.headers['Content-Type'] = 'application/protobuf'
266-
part.headers['Content-Length'] = str(len(chat_history_bytes))
275+
part.set_content_disposition(
276+
"form-data", name="chat_history", filename="chat_history.binpb"
277+
)
278+
part.headers["Content-Type"] = "application/protobuf"
279+
part.headers["Content-Length"] = str(len(chat_history_bytes))
267280

268281
if report.audio_recording_path:
269282
try:
270-
async with aiofiles.open(report.audio_recording_path, 'rb') as f:
283+
async with aiofiles.open(report.audio_recording_path, "rb") as f:
271284
audio_bytes = await f.read()
272285
except Exception:
273286
audio_bytes = b""
274287
part = mp.append(audio_bytes)
275-
part.set_content_disposition('form-data', name='audio', filename='recording.ogg')
276-
part.headers['Content-Type'] = 'audio/ogg'
277-
part.headers['Content-Length'] = str(len(audio_bytes))
288+
part.set_content_disposition("form-data", name="audio", filename="recording.ogg")
289+
part.headers["Content-Type"] = "audio/ogg"
290+
part.headers["Content-Length"] = str(len(audio_bytes))
278291

279292
url = f"https://{cloud_hostname}/observability/recordings/v0"
280293
headers = {
@@ -284,3 +297,5 @@ async def _upload_session_report(
284297

285298
async with http_session.post(url, data=mp, headers=headers) as resp:
286299
resp.raise_for_status()
300+
301+
logger.info("uploaded")

0 commit comments

Comments
 (0)