Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is Prometheus used for in microservices?
Prometheus is used to collect and store metrics from microservices. It helps monitor system health and performance by gathering data like request counts and response times.
Click to reveal answer
beginner
What format does Prometheus expect metrics to be exposed in?
Prometheus expects metrics to be exposed in a simple text format called the Prometheus exposition format, usually via an HTTP endpoint like /metrics.
Click to reveal answer
intermediate
How does Prometheus collect metrics from microservices?
Prometheus uses a pull model. It regularly sends HTTP requests to microservices' /metrics endpoints to fetch the latest metrics data.
Click to reveal answer
intermediate
What is a 'scrape config' in Prometheus?
A scrape config tells Prometheus where to find metrics endpoints and how often to collect data from them.
Click to reveal answer
beginner
Name two common metric types Prometheus collects.
Counter (counts events like requests) and Gauge (measures values like current memory usage).
Click to reveal answer
How does Prometheus get metrics from microservices?
ABy pulling metrics from /metrics endpoints
BBy pushing metrics to a central server
CBy reading log files
DBy scanning network packets
✗ Incorrect
Prometheus uses a pull model, regularly requesting metrics from microservices' /metrics endpoints.
Which of these is NOT a Prometheus metric type?
ADatabase
BGauge
CHistogram
DCounter
✗ Incorrect
'Database' is not a metric type. Common types include Counter, Gauge, and Histogram.
What does a Prometheus scrape config define?
AHow to visualize metrics
BHow to store metrics in a database
CHow to alert on metrics
DWhere and how often to collect metrics
✗ Incorrect
Scrape configs tell Prometheus where to find metrics endpoints and how often to scrape them.
What HTTP path do microservices usually expose metrics on for Prometheus?
A/health
B/status
C/metrics
D/data
✗ Incorrect
The standard path for Prometheus metrics is /metrics.
Why is Prometheus popular for microservices monitoring?
AIt stores logs efficiently
BIt supports dynamic service discovery and flexible queries
CIt automatically fixes bugs
DIt replaces databases
✗ Incorrect
Prometheus supports dynamic discovery of services and powerful queries, making it ideal for microservices.
Explain how Prometheus collects and stores metrics from microservices.
Think about how Prometheus asks microservices for data and where it finds that data.
You got /4 concepts.
Describe the difference between Counter and Gauge metric types in Prometheus.
One counts up only, the other can go up or down.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of Prometheus in a microservices environment?
easy
A. To collect and store metrics from services for monitoring
B. To deploy microservices automatically
C. To manage user authentication
D. To serve web pages to users
Solution
Step 1: Understand Prometheus role
Prometheus is designed to collect numerical data called metrics from running services.
Step 2: Identify monitoring purpose
These metrics help monitor service health and performance in microservices.
Final Answer:
To collect and store metrics from services for monitoring -> Option A
Quick Check:
Prometheus = Metrics collection [OK]
Hint: Prometheus is for metrics, not deployment or auth [OK]
Common Mistakes:
Confusing Prometheus with deployment tools
Thinking Prometheus manages users
Assuming Prometheus serves web content
2. Which YAML configuration snippet correctly defines a Prometheus scrape job for a service at http://localhost:8080/metrics?
easy
A. jobs:
- job: 'myservice'
endpoints: ['localhost:8080']
B. scrape_configs:
- job_name: 'myservice'
static_configs:
- targets: ['http://localhost:8080/metrics']
C. scrape_configs:
- job_name: 'myservice'
static_configs:
- targets: ['localhost:8080']
D. scrape_jobs:
- name: 'myservice'
targets: ['localhost:8080/metrics']
Solution
Step 1: Check Prometheus YAML syntax
Prometheus uses scrape_configs with job_name and static_configs listing targets as host:port without URL path.
Step 2: Validate target format
Targets must be host:port only, no http:// or path like /metrics.
Hint: Targets list host:port only, no URL scheme or path [OK]
Common Mistakes:
Including http:// or /metrics in targets
Using wrong YAML keys like scrape_jobs or jobs
Misnaming job_name or static_configs
3. Given this Prometheus query: rate(http_requests_total[5m]), what does it calculate?
medium
A. The average rate of HTTP requests per second over the last 5 minutes
B. The current number of active HTTP requests
C. The total number of HTTP requests since service start
D. The maximum number of HTTP requests in the last 5 minutes
Solution
Step 1: Understand rate() function
The rate() function calculates the per-second average increase of a counter over a time window.
Step 2: Apply to http_requests_total[5m]
This means it measures how fast the total HTTP requests counter increased in the last 5 minutes, giving requests per second.
Final Answer:
The average rate of HTTP requests per second over the last 5 minutes -> Option A
Quick Check:
rate() = per-second average increase [OK]
Hint: rate() gives per-second average over time window [OK]
Common Mistakes:
Thinking rate() returns total count
Confusing rate() with current active requests
Assuming rate() returns max value
4. You configured Prometheus to scrape localhost:9090 but no metrics appear. Which fix is correct?
medium
A. Change target to localhost:9090/metrics in YAML
B. Remove job_name from config
C. Restart Prometheus to reload config
D. Add metrics_path: '/metrics' under the scrape job
Solution
Step 1: Understand default metrics path
Prometheus scrapes /metrics path by default, but if the service uses a different path, you must specify it.
Step 2: Fix missing metrics path
Adding metrics_path: '/metrics' explicitly tells Prometheus where to get metrics if not default or to confirm path.
Final Answer:
Add metrics_path: '/metrics' under the scrape job -> Option D
Quick Check:
metrics_path fixes scrape URL [OK]
Hint: Use metrics_path to set correct scrape URL path [OK]
Common Mistakes:
Adding path in targets instead of metrics_path
Restarting without config fix
Removing job_name breaks config
5. You want to monitor error rates in a microservice using Prometheus. The service exposes http_requests_total with labels status and method. Which query shows the error rate (status codes 500-599) over the last 10 minutes as a percentage of all requests?
hard
A. rate(http_requests_total{status=~"5.."}[10m]) / rate(http_requests_total[10m]) * 100
B. sum(rate(http_requests_total{status=~"5.."}[10m])) / sum(rate(http_requests_total[10m])) * 100
C. sum(rate(http_requests_total{status=~"5.."}[10m])) * 100
D. sum(rate(http_requests_total{status!~"5.."}[10m])) / sum(rate(http_requests_total[10m])) * 100
Solution
Step 1: Filter error status codes 500-599
Use regex status=~"5.." to select error codes in the 500 range.
Step 2: Calculate error rate as percentage
Sum the rate of error requests and divide by sum of all requests rate, then multiply by 100 for percentage.
Final Answer:
sum(rate(http_requests_total{status=~"5.."}[10m])) / sum(rate(http_requests_total[10m])) * 100 -> Option B