Other Certifications · CNCF Ladder

Prometheus Certified Associate (PCA)

Every burn-rate alert, every recording rule, every dashboard panel this course has put in front of you assumes one tool is running underneath it and quietly doing its job: Prometheus. This course teaches what to do with what Prometheus produces — how to turn a query into an SLI, how to turn an SLI into an alert that pages someone at the right moment — but it has never asked you to prove you can operate the query language, the data model, and the service-discovery machinery yourself, cold, under exam conditions. The Prometheus Certified Associate (PCA) is exactly that proof. It's a knowledge-based credential developed by the Linux Foundation in partnership with the Prometheus community and endorsed by the CNCF, and it tests the single most load-bearing tool in this course's entire toolchain in isolation from everything built on top of it. This page covers what the exam is, its format and cost, the domains it tests, the PromQL and relabeling mechanics you actually need cold, and how it maps onto a course that has assumed Prometheus fluency on every page since monitoring & observability.

☺ Explain it like I'm 10

Imagine you've spent a whole school year learning to bake incredible cakes — fondant work, layering, the works. But nobody ever checked whether you actually know how your oven works: which dial is which, how long to preheat, what happens if you open the door too early. The PCA is the oven test. It doesn't ask you to bake a cake. It asks: given this exact oven — Prometheus — do you know how it finds what to cook, how it stores the heat readings, and how to ask it questions like "was the middle rack hotter than the average of the last hour" without guessing. Everything this course taught you to bake assumed you already knew the oven. This is where you go prove it.

🐘Your host for this topic: Ellie the Elephant — the telemetry keeper who hosts monitoring & observability and the Prometheus tool page elsewhere in this course. Nobody on the Watch has spent more time inside Prometheus's own storage engine, so nobody is better placed to tell you exactly what a certification on it should test.

What the PCA is, and who it's for

☺ Like you're 10: A roughly ninety-minute, multiple-choice test of Prometheus's core mechanics — not a hands-on lab where you build a monitoring stack live.

The Prometheus Certified Associate sits in the same family as OpenTelemetry's own associate credential and the CNCF's Kubernetes and Cloud Native Associate (KCNA): all three are Linux Foundation Training & Certification exams, developed with deep involvement from the specific open-source project's own community, and delivered as remotely proctored, knowledge-based multiple-choice exams rather than the live-cluster, performance-based format used by the CKA, CKAD, and CKS. There is no terminal, no cluster to break, and nothing graded on end state — you are answering questions about Prometheus's architecture, its query language, and its configuration surface, not operating a running instance of it.

It targets engineers who instrument services, write PromQL, configure scrape targets and alerting rules, or simply consume dashboards and alerts built on Prometheus data day to day — which, on a team running any serious SLO program, is close to everyone touching production. It assumes you've actually used Prometheus, or at minimum read a /metrics endpoint and written a handful of queries against it; it does not assume Kubernetes fluency, container orchestration knowledge, or experience with any specific long-term-storage backend.

◆ Key idea

Treat the PCA as proof of the vocabulary this course has been speaking in PromQL snippets since monitoring & service level indicators — the data model, the query language, and how targets get discovered — not proof that you can run a production Prometheus estate at scale. That operational judgment — federation, remote-write sizing, cardinality control under real traffic — gets built by actually operating one, the same way a production readiness review or a real burn-rate alert misfiring at 3am builds it. This exam is the floor that makes those experiences legible, not a substitute for having them.

Format, cost, and prerequisites — verify before you sit it

☺ Like you're 10: Here's the shape of the test as best it's publicly known right now — and Linux Foundation exams get revised on their own schedule, so double-check before you pay.

The table below reflects the Linux Foundation's own published certification page as of this writing. Treat every number as a planning aid rather than a guarantee — associate-tier Linux Foundation exams in this family have had their pricing, timing, and curricula revised before, and the PCA is young enough as a credential that it's likely to keep changing faster than the long-established CKA has.

