Skip to main content

Monitoring & Observability

Citadel services are instrumented with OpenTelemetry and expose standard Prometheus metrics to ensure high observability in production environments.

Health Checks

Every service exposes a standard health check endpoint that should be used by Kubernetes Liveness and Readiness probes.

  • Endpoint: /health
  • Method: GET
  • Response: 200 OK (JSON body details may vary)

Service Port Reference

ServicePortHealth URL
IAM1111http://iam:1111/health
User Directory2222http://user-directory-service:2222/health
Permissions3333http://permissions-service:3333/health
Policy3334http://policy-service:3334/health
Admin BFF3001http://admin-bff:3001/health
Notification8888http://notification-service:8888/health

Metrics

Services expose Prometheus-compatible metrics. In standard configuration:

  • Endpoint: /metrics
  • Port: 8080 (Standardized across Go services via go-commons)

Scraping Configuration

Configure your Prometheus scraper to target port 8080 on the service pods.

Distributed Tracing

Citadel uses OpenTelemetry (OTEL) for distributed tracing.

Configuration

Set the following environment variables on all services to enable tracing:

OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
OTEL_SERVICE_NAME=iam-service # Unique per service

Most services invoke tracing.InitTracer() from go-commons at startup, which automatically configures the exporter based on these variables.

Logging

Structured JSON logging is used by default in production (LOG_FORMAT=json). Logs are written to stdout and should be collected by a log aggregator (Fluentd, Promtail, etc.).