Prometheus scrapes and stores labeled time-series metrics; Grafana queries data sources and presents dashboards and alerts. A useful lab begins with a few service-level signals, not hundreds of panels.
Prometheus scrapes and stores labeled time-series metrics; Grafana queries data sources and presents dashboards and alerts. A useful lab begins with a few service-level signals, not hundreds of panels.
| Question | Practical answer |
|---|---|
| When is it useful? | A sample HTTP service exports request count, error count, and duration; Prometheus scrapes it and Grafana graphs rate, error ratio, and latency percentiles. |
| What should you do? | Run a local sample stack, generate normal and failing traffic, query one metric directly, then build a three-panel dashboard with units and descriptions. |
| How do you know it worked? | Targets are up, queries return expected label sets, the dashboard visibly changes under failure, and an alert condition matches a user-impacting symptom. |
| Common failure | Unbounded labels such as user ID or request ID create dangerous cardinality; keep high-cardinality detail in logs or traces. |
flowchart LR
A[Question] --> B[Prometheus and Grafana starter lab]
B --> C[Small example]
C --> D[Evidence]
The important idea is not to stop at a definition: connect the concept to a small example and observable evidence.
A sample HTTP service exports request count, error count, and duration; Prometheus scrapes it and Grafana graphs rate, error ratio, and latency percentiles.
Before acting, write the success signal. Change one condition at a time, observe the result, and record assumptions. For Prometheus and Grafana starter lab, this separates what you know from what you are merely guessing.
Goal: Run a local sample stack, generate normal and failing traffic, query one metric directly, then build a three-panel dashboard with units and descriptions.
Expected result: Targets are up, queries return expected label sets, the dashboard visibly changes under failure, and an alert condition matches a user-impacting symptom.
Unbounded labels such as user ID or request ID create dangerous cardinality; keep high-cardinality detail in logs or traces.
When the result differs from your prediction, do not change many things at once. Check inputs, versions, environment, permissions, and logs, then repeat from the smallest example.
Use the linked resource or repository at the end of the page when you need a full implementation. Check current versions before applying commands to a real project.
Automate testing and deployment with a GitHub Actions workflow.
See DevOps as one feedback loop, then practise the tools in the order they become useful.
DevOps is a feedback-oriented way of delivering and operating software, not a job title or toolchain. Product, development, security, and operations share responsibility from planning through production learning.