PCA Exam Guide

🎯 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

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


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

  1. Don’t confuse rate() with increase() β€” rate gives per-second, increase gives total increase
  2. Counter resets β€” rate() and increase() handle resets automatically
  3. histogram_quantile() β€” first argument is quantile (0-1), not percentage
  4. Label matching in binary operations β€” understand on(), ignoring(), group_left(), group_right()
  5. absent() vs absent_over_time() β€” know when to use each
  6. Staleness β€” a time series goes stale after 5 minutes of no new samples
  7. for duration in alerts β€” how long condition must be true before firing

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! πŸš€