ItemWhat is generally published
GovernanceDeveloped by the Linux Foundation in collaboration with the Prometheus project community, under the same "Cloud Native" associate-exam family as KCNA and the OpenTelemetry Certified Associate
FormatOnline, remotely proctored, knowledge-based — multiple choice; no live terminal or graded infrastructure
DurationCommonly reported as 90 minutes
Question countCommonly reported around 60 questions
Passing scoreCommonly reported around 75%; the Linux Foundation does not guarantee this figure stays fixed between exam revisions
CostCommonly listed around USD $250, in line with sibling associate-tier exams (KCNA, OpenTelemetry Certified Associate)
ValidityCommonly reported as 2 years from the date you pass, before recertification is required
Retake policyLinux Foundation exams have historically included a free retake if you don't pass on the first attempt — confirm the current policy before you book
PrerequisitesNone formally required; the Linux Foundation recommends hands-on Prometheus experience rather than any specific prior certification
⚠ Verify this before you book

Price, duration, question count, passing score, and the domain breakdown below all change, and this is a newer exam than the CKA or Terraform Associate — treat it as more likely to move, not less. This is an independent, unofficial course; nothing on this page is authoritative. Confirm current logistics on the Linux Foundation's own Prometheus Certified Associate certification page before you register, and read the exam handbook in your Linux Foundation portal for the rules on ID, environment checks, and permitted materials — those are enforced strictly regardless of what any third-party page says.

The exam domains

☺ Like you're 10: Six topic areas, and the query language alone carries as much weight as any two of the others combined.

What follows is the current domain structure and approximate weighting as generally published for the PCA curriculum. Unlike the CNCF's Kubernetes exams, which anchor to a numbered curriculum version you can pin down and cite, PCA's domain list is a newer, less exhaustively documented artifact — treat the percentages below as a study-planning approximation rather than a transcription you should quote back verbatim, and confirm the exact current breakdown on the Linux Foundation's own exam page before you build a study plan around any single number.

🔍PromQL
25%
🎯Instrumentation and Exposition
15%
🧭Service Discovery and Relabeling
15%
🚨Alerting and Alertmanager
15%
🏗️Prometheus Architecture
15%
📖Prometheus Fundamentals
15%

PromQL — the single largest domain

Selectors and label matchers (=, !=, =~, !~), instant vectors versus range vectors, the counter functions (rate(), irate(), increase()) and why they must never be read raw, aggregation operators (sum, avg, max, count) with by and without clauses, histogram_quantile(), and time-shifting with offset and subqueries.

Instrumentation and Exposition

The plain-text exposition format, the four native metric types (Counter, Gauge, Histogram, Summary) and which functions each one supports, client-library basics, and metric- and label-naming conventions — including why an unbounded label value is a cardinality incident waiting to happen.

Service Discovery and Relabeling

Static versus dynamic target discovery (static_configs, file_sd_configs, kubernetes_sd_configs, consul_sd_configs, cloud-provider discovery), and the relabel_configs pipeline that runs before scraping — keep, drop, replace, labelmap, and labeldrop actions against the __meta_* labels discovery attaches.

Alerting and Alertmanager

Writing alerting rules in PromQL with a for duration, and everything Alertmanager does once a rule fires: grouping alerts into one notification, routing by label to the right receiver, silencing planned work, and inhibition — suppressing a downstream symptom alert when its root-cause alert is already firing.

Prometheus Architecture

The pull model end to end — scrape loop, write-ahead log, on-disk TSDB blocks, default local retention — plus where Prometheus's own storage stops and the remote_write ecosystem (Thanos, Mimir, Cortex, VictoriaMetrics) picks up for anything that needs to outlive a couple of weeks.

Prometheus Fundamentals

What problem Prometheus solves, pull versus push and the tradeoffs of each, where Prometheus sits in the CNCF landscape, and the vocabulary — target, job, instance, scrape interval — everything else on this page is built out of.

The mechanics underneath: the data model, PromQL, and relabeling

☺ Like you're 10: Every time series is a name plus a set of labels plus a number at a point in time — and the exam wants you fluent in reading and writing all three parts without a reference open next to you.

Prometheus's data model is deceptively small: every sample is a metric name, an unordered set of {label="value"} key-value pairs that together identify one specific time series, a timestamp, and a float64 value. http_requests_total{job="api",instance="10.0.1.4:8080",code="200"} and the same metric with code="500" are two entirely distinct series as far as Prometheus's storage is concerned — which is exactly why sum() or rate() with the right by/without clause is doing real work, not cosmetic formatting, and why an SRE debugging a burn-rate alert needs to be able to read a query and know precisely which dimension it collapsed and which it kept.

