feat: expand test coverage and configure comprehensive alerting

- Add unit tests for all core services (identity, intake, finance, dataroom)
- Create integration test framework with shared setup utilities
- Add E2E test suite for complete user workflows
- Add test utilities package (server factory)
- Configure Prometheus alert rules (service health, infrastructure, database, Azure)
- Add alert rules ConfigMap for Kubernetes
- Update Prometheus deployment with alert rules
- Fix tsconfig.json to include test files
- Add tests/tsconfig.json for integration/E2E tests
- Fix server-factory.ts linting issues
This commit is contained in:
defiQUG
2025-11-13 10:04:32 -08:00
parent dea584aa2c
commit 3d43155312
20 changed files with 822 additions and 35 deletions

View File

@@ -1,9 +1,12 @@
# Prometheus Alert Rules
# Defines alerting conditions for The Order services
groups:
- name: service_health
interval: 30s
rules:
- alert: ServiceDown
expr: up{job=~".*-service"} == 0
expr: up{job=~"identity-service|intake-service|finance-service|dataroom-service|legal-documents-service"} == 0
for: 5m
labels:
severity: critical
@@ -17,7 +20,7 @@ groups:
labels:
severity: warning
annotations:
summary: "High error rate in {{ $labels.job }}"
summary: "High error rate for {{ $labels.job }}"
description: "Error rate is {{ $value }} errors per second"
- alert: HighResponseTime
@@ -26,52 +29,52 @@ groups:
labels:
severity: warning
annotations:
summary: "High response time in {{ $labels.job }}"
summary: "High response time for {{ $labels.job }}"
description: "95th percentile response time is {{ $value }} seconds"
- name: resource_usage
- name: infrastructure
interval: 30s
rules:
- alert: HighCPUUsage
expr: rate(container_cpu_usage_seconds_total[5m]) > 0.8
expr: rate(process_cpu_user_seconds_total[5m]) > 0.8
for: 10m
labels:
severity: warning
annotations:
summary: "High CPU usage in {{ $labels.pod }}"
description: "CPU usage is {{ $value }}"
summary: "High CPU usage for {{ $labels.job }}"
description: "CPU usage is {{ $value }}%"
- alert: HighMemoryUsage
expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.9
expr: (process_resident_memory_bytes / process_virtual_memory_bytes) > 0.9
for: 10m
labels:
severity: warning
annotations:
summary: "High memory usage in {{ $labels.pod }}"
summary: "High memory usage for {{ $labels.job }}"
description: "Memory usage is {{ $value }}%"
- alert: PodCrashLooping
expr: rate(kube_pod_container_status_restarts_total[15m]) > 0
- alert: DiskSpaceLow
expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) < 0.1
for: 5m
labels:
severity: critical
annotations:
summary: "Pod {{ $labels.pod }} is crash looping"
description: "Pod has restarted {{ $value }} times in the last 15 minutes"
summary: "Low disk space on {{ $labels.instance }}"
description: "Disk space is {{ $value }}% available"
- name: database
interval: 30s
rules:
- alert: DatabaseConnectionHigh
expr: pg_stat_database_numbackends / pg_stat_database_max_connections > 0.8
- alert: DatabaseConnectionPoolExhausted
expr: pg_stat_database_numbackends / pg_settings_max_connections > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High database connection usage"
description: "{{ $value }}% of max connections in use"
summary: "Database connection pool nearly exhausted"
description: "{{ $value }}% of connections in use"
- alert: DatabaseSlowQueries
- alert: SlowQueries
expr: rate(pg_stat_statements_mean_exec_time[5m]) > 1
for: 10m
labels:
@@ -80,24 +83,23 @@ groups:
summary: "Slow database queries detected"
description: "Average query time is {{ $value }} seconds"
- name: entra_verifiedid
- name: azure
interval: 30s
rules:
- alert: EntraAPIFailure
expr: rate(entra_api_errors_total[5m]) > 0.1
for: 5m
- alert: EntraAPIRateLimit
expr: rate(entra_api_requests_total{status="429"}[5m]) > 0
for: 1m
labels:
severity: critical
severity: warning
annotations:
summary: "High Entra VerifiedID API error rate"
description: "Error rate is {{ $value }} errors per second"
summary: "Entra API rate limit hit"
description: "Rate limit errors detected for Entra VerifiedID API"
- alert: EntraRateLimitApproaching
expr: entra_rate_limit_remaining / entra_rate_limit_total < 0.1
- alert: AzureStorageErrors
expr: rate(azure_storage_errors_total[5m]) > 0.01
for: 5m
labels:
severity: warning
annotations:
summary: "Entra VerifiedID rate limit approaching"
description: "Only {{ $value }}% of rate limit remaining"
summary: "Azure Storage errors detected"
description: "Storage error rate is {{ $value }} errors per second"

View File

@@ -138,5 +138,5 @@ alerting:
- alertmanager:9093
rule_files:
- '/etc/prometheus/alerts/*.yml'
- '/etc/prometheus/alert-rules.yml'