π― PCA (Prometheus Certified Associate) Exam Preparation Guide
Congratulations on completing the KodeKloud course! Hereβs a comprehensive revision plan to help you clear the PCA exam in December.
π Exam Overview
| Detail | Info |
|---|---|
| Duration | 90 minutes |
| Questions | 60 multiple choice |
| Passing Score | 75% |
| Format | Online, proctored |
| Cost | $250 (1 free retake) |
| Validity | 2 years |
π Exam Domain Weightage
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. Observability Concepts - 18% β
β 2. Prometheus Fundamentals - 20% β
β 3. PromQL - 28% β β
β 4. Instrumentation & Exporters - 16% β
β 5. Dashboarding (Grafana) - 8% β
β 6. Service Discovery - 6% β
β 7. Alerting (Alertmanager) - 4% β
β 8. Push Gateway - -% β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Insight: PromQL alone is 28% β master it thoroughly!
π Study Material (Organized by Priority)
π₯ PRIMARY Resources (Must Do)
1. Official Prometheus Documentation
- π https://prometheus.io/docs/introduction/overview/
- Focus Areas:
- Architecture & Components
- Configuration (
prometheus.yml) - PromQL functions & operators
- Service Discovery mechanisms
- Alerting rules & Alertmanager
- Storage & Data Model
- Metric types (Counter, Gauge, Histogram, Summary)
2. CNCF PCA Exam Curriculum
- π https://github.com/cncf/curriculum/blob/master/PCA_Curriculum.pdf
- This is the official syllabus β align ALL your study to this
3. KodeKloud PCA Course (Revision)
- Go through the practice tests and mock exams again
- Focus on questions you got wrong previously
4. PromLabs - PromQL Cheat Sheet
- π https://promlabs.com/promql-cheat-sheet/
- Excellent for quick revision of PromQL functions
π₯ SECONDARY Resources (Highly Recommended)
5. Prometheus: Up & Running (Book by Julien Pivotto - OβReilly)
- 2nd Edition (2023) β Updated and PCA-relevant
- Covers everything end-to-end
- Read chapters aligned with exam domains
6. PromLabs Training
- π https://training.promlabs.com/
- βGetting Started with PromQLβ β Free course by Julius Volz (Prometheus co-founder)
- Best resource specifically for PromQL mastery
7. YouTube Resources
- That DevOps Guy β Prometheus tutorial series
- TechWorld with Nana β Prometheus monitoring overview
- KodeKloud YouTube β PCA-specific videos
π₯ PRACTICE & HANDS-ON (Critical)
8. Hands-On Lab Setup
# Quick Docker setup for practice
docker run -d --name prometheus -p 9090:9090 prom/prometheus
docker run -d --name grafana -p 3000:3000 grafana/grafana
docker run -d --name node-exporter -p 9100:9100 prom/node-exporter
docker run -d --name alertmanager -p 9093:9093 prom/alertmanager
docker run -d --name pushgateway -p 9091:9091 prom/pushgateway
9. Practice Platforms
- KodeKloud Playground β Spin up environments
- PromLens (https://promlens.com/) β PromQL query builder & analyzer
- Killercoda β Interactive Prometheus scenarios
π Domain-wise Revision Checklist
Domain 1: Observability Concepts (18%)
β‘ Metrics vs Logs vs Traces
β‘ Push vs Pull model
β‘ What is observability vs monitoring
β‘ SLI, SLO, SLA concepts
β‘ Golden signals (Latency, Traffic, Errors, Saturation)
β‘ RED method (Rate, Errors, Duration)
β‘ USE method (Utilization, Saturation, Errors)
β‘ Why Prometheus uses pull model
β‘ Advantages/disadvantages of pull-based monitoring
Domain 2: Prometheus Fundamentals (20%)
β‘ Prometheus Architecture (draw from memory!)
- Prometheus Server (Retrieval, TSDB, HTTP Server)
- Service Discovery
- Pushgateway
- Alertmanager
- Exporters
- Client Libraries
β‘ Data Model
- Metric name
- Labels (key-value pairs)
- Samples (timestamp + value)
- Time series notation: metric_name{label="value"}
β‘ Metric Types:
- Counter (monotonically increasing) β rate(), increase()
- Gauge (goes up and down) β can use directly
- Histogram (buckets, _bucket, _sum, _count) β histogram_quantile()
- Summary (quantiles, _sum, _count) β pre-calculated quantiles
β‘ prometheus.yml configuration
- global (scrape_interval, evaluation_interval)
- scrape_configs
- alerting
- rule_files
β‘ Storage
- Local storage (TSDB)
- Remote read/write
- Retention (--storage.tsdb.retention.time)
- WAL (Write-Ahead Log)
β‘ Exposition formats
β‘ Timestamps and staleness
Domain 3: PromQL (28%) β MOST IMPORTANT
β‘ Selectors:
- Instant vector: http_requests_total{method="GET"}
- Range vector: http_requests_total[5m]
- Label matchers: =, !=, =~, !~
β‘ Operators:
- Arithmetic: +, -, *, /, %, ^
- Comparison: ==, !=, >, <, >=, <=
- Logical: and, or, unless
- Vector matching: on(), ignoring(), group_left(), group_right()
β‘ Aggregation Operators:
- sum, avg, min, max, count
- stddev, stdvar
- topk, bottomk
- count_values
- quantile
- by() and without() clauses
β‘ Functions (CRITICAL):
- rate() vs irate()
- increase()
- histogram_quantile()
- predict_linear()
- delta() vs idelta()
- deriv()
- abs(), ceil(), floor(), round()
- time(), timestamp()
- label_replace(), label_join()
- absent(), absent_over_time()
- changes(), resets()
- sort(), sort_desc()
- clamp(), clamp_min(), clamp_max()
- vector(), scalar()
- <aggregation>_over_time() functions
(avg_over_time, sum_over_time, min_over_time, etc.)
β‘ Subqueries
β‘ Recording rules (naming conventions: level:metric:operations)
β‘ offset modifier
β‘ @ modifier
Domain 4: Instrumentation & Exporters (16%)
β‘ Client Libraries:
- Go, Python, Java, Ruby, .NET
- How to instrument application code
- When to use which metric type
β‘ Common Exporters:
- Node Exporter (Linux metrics)
- Blackbox Exporter (probing - HTTP, TCP, ICMP, DNS)
- cAdvisor (container metrics)
- MySQL Exporter
- Custom exporters
β‘ Naming conventions:
- snake_case
- unit suffix (e.g., _seconds, _bytes, _total)
- _total suffix for counters
- Base units (seconds not milliseconds, bytes not megabytes)
β‘ Instrumentation best practices
β‘ /metrics endpoint format
Domain 5: Dashboarding & Visualization (8%)
β‘ Grafana basics
- Adding Prometheus as data source
- Panel types (Graph, Stat, Gauge, Table, Heatmap)
- Variables and templating
- Dashboard JSON model
β‘ Prometheus native UI
- Expression browser
- /graph endpoint
- Console templates
Domain 6: Service Discovery (6%)
β‘ Static configs (static_configs)
β‘ File-based SD (file_sd_configs)
β‘ DNS-based SD
β‘ Kubernetes SD (kubernetes_sd_configs)
- Roles: node, pod, service, endpoints, ingress
β‘ Consul SD
β‘ EC2 SD
β‘ Relabeling:
- relabel_configs (before scrape)
- metric_relabel_configs (after scrape)
- Actions: replace, keep, drop, labelmap, labeldrop, labelkeep
- __meta_* labels
- __address__, __scheme__, __metrics_path__
Domain 7: Alerting (4%)
β‘ Alerting rules syntax:
- alert, expr, for, labels, annotations
β‘ Alertmanager:
- Routing tree
- Grouping (group_by)
- Inhibition
- Silencing
- Receivers (email, Slack, PagerDuty, webhook)
- repeat_interval, group_wait, group_interval
β‘ Alert states: Inactive β Pending β Firing
β‘ Template functions in annotations ({{ $value }}, {{ $labels }})
π 6-Week Revision Plan (Nov - Dec)
Week 1 (Nov 1-7): Observability Concepts + Prometheus Architecture
β Read official docs + Book chapters 1-4
Week 2 (Nov 8-14): Prometheus Configuration + Data Model + Storage
β Hands-on lab setup, practice configs
Week 3 (Nov 15-21): PromQL Deep Dive (Part 1)
β Selectors, operators, aggregations
β Complete PromLabs free course
Week 4 (Nov 22-28): PromQL Deep Dive (Part 2)
β Functions, recording rules, subqueries
β Practice 50+ PromQL queries hands-on
Week 5 (Dec 1-7): Exporters + Service Discovery + Alerting
β Configure node_exporter, blackbox_exporter
β Set up Alertmanager with routing
β Grafana dashboards
Week 6 (Dec 8-14): Mock Exams + Weak Area Review
β KodeKloud mock exams
β Revisit wrong answers
β Quick revision of all checklists
π₯ Quick Revision Flash Cards (Key Concepts)
Q: rate() vs irate()?
A: rate() = per-second average over range
irate() = per-second instant rate (last 2 data points)
Use rate() for alerts, irate() for graphs
Q: Histogram vs Summary?
A: Histogram: server-side quantile calculation, aggregatable
Summary: client-side quantile calculation, NOT aggregatable
Q: Recording rule naming convention?
A: level:metric:operations
Example: job:http_requests_total:rate5m
Q: What does absent() do?
A: Returns 1 if the metric doesn't exist (useful for dead-man alerts)
Q: relabel_configs vs metric_relabel_configs?
A: relabel_configs: applied BEFORE scrape (on targets)
metric_relabel_configs: applied AFTER scrape (on metrics)
Q: Default scrape_interval?
A: 1 minute (60s)
Q: What port does Node Exporter use?
A: 9100
Q: Push vs Pull β when to use Pushgateway?
A: Short-lived/batch jobs that may not live long enough to be scraped
β οΈ Common Exam Pitfalls
- Donβt confuse
rate()withincrease()β rate gives per-second, increase gives total increase - Counter resets β
rate()andincrease()handle resets automatically histogram_quantile()β first argument is quantile (0-1), not percentage- Label matching in binary operations β understand
on(),ignoring(),group_left(),group_right() absent()vsabsent_over_time()β know when to use each- Staleness β a time series goes stale after 5 minutes of no new samples
forduration in alerts β how long condition must be true before firing
π Quick Links Bookmark List
| Resource | URL |
|---|---|
| PCA Curriculum | https://github.com/cncf/curriculum |
| Prometheus Docs | https://prometheus.io/docs/ |
| PromQL Reference | https://prometheus.io/docs/prometheus/latest/querying/basics/ |
| PromLabs Training | https://training.promlabs.com/ |
| PromQL Cheat Sheet | https://promlabs.com/promql-cheat-sheet/ |
| Exam Registration | https://training.linuxfoundation.org/certification/prometheus-certified-associate/ |
| Killer.sh (if available) | Check for PCA simulator |
π‘ Pro Tip: The exam is open book (you can access official Prometheus docs during the exam), but you wonβt have time to look up everything. Aim to know 80% from memory and use docs only for syntax verification.
Good luck with your PCA exam! π