# label matchers: exact, negated, and regex (both directions)
http_requests_total{job="checkout-api", code=~"5.."}
http_requests_total{job="checkout-api", code!~"2..|3.."}

# counters are meaningless raw — always wrap them
rate(http_requests_total{job="checkout-api"}[5m])

# aggregate away the instance dimension, keep job and code
sum by (job, code) (rate(http_requests_total[5m]))

# the exam's favorite function: p99 latency from a histogram
histogram_quantile(0.99,
  sum by (le) (rate(http_request_duration_seconds_bucket{job="checkout-api"}[5m]))
)

# compare current error rate to the same window an hour ago
(
  sum(rate(http_requests_total{code=~"5.."}[5m]))
  /
  sum(rate(http_requests_total[5m]))
) offset 1h

# subquery: a range vector built by re-evaluating an instant query on a step
max_over_time(
  (sum(rate(http_requests_total{code=~"5.."}[1m])) / sum(rate(http_requests_total[1m])))[1h:1m]
)

This is the exact shape of query this course has been asking you to read since monitoring & service level indicators — a "good" count over a "valid" count, wrapped in rate(), aggregated to the right cardinality. Tools like Sloth and Nobl9 generate recording rules in exactly this shape from a declarative SLO spec, which means most practitioners rarely hand-write the query above in production — but the PCA still expects you to read one cold and identify the numerator, the denominator, and which label the aggregation dropped.

Service discovery and relabeling is the other half of the exam that this course has used constantly without ever stopping to name. Static IP lists don't survive a single pod reschedule, so Prometheus discovers targets dynamically and runs every discovered target through a relabel_configs pipeline before it ever gets scraped — the pipeline that decides what to scrape, how to reach it, and what labels the resulting series carry.

scrape_configs:
  - job_name: kubernetes-pods
    kubernetes_sd_configs:
      - role: pod
    relabel_configs:
      # keep only pods that opted in via annotation
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: "true"
      # rewrite __address__ using a port supplied in another annotation
      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
        action: replace
        regex: '([^:]+)(?::\d+)?;(\d+)'
        replacement: '$1:$2'
        target_label: __address__
      # copy every "app.kubernetes.io/*" pod label onto the resulting series
      - action: labelmap
        regex: __meta_kubernetes_pod_label_app_kubernetes_io_(.+)
      # drop noisy system namespaces outright
      - source_labels: [__meta_kubernetes_namespace]
        action: drop
        regex: 'kube-system|kube-public'

The detail that trips people up: everything prefixed __meta_* and __address__ itself is a temporary label, visible only during the relabeling pipeline and stripped before storage — nothing starting with a double underscore survives into a stored series unless a replace or labelmap rule explicitly copies it into a normal label first. Miss that distinction and a query built around a label you assumed was stored simply returns nothing, with no error to point at why.

🐘 Ellie's workshop · 30 min

Run a local Prometheus against node_exporter and a toy counter, then do five things without a reference: (1) write a rate() query and explain why the raw counter graph looks wrong without it; (2) write a histogram_quantile() query against a histogram metric; (3) add a relabel_configs rule that drops one target by label; (4) write an alerting rule with a for duration and explain what "pending" versus "firing" means in Alertmanager; (5) explain, out loud, the difference between a Summary's client-side quantiles and a Histogram's — and why one aggregates correctly across instances and the other doesn't. Thirty minutes of this beats an hour of slides.

Why this course's whole SLO-monitoring stack assumes exactly this underneath

☺ Like you're 10: Every burn-rate alert this course has shown you is a PromQL expression wearing a costume — this exam is what's underneath the costume.

Multi-window, multi-burn-rate alerting — the technique this course treats as the standard way to page someone on error-budget consumption without drowning them in noise — is, mechanically, several PromQL expressions evaluated over different windows and compared against different thresholds, then combined with a boolean and. SLO windows and composite SLOs is the same PromQL fluency applied to rolling versus calendar-aligned windows and to combining several SLIs into one composite indicator. None of that page assumed you'd need to know what a __meta_kubernetes_pod_label_* temporary label is — it assumed you already did, the same assumption the PCA formalizes into a credential. Capstone Part 2 — build the monitoring & alerting is where that assumption gets tested in practice rather than on an exam: you're handed a service and asked to instrument it, discover it, query it, and alert on it, in that order.

