Security-Events können Routen, Identitäten, IPs und Regelmetadaten enthalten. Behandeln Sie sie als sensible Daten.
Redaction
{
"observability": {
"redaction": {
"enabled": true,
"ip": "mask",
"identity": "hash",
"userAgent": "full"
}
}
}Für IP und Identität stehen none, mask, hash und omit bereit. User Agents können full oder omit sein.
Korrelation, Logs und Events
{
"observability": {
"correlation": {
"headers": ["x-request-id", "x-correlation-id", "traceparent"]
},
"logs": { "enabled": true, "format": "json" },
"events": { "enabled": true }
}
}Fehler in Anwendungs-Listenern werden von Entscheidungen isoliert und im Runtime Snapshot gezählt.
OpenTelemetry
npm install @opentelemetry/api{
"observability": {
"otel": {
"enabled": true,
"serviceName": "orders-api",
"emitAllowedRequests": false
}
}
}Dhal verwendet den OpenTelemetry Provider der Host-Anwendung.
Signierte Webhooks
{
"observability": {
"webhooks": {
"enabled": true,
"urls": ["https://security.example.com/dhal/events"],
"timeoutMs": 750,
"emitAllowedRequests": false,
"signing": {
"enabled": true,
"secretEnv": "DHAL_WEBHOOK_SECRET",
"signatureHeader": "x-dhal-signature",
"timestampHeader": "x-dhal-timestamp",
"idHeader": "x-dhal-event-id"
}
}
}
}Empfänger müssen Timestamp, Event-ID und HMAC-Signatur prüfen, Replays ablehnen und erst nach Annahme 2xx zurückgeben. Die Queue ist begrenzt; Nicht-2xx gilt als Fehler.
Zustand und Shutdown
const snapshot = protection.getRuntimeSnapshot();Überwachen Sie blocked, wouldBlock, internalErrors, overBudget, Listener-Fehler sowie ausstehende, fehlgeschlagene oder verworfene Zustellungen.
async function shutdown() {
await protection.close(5_000);
process.exit(0);
}flush() leert Telemetrie ohne Schließen. close() stoppt neue Inspektionen, leert Telemetrie und entfernt Listener.