Skip to content

Commit 7d1d4de

Browse files
authored
fix(aws): Using JSON dump against dict-only payload (cloudtrail) to have consistent regex filtering (#1029)
Signed-off-by: Vincent Boutour <vincent.boutour@datadoghq.com>
1 parent 7260eb4 commit 7d1d4de

1 file changed

Lines changed: 21 additions & 9 deletions

File tree

aws/logs_monitoring/forwarder.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,27 @@ def _forward_logs(self, logs, key=None):
9292
log = add_retry_tag(log)
9393

9494
evaluated_log = log
95+
to_forward = None
9596

9697
# apply scrubbing rules to inner log message
97-
if isinstance(log, dict) and log.get("message"):
98-
try:
99-
log["message"] = scrubber.scrub(log["message"])
100-
evaluated_log = log["message"]
101-
except Exception as e:
102-
logger.error(
103-
f"Exception while scrubbing log message {log['message']}: {e}"
104-
)
98+
if isinstance(log, dict):
99+
if log.get("message"):
100+
try:
101+
log["message"] = scrubber.scrub(log["message"])
102+
evaluated_log = log["message"]
103+
except Exception as e:
104+
logger.error(
105+
f"Exception while scrubbing log message {log['message']}: {e}"
106+
)
107+
else:
108+
to_forward = dump_event(log)
109+
evaluated_log = to_forward
105110

106111
if matcher.match(evaluated_log):
107-
logs_to_forward.append(json.dumps(log, ensure_ascii=False))
112+
if to_forward is None:
113+
logs_to_forward.append(dump_event(log))
114+
else:
115+
logs_to_forward.append(to_forward)
108116

109117
batcher = DatadogBatcher(512 * 1000, 4 * 1000 * 1000, 400)
110118
cli = DatadogHTTPClient(
@@ -186,3 +194,7 @@ def _forward_traces(self, traces, key=None):
186194
if key:
187195
self.storage.delete_data(key)
188196
send_event_metric("traces_forwarded", len(traces))
197+
198+
199+
def dump_event(event):
200+
return json.dumps(event, ensure_ascii=False)

0 commit comments

Comments
 (0)