It's worth being precise about where Prometheus's job — and therefore the PCA's scope — ends. Prometheus computes and evaluates; Grafana is almost always the layer that renders what it computes into the dashboards this course's on-call readiness checklist assumes exist, and Alertmanager routes what Prometheus decides should page someone into PagerDuty or a similar paging tool, which is where incident management & on-call picks the story up. The PCA tests the layer that makes all of those downstream tools trustworthy in the first place — a beautiful dashboard built on a query that silently dropped the wrong label is still wrong, just wrong in a way that looks confident.

What the PCA exam tests Data model & metric types PromQL Service discovery & relabeling assumed fluency, tested nowhere else here What this course builds on top of that fluency Multi-window burn-rate alerts SLO windows & composite SLOs Grafana dashboards & the on-call runbook

PCA versus the other CNCF-adjacent credentials on this site

☺ Like you're 10: Same test-taking format as the entry-level Kubernetes badge, completely different subject — and a genuinely different beast from the exams where you're handed a broken cluster.

PCACKAOpenTelemetry Certified Associate
QuestionDo you know Prometheus's data model, PromQL, and discovery cold?Can you actually run a Kubernetes cluster?Do you know OpenTelemetry's instrumentation and pipeline model cold?
FormatKnowledge-based, multiple choice, ~90 minutesPerformance-based, live clusters, 2 hoursKnowledge-based, multiple choice
ScopeOne monitoring toolkit's storage, query language, and config surfaceThe Kubernetes substrate broadlyVendor-neutral telemetry instrumentation and collection
Where it sits in an SRE's toolkitReading and writing the SLIs everything else in this course is built fromCluster-level reliability once workloads are scheduledGetting metrics, traces, and logs out of a service in the first place

PromQL fluency and OpenTelemetry instrumentation are complementary, not competing — OpenTelemetry increasingly generates the metrics Prometheus scrapes and Prometheus increasingly speaks OTLP natively, so the two credentials sit end-to-end on the same pipeline rather than overlapping. If you're building out this exact corner of your resume, this course's sibling OpenTelemetry Certified Associate page is the natural next stop.

Who should consider it — and who should skip it

☺ Like you're 10: If you'd be the one writing the query at 3am when a burn-rate alert fires, this is worth an afternoon. If you only ever look at a dashboard someone else built, it might not be.

The case for taking it

Take it if you write or review PromQL, own alerting rules, configure scrape targets, or are accountable for an SLO program's monitoring layer — which, in this course's own terms, is most of what monitoring & observability and alert design & alert fatigue ask of an SRE. It's a fast, credible way to prove that fluency to a hiring manager who has neither the time nor the standing to watch you write a query live, and it costs a fraction of what the performance-based CNCF exams do in both money and preparation time.

When to skip it

Deprioritize it if any of these fit. You already write PromQL daily at a senior level — it will confirm what you know and teach you little; spend the study time on multi-window burn-rate alerting instead, which is the harder, less-documented skill built on top of it. Your organization standardized on a different monitoring stack entirely — Datadog, a proprietary APM — and Prometheus specifically isn't part of your day job; a vendor-specific credential or this course's own SRE Practitioner path is a better use of that afternoon. You're brand new to observability concepts — work through monitoring & observability and the Prometheus tool page here first; the PCA rewards fluency, not first exposure.

How to prepare using this site

☺ Like you're 10: This course teaches what to build with Prometheus more than it teaches raw exam trivia — here's the map from each domain to the page that gets you closest.

