Back to portfolio

Case Study

Data Platform Observability

A monitoring and alerting solution for distributed data-processing workloads using Prometheus-compatible metrics and Grafana.

Overview

An observability layer purpose-built for streaming data workloads — collecting Flink, Kafka, and Kubernetes metrics and turning them into dashboards and alerts that surface problems before data goes stale.

Problem

Generic infrastructure monitoring doesn't answer the questions that matter for a streaming pipeline: is consumer lag growing, are checkpoints succeeding, is a job silently failing to make progress. The goal was a monitoring setup tailored to those pipeline-specific failure modes.

Constraints

  • Must monitor both application-level metrics (job health, consumer lag) and infrastructure-level metrics (CPU, memory, pod restarts).
  • Alerting must be routed by severity so non-critical warnings don't page anyone at 3 a.m.
  • Metrics collection must scale with the number of jobs without manual dashboard duplication.

My Responsibilities

  • Defined the metrics-collection pipeline using Grafana Alloy and Prometheus-compatible remote write into Mimir.
  • Built Grafana dashboards for job health, resource usage, and pipeline throughput.
  • Configured alert rules and routing for checkpoint failures, consumer lag, and resource exhaustion.

Architecture

Grafana Alloy agents scrape metrics from Flink job managers, Kafka exporters, and Kubernetes nodes/pods, then remote-write them into Mimir for long-term, horizontally scalable storage. Grafana queries Mimir to render dashboards, and alert rules evaluate against the same metric streams to trigger notifications when thresholds are crossed.

Technical Approach

  • Standardized on Prometheus-compatible metric formats so the same dashboards work across Flink, Kafka exporter, and Kubernetes metrics.
  • Used Grafana Alloy as the collection agent to centralize scrape configuration instead of managing per-service Prometheus instances.
  • Wrote alert rules directly against key pipeline signals: consumer lag growth rate, checkpoint failure count, and job restart frequency.

Key Decisions

  • Use Mimir for long-term metrics storage instead of standalone Prometheus.

    Mimir's horizontally scalable, long-term storage avoids the retention and scaling limits of a single Prometheus instance as the number of monitored jobs grows.

  • Route alerts by severity rather than sending everything to one channel.

    Separating paging-worthy alerts (checkpoint failures, job crash loops) from informational warnings keeps on-call response focused on what actually needs immediate attention.

Challenges

  • Distinguishing real consumer-lag problems from expected, temporary spikes.

    Alerted on sustained lag growth over a rolling window rather than an instantaneous threshold, reducing noisy alerts during normal traffic bursts.

Solution

A dashboard and alerting layer that gives on-call engineers a single place to see job health, resource pressure, and pipeline throughput, with alert routing tuned to reduce noise.

Testing

  • Verified alert rules against synthetic failure scenarios (manually failing a checkpoint, throttling a consumer).
  • Reviewed dashboards with the team supporting the pipelines to confirm the surfaced metrics matched real triage needs.

Observability

  • This project is the observability layer itself — dashboards for job health, resource usage, throughput, and consumer lag.
  • Alert routing configured by severity to the appropriate notification channel.

Security Considerations

  • Read-only, scoped credentials for metrics scraping targets.
  • Dashboard access restricted to the engineering team operating the pipelines.

Results

Verified results have not been published for this project yet.

Lessons Learned

  • Alerting on trends (rate of change) rather than static thresholds significantly reduced false-positive pages.
  • Dashboards designed with the on-call engineer's triage flow in mind get used far more than generic metric dumps.

Future Improvements

  • Add automated anomaly detection for metrics that don't have an obvious static threshold.
  • Expand dashboards to cover data-quality signals alongside infrastructure health.

Technologies

  • Grafana
  • Prometheus
  • Grafana Alloy
  • Mimir
  • Kubernetes
  • Apache Flink
  • Apache Kafka
Back to portfolio