Files
git.stella-ops.org/docs/doctor/articles/observability/observability-metrics.md
2026-03-31 23:26:24 +03:00

1.7 KiB

checkId, plugin, severity, tags
checkId plugin severity tags
check.observability.metrics stellaops.doctor.observability warn
observability
metrics
prometheus

Metrics Collection

What It Checks

Inspects Metrics:*, Prometheus:*, and OpenTelemetry:Metrics:* settings. When a metrics port is configured and an IHttpClientFactory is available, the check probes http://localhost:<port><path>.

The check returns info when metrics are disabled or absent, and warns when the configured endpoint cannot be reached.

Why It Matters

Metrics are the primary input for alerting, SLO tracking, and capacity planning. Missing or unreachable endpoints remove the fastest signal operators have.

Common Causes

  • Metrics were never enabled in the deployment configuration
  • The metrics path or port does not match the listener exposed by the service
  • A sidecar or reverse proxy blocks local probing

How to Fix

Docker Compose

services:
  doctor-web:
    environment:
      Metrics__Enabled: "true"
      Metrics__Path: /metrics
      Metrics__Port: 8080

Probe the endpoint from inside the container:

docker compose -f devops/compose/docker-compose.stella-ops.yml exec doctor-web curl -fsS http://localhost:8080/metrics

Bare Metal / systemd

Bind the metrics port explicitly if the service does not share the main HTTP listener.

Kubernetes / Helm

Align the ServiceMonitor or Prometheus scrape config with the same path and port the app exposes.

Verification

stella doctor --check check.observability.metrics
  • check.observability.otel - OpenTelemetry metrics often share the same collector path
  • check.observability.alerting - metrics are usually the source for alert rules