Skip to content

Commit 4091dbe

Browse files
committed
chore(telemetry): remove skipped and remove some logs from telemetry
1 parent 83a032e commit 4091dbe

File tree

6 files changed

+56
-5
lines changed

6 files changed

+56
-5
lines changed

ddtrace/internal/telemetry/logging.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import logging
22
import os
3+
import re
34

45

56
class DDTelemetryErrorHandler(logging.Handler):
@@ -15,4 +16,6 @@ def emit(self, record: logging.LogRecord) -> None:
1516
"""
1617
if record.levelno >= logging.ERROR:
1718
if getattr(record, "send_to_telemetry", None) in (None, True):
18-
self.telemetry_writer.add_error_log(record.msg, record.exc_info)
19+
# we do not want to send the [x skipped] part to telemetry
20+
msg = re.sub(r"\s*\[\d+ skipped\]$", "", record.msg)
21+
self.telemetry_writer.add_error_log(msg, record.exc_info)

ddtrace/internal/writer/writer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ def _flush_single_payload(
448448
self._intake_endpoint(client),
449449
self.RETRY_ATTEMPTS,
450450
exc_info=True,
451+
extra={"send_to_telemetry": False},
451452
)
452453
finally:
453454
self._metrics_dist("http.sent.bytes", len(encoded))

ddtrace/llmobs/_log_writer.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,17 @@ def periodic(self):
104104
self._url,
105105
resp.status,
106106
resp.read(),
107+
extra={"send_to_telemetry": False},
107108
)
108109
else:
109110
logger.debug("sent %d logs to %r", num_logs, self._url)
110111
except Exception:
111-
logger.error("failed to send %d logs to %r", num_logs, self._intake, exc_info=True)
112+
logger.error(
113+
"failed to send %d logs to %r",
114+
num_logs,
115+
self._intake,
116+
exc_info=True,
117+
extra={"send_to_telemetry": False},
118+
)
112119
finally:
113120
conn.close()

ddtrace/llmobs/_writer.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,12 @@ def periodic(self) -> None:
246246
except Exception:
247247
telemetry.record_dropped_payload(len(events), event_type=self.EVENT_TYPE, error="connection_error")
248248
logger.error(
249-
"failed to send %d LLMObs %s events to %s", len(events), self.EVENT_TYPE, self._intake, exc_info=True
249+
"failed to send %d LLMObs %s events to %s",
250+
len(events),
251+
self.EVENT_TYPE,
252+
self._intake,
253+
exc_info=True,
254+
extra={"send_to_telemetry": False},
250255
)
251256

252257
def _send_payload(self, payload: bytes, num_events: int):
@@ -262,14 +267,20 @@ def _send_payload(self, payload: bytes, num_events: int):
262267
self._url,
263268
resp.status,
264269
resp.read(),
270+
extra={"send_to_telemetry": False},
265271
)
266272
telemetry.record_dropped_payload(num_events, event_type=self.EVENT_TYPE, error="http_error")
267273
else:
268274
logger.debug("sent %d LLMObs %s events to %s", num_events, self.EVENT_TYPE, self._url)
269275
return Response.from_http_response(resp)
270276
except Exception:
271277
logger.error(
272-
"failed to send %d LLMObs %s events to %s", num_events, self.EVENT_TYPE, self._intake, exc_info=True
278+
"failed to send %d LLMObs %s events to %s",
279+
num_events,
280+
self.EVENT_TYPE,
281+
self._intake,
282+
exc_info=True,
283+
extra={"send_to_telemetry": False},
273284
)
274285
raise
275286
finally:

ddtrace/propagation/http.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ def _extract(headers):
826826
return None
827827
trace_id, span_id, trace_flag = _TraceContext._get_traceparent_values(tp)
828828
except (ValueError, AssertionError):
829-
log.exception("received invalid w3c traceparent: %s ", tp)
829+
log.exception("received invalid w3c traceparent: %s ", tp, extra={"send_to_telemetry": False})
830830
return None
831831

832832
meta = {W3C_TRACEPARENT_KEY: tp} # type: _MetaDictType

tests/telemetry/test_writer.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,6 +1102,35 @@ def test_add_integration_error_log_with_log_collection_disabled(mock_time, telem
11021102
telemetry_config.LOG_COLLECTION_ENABLED = original_value
11031103

11041104

1105+
def test_error_log_handler_strips_skipped_suffix(mock_time, telemetry_writer, test_agent_session):
1106+
"""Test that DDTelemetryErrorHandler strips [x skipped] suffix from error messages"""
1107+
import logging
1108+
1109+
ddtrace_logger = logging.getLogger("ddtrace")
1110+
1111+
ddtrace_logger.error("Error message [123 skipped]")
1112+
telemetry_writer.periodic(force_flush=True)
1113+
1114+
log_events = test_agent_session.get_events("logs")
1115+
assert len(log_events) == 1
1116+
1117+
logs = log_events[0]["payload"]["logs"]
1118+
assert len(logs) == 1
1119+
assert logs[0]["message"] == "Error message"
1120+
1121+
test_agent_session.clear()
1122+
1123+
ddtrace_logger.error("Normal error message [something]")
1124+
telemetry_writer.periodic(force_flush=True)
1125+
1126+
log_events = test_agent_session.get_events("logs")
1127+
assert len(log_events) == 1
1128+
1129+
logs = log_events[0]["payload"]["logs"]
1130+
assert len(logs) == 1
1131+
assert logs[0]["message"] == "Normal error message [something]"
1132+
1133+
11051134
@pytest.mark.parametrize(
11061135
"filename, result",
11071136
[

0 commit comments

Comments
 (0)