PCA Online Practice Questions

Home / The Linux Foundation / PCA

Latest PCA Exam Practice Questions

The practice questions for PCA exam was last updated on 2025-11-01 .

Viewing page 1 out of 4 pages.

Viewing questions 1 out of 21 questions.

Question#1

What Prometheus component would you use if targets are running behind a Firewall/NAT?

A. Pull Proxy
B. Pull Gateway
C. HA Proxy
D. PushProx

Explanation:
When Prometheus targets are behind firewalls or NAT and cannot be reached directly by the Prometheus server’s pull mechanism, the recommended component to use is PushProx.
PushProx works by reversing the usual pull model. It consists of a PushProx Proxy (accessible by Prometheus) and PushProx Clients (running alongside the targets). The clients establish outbound connections to the proxy, which allows Prometheus to “pull” metrics indirectly. This approach bypasses network restrictions without compromising the Prometheus data model.
Unlike the Pushgateway (which is used for short-lived batch jobs, not network-isolated targets), PushProx maintains the Prometheus “pull” semantics while accommodating environments where direct scraping is impossible.
Reference: Verified from Prometheus documentation and official PushProx design notes C Monitoring Behind NAT/Firewall, PushProx Overview, and Architecture and Usage Scenarios sections.

Question#2

How do you calculate the average request duration during the last 5 minutes from a histogram or summary called http_request_duration_seconds?

A. rate(http_request_duration_seconds_sum[5m]) / rate(http_request_duration_seconds_count[5m])
B. rate(http_request_duration_seconds_total[5m]) / rate(http_request_duration_second$_count[5m])
C. rate(http_request_duration_seconds_total[5m]) / rate(http_request_duration_seconds_average[5m])
D. rate(http_request_duration_seconds_sum[5m]) / rate(http_request_duration_seconds_average[5m])

Explanation:
In Prometheus, histograms and summaries expose metrics with _sum and _count suffixes to represent total accumulated values and sample counts, respectively. To compute the average request duration over a given time window (for example, 5 minutes), you divide the rate of increase of _sum by the rate of increase of _count:
\text{Average duration} =
\frac{\text{rate(http_request_duration_seconds_sum[5m])}}{\text{rate(http_request_duration_seco nds_count[5m])}}
Here,
http_request_duration_seconds_sum represents the total accumulated request time, and
http_request_duration_seconds_count represents the number of requests observed.
By dividing these rates, you obtain the average request duration per request over the specified time range.
Reference: Extracted and verified from Prometheus documentation C Querying Histograms and Summaries, PromQL Rate Function, and Metric Naming Conventions sections.

Question#3

What does the rate() function in PromQL return?

A. The total increase of a counter over a range.
B. The per-second rate of increase of a counter metric.
C. The average of all values in a vector.
D. The number of samples in a range vector.

Explanation:
The rate() function calculates the average per-second rate of increase of a counter over the specified range. It smooths out short-term fluctuations and adjusts for counter resets.
Example:
rate(http_requests_total[5m])
returns the number of requests per second averaged over the last five minutes. This function is frequently used in dashboards and alerting expressions.
Reference: Prometheus documentation C rate() Function Definition, Counter Handling in PromQL.

Question#4

Which of the following is an invalid @ modifier expression?

A. go_goroutines @ start()
B. sum(http_requests_total{method="GET"}) @ 1609746000
C. go_goroutines @ end()
D. sum(http_requests_total{method="GET"} @ 1609746000)

Explanation:
The @ modifier in PromQL allows querying data as it existed at a specific point in time rather than the evaluation time. It can be applied after a selector or an entire expression, but the syntax rules are strict.
✅ go_goroutines @ start() → Valid; queries value at the start of the evaluation range.
✅ sum(http_requests_total{method="GET"}) @ 1609746000 → Valid; applies the modifier after the full expression.
✅ go_goroutines @ end() → Valid; queries value at the end of the evaluation range.
❌ sum(http_requests_total{method="GET"} @ 1609746000) → Invalid, because the @ modifier
cannot appear inside the selector braces; it must appear after the selector or aggregation expression.
This invalid placement violates PromQL’s syntax grammar for subquery and modifier ordering.
Reference: Verified from Prometheus documentation C PromQL @ Modifier Syntax, Evaluation Modifiers, and PromQL Expression Grammar sections.

Question#5

What is metamonitoring?

A. Metamonitoring is a monitoring that covers 100% of a service.
B. Metamonitoring is the monitoring of non-IT systems.
C. Metamonitoring is the monitoring of the monitoring infrastructure.
D. Metamonitoring is monitoring social networks for end user complaints about quality of service.

Explanation:
Metamonitoring refers to monitoring the monitoring system itself―ensuring that Prometheus, Alertmanager, exporters, and dashboards are functioning properly. In other words, it’s the observability of your observability stack.
This practice helps detect issues such as:
Prometheus not scraping targets,
Alertmanager being unreachable,
Exporters not exposing data, or
Storage being full or corrupted.
Without metamonitoring, an outage in the monitoring system could go unnoticed, leaving operators blind to actual infrastructure problems. A common approach is to use a secondary Prometheus instance (or external monitoring service) to monitor the health metrics of the primary Prometheus and related components.
Reference: Verified from Prometheus documentation C Monitoring Prometheus Itself, Operational Best Practices, and Reliability of the Monitoring Infrastructure.

Exam Code: PCAQ & A: 60 Q&AsUpdated:  2025-11-01

 Get All PCA Q&As