Skip to content

Observability

The starter has a vendor-neutral baseline and optional integrations. Logging, trace correlation, /metrics, and OpenTelemetry instrumentation work without an external account or telemetry service.

Optional exporters

The full user-service profile exports traces and metrics over OTLP only when OTEL_EXPORTER_OTLP_ENDPOINT is set to an http:// or https:// endpoint. An unset or invalid value disables export and does not prevent startup. Set OTEL_SERVICE_NAME to override the default service name.

OTEL_SERVICE_NAME=catalog-api
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

The checked-in Compose overlay starts an OTLP collector for local verification. Point its exporters at the APM, metrics, or tracing products selected by the application owner. The application remains coupled to OTLP, not to a vendor SDK.

Sentry is a replaceable IErrorReporter adapter. SENTRY_DSN enables the built-in adapter; without it, errors are reported through structured logging. Another error tracker or APM can implement IErrorReporter without changing controllers or problem-details responses.

Metrics dashboard

observability/grafana/aspnet-starter-overview.json is an importable Grafana starter dashboard for Prometheus-compatible scraping of /metrics. It is an optional artifact: no Grafana or Prometheus service is added to the default Compose stack. Import it only when those services are part of the deployment.

For environment operations, import observability/grafana/aspnet-starter-environment.json and configure the Prometheus scrape/relabeling to add environment (staging or production) and service labels. The dashboard separates traffic, error ratio, average latency, and readiness by environment. The companion alert rules are in observability/prometheus/aspnet-starter-alerts.yml.

The hourly synthetic monitoring workflow checks the public health, metrics, and compatibility endpoints. Configure its repository variables per environment and import the optional dependency alert rules from observability/prometheus/aspnet-starter-dependency-alerts.yml only for dependencies that are enabled.

Import observability/prometheus/aspnet-starter-slo-rules.yml for recording rules and multi-window availability burn alerts. See the SLO burn-rate guide for Prometheus variables, authentication, thresholds, and release annotation ingestion.

Use the incident response runbook for triage and rollback sequencing. Keep dashboard labels low-cardinality and never add user identifiers or secrets.

Do not add user IDs, email addresses, tokens, request bodies, or credentials to logs, trace attributes, or metric labels.