Implementing Monitoring and Metrics

1. Collecting Application Metrics

TypeDetail
CounterMonotonic; e.g. http_requests_total
GaugeUp/down; e.g. queue_depth
HistogramLatency buckets
SummaryQuantiles client-side
LibraryMicrometer (Java), OpenTelemetry Metrics

2. Implementing Health Endpoints

EndpointUse
/livezProcess alive (restart if fails)
/readyzReady to serve (remove from LB)
/startupzSlow init complete
SpecSpring Actuator /actuator/health

3. Using RED Metrics

MetricDetail
RateRequests/sec
ErrorsFailed req/sec
DurationLatency distribution
ForRequest-driven services

4. Using USE Metrics

MetricDetail
Utilization% busy time
SaturationQueue length / wait
ErrorsError events
ForResources (CPU, disk, net, pool)

5. Monitoring Business Metrics

ExampleWhy
Orders/minDetects revenue drop
Signups/hourMarketing impact
Cart abandonmentUX issue
$ per serviceValue delivery

6. Implementing Custom Metrics

Example: Micrometer (Java)

Counter ordersPlaced = Counter.builder("orders.placed")
    .tag("region", region)
    .register(meterRegistry);
ordersPlaced.increment();

Timer.Sample s = Timer.start(meterRegistry);
processOrder(...);
s.stop(meterRegistry.timer("orders.process.duration"));

7. Using Metric Labels

RuleDetail
Low cardinalityBounded set (method, status, route)
AvoiduserId, requestId as labels
Prom limitEach label combo = new series ($)

8. Setting Up Alerting Rules

Example: Prometheus alert rule

groups:
- name: orders
  rules:
  - alert: HighErrorRate
    expr: sum(rate(http_requests_total{job="orders",status=~"5.."}[5m]))
        / sum(rate(http_requests_total{job="orders"}[5m])) > 0.05
    for: 10m
    labels: { severity: page }
    annotations:
      summary: "orders error rate > 5% for 10m"
PracticeDetail
Symptom-basedAlert on user impact, not causes
For: windowAvoid flapping
Severitypage / ticket / log

9. Implementing SLO Monitoring

TermDetail
SLIIndicator (e.g. p99 latency)
SLOTarget (99.9% < 300ms)
Error budget1 − SLO; controls release pace
Burn rate alerts2% of budget in 1h = page

10. Creating Dashboards

LayerContent
OverviewRED + SLO status
Service detailPer-endpoint, per-version
ResourceUSE for CPU/mem/IO
ToolGrafana, Datadog, Kibana, Chronograf

11. Implementing Metric Aggregation

MethodDetail
PullPrometheus scrapes /metrics
PushStatsD / OTLP gateway
Recording rulesPre-aggregate expensive queries
FederationHierarchical Prom

12. Using Monitoring Tools

ToolNotes
Prometheus + GrafanaOSS standard
Mimir / Thanos / CortexLong-term + HA Prom
VictoriaMetricsFast TSDB
Datadog / New Relic / DynatraceManaged APM
CloudWatch / GCP OpsCloud-native