fix(otel): lazy-init metrics and fix Grafana dashboards #53
Reference in New Issue
Block a user
Delete Branch "fix/otel-metrics-and-monitoring-dashboards"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fix OTel custom metrics not reaching Prometheus: ESM static import
hoisting caused metrics.getMeter() to run before sdk.start(), getting
NoopMeterProvider. Changed to lazy-init pattern so instruments are
created on first use after the SDK configures the real MeterProvider.
Fix Grafana dashboards job labels: OTel adds service.namespace prefix
(job=farmafinder/farmafinder-backend), updated queries to use regex
match (job=~".*farmafinder-backend").
Fix histogram metric names: OTel appends unit suffix (_milliseconds)
to histogram names (e.g. http_request_duration_ms_milliseconds_bucket).
Verified: app_heartbeat_total, http_requests_total, db_query_duration_ms,
redis_cmd_duration_ms, and all other custom metrics now flow correctly
through OTLP -> Alloy -> Prometheus remote_write.