Rokad
Gesamte Dokumentation
dhal-Dokumentation

Observability und Lebenszyklus

Konfigurieren Sie Redaction, OpenTelemetry, signierte Webhooks, Zustand und Shutdown.

Repository ansehen
dhal-Dokumentation
Seite 7 von 9

Security-Events können Routen, Identitäten, IPs und Regelmetadaten enthalten. Behandeln Sie sie als sensible Daten.

Redaction

json
{
  "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

json
{
  "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

bash
npm install @opentelemetry/api
json
{
  "observability": {
    "otel": {
      "enabled": true,
      "serviceName": "orders-api",
      "emitAllowedRequests": false
    }
  }
}

Dhal verwendet den OpenTelemetry Provider der Host-Anwendung.

Signierte Webhooks

json
{
  "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

ts
const snapshot = protection.getRuntimeSnapshot();

Überwachen Sie blocked, wouldBlock, internalErrors, overBudget, Listener-Fehler sowie ausstehende, fehlgeschlagene oder verworfene Zustellungen.

ts
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.