What the exam coversStudy here
Prometheus fundamentals, architecture, the pull model, TSDB, and the remote_write ecosystemThe Prometheus tool page — the deepest single treatment of this material on the site
PromQL read fluently, applied to a real SLIMonitoring & Service Level Indicators and SLIs, SLOs & error budgets
PromQL applied to alerting thresholds and windowsMulti-Window, Multi-Burn-Rate Alerting and SLO Windows & Composite SLOs
Alerting rules and Alertmanager routing in a real incident contextAlert Design & Alert Fatigue and Incident Management & On-Call
Instrumentation, dashboards, and the visualization layer on top of PromQLGrafana
Where recording rules come from in a mature setupSloth and Nobl9
Building the monitoring & alerting layer end to end, hands-onCapstone Part 2 — build the monitoring & alerting
A broader, vendor-neutral SRE credentialThis course's own SRE Practitioner path
Complementary instrumentation-layer credentialOpenTelemetry Certified Associate
Vocabulary and quick recallGlossary and Flashcards

None of this replaces standing up a real Prometheus instance and breaking it a little — reading exposition text off a live /metrics endpoint, watching a target flip up to 0 when you kill it, writing a relabel rule and watching a target vanish from the discovery list. The exam tests fluency with a live system, and fluency is built by touching the live system, not by memorizing this page.

🎬 At the Reliability Watch
🐘

Ellie the Elephant: Quick check before the burn-rate alert review — what does rate(http_requests_total[5m]) actually compute, in one sentence?

🦫

Benny the Beaver: The per-second average rate of increase of that counter, over the trailing five minutes, extrapolated slightly at the edges. I automated a dashboard around it last week.

🐘

Ellie the Elephant: Good. And if I asked you to break that down by route but not by pod instance?

🦫

Benny the Beaver: sum by (route) (...) instead of raw sum(...). Drop the instance label, keep route.

🦊

Foxy: And if that query suddenly returns nothing for a target that's clearly still up — where do you even start looking?

🐘

Ellie the Elephant: Relabeling, first. A dropped label, a regex that didn't match what you thought it matched, a __meta_* label that never got copied into a real one. Nine times out of ten it's not the query — it's what never made it into storage in the first place.

🐢

Timmy the Turtle: Which is exactly why I don't trust a burn-rate alert nobody's ever traced back to its raw scrape config. Confidence without verification is just a guess with good formatting.

🦉

Professor Owl: And that's the whole case for this certification in one exchange. Every idea we teach on top of Prometheus assumes exactly the fluency you two just demonstrated.

Pair this page with the Prometheus tool page for the full architecture and multi-window burn-rate alerting for where this exact PromQL fluency gets used under real paging pressure. For a broader credential across the whole SRE discipline, see this course's own SRE Practitioner path. Full comparisons against every other certification on this site live on the certifications hub.

✓ Checkpoint

1. What kind of exam is the PCA — knowledge-based or performance-based — and how does that differ from the CKA? 2. Name at least four of the six PCA domains, and which one carries the most weight. 3. In Prometheus's data model, what uniquely identifies one time series? 4. Why must a Counter metric almost always be wrapped in rate() or increase() rather than read raw? 5. What happens to a __meta_* label by default, and what has to happen for it to survive into a stored series? 6. Name one concrete page elsewhere in this course whose content assumes the PCA's PromQL fluency without ever saying so directly.

Check your answers
  1. The PCA is knowledge-based — remotely proctored multiple choice, no terminal. The CKA is performance-based — live clusters, graded on end state.
  2. Any four of: Prometheus Fundamentals; Prometheus Architecture; PromQL; Instrumentation and Exposition; Service Discovery and Relabeling; Alerting and Alertmanager. PromQL carries the most weight, commonly reported around 25%.
  3. The combination of the metric name and its full, unordered set of {label="value"} pairs — two series with the same name but even one different label value are distinct series in storage.
  4. A Counter only ever increases (resetting to zero on a restart); read raw it just shows an ever-climbing line that says nothing about current load. rate()/increase() convert that cumulative total into a meaningful per-second or per-window rate of change.
  5. __meta_* labels (and __address__) are temporary, visible only during the relabel_configs pipeline, and are stripped before storage by default. A replace or labelmap rule has to explicitly copy the value into a normal, non-underscore-prefixed label for it to survive into the stored series.
  6. Any reasonable example — e.g., Monitoring & Service Level Indicators's recording-rule PromQL, or multi-window burn-rate alerting's threshold expressions — both assume you can read a rate()/sum by query and identify its numerator, denominator, and aggregation dimension without it being re-explained.