Observability & DORA metrics stack [PARENT] #43
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Type
Feature
Lineage
Standalone — consolidates existing observability/DORA sub-issues (#15, #16, #17, #19, #20, #21) into one tracked parent. #22 closed as duplicate of #16.
Repo
ldraney/landscaping-assistantUser Story
As the operator
I want Prometheus metrics, Grafana dashboards, alerting rules, and uptime monitoring
So that I have production visibility into request performance, error rates, and availability
Context
The app has structured logging (lograge JSON) and a local error subscriber already shipped (#39). The next layer is Prometheus metrics exposure, Grafana visualization, alerting, and blackbox uptime — the standard golden signals + DORA stack.
No
/metricsendpoint exists. No ServiceMonitor, PrometheusRule, or Grafana dashboard manifests exist. The monitoring namespace on the cluster is available but this app isn't registered with it.This is a parent tracking ticket. Individual sub-issues stay open for branch/PR linking. Progress is tracked via the checklist below.
File Targets
Files the agent should modify or create:
Gemfile— add prometheus-client gemconfig/routes.rb— mount /metrics endpointconfig/initializers/prometheus.rb— metrics registry setupk8s/service-monitor.yaml— ServiceMonitor CRDk8s/prometheus-rule.yaml— PrometheusRule CRDk8s/grafana-dashboard.json— golden signals dashboardFiles the agent should NOT touch:
config/initializers/error_subscriber.rb— already doneproduction.rb— already doneAcceptance Criteria
Phase 1 — Metrics foundation
/metricsendpoint with request rate, error rate, duration histogramsPhase 2 — Visualization & alerting
Phase 3 — Uptime & verification
Test Expectations
/metricsendpoint returns Prometheus text format with expected metric nameskubectl get servicemonitor -n landscaping-assistantshows the monitorcurl localhost:3000/metricsreturns prometheus exposition formatConstraints
prometheus-clientgem (not prometheus_exporter — we want in-process, not a separate collector)Checklist
Related
project-landscaping-assistant— project this affectsldraney referenced this issue2026-06-02 12:25:25 +00:00