fix: address Code Reviewer findings for Datadog/Sentry integration FRE-4806
P1: Load dd-trace before other modules via datadog-init.ts entry point P1: Batch all CloudWatch metrics into single PutMetricDataCommand per request P2: Deduplicate warning logs with else-if for high latency vs error P3: Add response.ok check to Datadog log forwarding fetch P3: Update getSentryHub() to use getCurrentScope() for Sentry SDK 8.x Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -62,6 +62,35 @@ export async function emitMetric(
|
||||
}
|
||||
}
|
||||
|
||||
export async function emitBatchMetrics(metrics: {
|
||||
serviceName: string;
|
||||
data: { metricName: string; value: number; unit: StandardUnit; dimensions?: Record<string, string> }[];
|
||||
}) {
|
||||
const cw = getClient();
|
||||
if (!cw) return;
|
||||
|
||||
const metricData = metrics.data.map((m) => ({
|
||||
MetricName: m.metricName,
|
||||
Dimensions: [
|
||||
{ Name: 'service', Value: metrics.serviceName },
|
||||
...(m.dimensions ? Object.entries(m.dimensions).map(([n, v]) => ({ Name: n, Value: v })) : []),
|
||||
],
|
||||
Value: m.value,
|
||||
Unit: m.unit,
|
||||
}));
|
||||
|
||||
const command = new PutMetricDataCommand({
|
||||
Namespace: NAMESPACE,
|
||||
MetricData: metricData,
|
||||
});
|
||||
|
||||
try {
|
||||
await cw.send(command);
|
||||
} catch (err) {
|
||||
console.warn('[CloudWatch] Batch metric emit failed:', (err as Error).message);
|
||||
}
|
||||
}
|
||||
|
||||
export async function emitLatency(
|
||||
serviceName: string,
|
||||
latencyMs: number,
|
||||
|
||||
Reference in New Issue
Block a user