Skip to main content

Operational monitoring, export, access logging, SIEM

Part of the Universal Audit Log Specification. Operational monitoring (§14), export and reporting flows (§15), the access-logging extension that records "who read what" (§16), and the SIEM integration via the audit.entry.created outbox event (§17).

14. Operational Monitoring

14.1 Required Metrics

The audit subsystem SHALL expose the following metrics:

MetricTypeAlert Threshold
Audit write latency (p50, p95, p99)Histogramp99 > 10ms
Table size (heap + TOAST + indexes)Gauge, dailyConfigurable per environment
Rows per minute by moduleCounterAnomaly detection (>3 sigma deviation)
Immutability trigger rejection countCounterAny non-zero value (immediate alert)
Chain integrity statusGauge (per tenant)Any failure (immediate alert)
VACUUM age / transaction ID wraparound distanceGauge< 50M transactions remaining
Partition count and next auto-create dateGauge< 2 future partitions remaining

14.2 SLOs

SLOTarget
Audit write latency p99< 10ms
Audit availability (writes succeed)99.99%
Chain integrity verification100% of tenants verified nightly

Metrics SHALL be exposed via the platform metrics interface (Prometheus-compatible) with Grafana dashboard templates.


15. Export and Reporting

15.1 Streaming Export

A streaming export endpoint SHALL be provided for compliance auditors, not subject to the 200-row interactive API cap. Formats: CSV, JSON Lines. Filters: date range, module, actor, resource type, organisation, outcome. Requires audit:export permission. Uses chunked transfer encoding. Rate-limited to one concurrent export per tenant.

15.2 Export Auditing

Export events are themselves audited with action: 'EXPORT', resourceType: 'audit.audit_entries', and context containing the format, filters, and row count.


16. Access Logging Extension

Mutation audit and read/access audit SHALL be separated.

16.1 Phase 1

Phase 1 covers state-changing operations only plus audit-access logging (Section 13.3).

16.2 Phase 2

Phase 2 MAY add a separate access-log path for:

  • document access
  • downloads
  • print events
  • classified record views
  • external share access

If implemented, access logs SHOULD use a separate table:

  • audit.access_log_entries

This follows the useful Open Mercato split between action logs and access logs, but without adopting their full application structure.


17. SIEM Integration

17.1 Purpose

Security-classified audit entries SHALL be forwardable to an external Security Information and Event Management (SIEM) system for centralised security monitoring.

17.2 Integration Path

Forward via the existing outbox mechanism: auditCritical() already writes to the transactional outbox. A SIEM adapter consumes outbox events and forwards them in CEF or structured JSON as a background job.

17.3 Configuration

SIEM forwarding is configurable per-tenant (endpoint URL, format, authentication, classification filter). Some tenants may require real-time forwarding; others may not use SIEM at all.