Skip to main content

troubleshoot-apache-pulsar

Use when diagnosing issues with Apache Pulsar: availability, latency, saturation & resource utilization, or backlog & consumer health degradation. Queries Netdata via MCP for broker process health, bookie process health, bookie journal sync latency, metadata store request latency, bookie add entry in-progress count, applies the diagnostic tree from the Netdata operator playbook, and recommends remediation.

Source facts

Repository
netdata/skills
Last source activity
April 20, 2026 at 11:00
Detected SKILL.md language
English
Stars
2
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
12 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
troubleshoot-apache-pulsar
description
Use when diagnosing issues with Apache Pulsar: availability, latency, saturation & resource utilization, or backlog & consumer health degradation. Queries Netdata via MCP for broker process health, bookie process health, bookie journal sync latency, metadata store request latency, bookie add entry in-progress count, applies the diagnostic tree from the Netdata operator playbook, and recommends remediation.
version
0.1.0
author
Netdata
license
Apache-2.0
tags
["netdata","troubleshoot","mcp","apache-pulsar"]
# Troubleshoot Apache Pulsar ## When to use this skill - Any time the user reports a Apache Pulsar service behaving outside its expected envelope (elevated errors, latency, saturation, resource exhaustion, or unexpected restarts). - An on-call engineer is paging on a Netdata alert tied to a Apache Pulsar instance and wants a structured triage path. ## Key facts - This skill wraps the Netdata operator playbook for Apache Pulsar. It does not replace the playbook; it routes a coding agent through MCP queries against the same signals the playbook relies on. - Apache Pulsar is a distributed messaging system with a **two-layer architecture** that fundamentally shapes how you monitor it. Understanding this separation is the single most important prerequisite before looking at any signal. - The playbook decomposes Apache Pulsar health into 9 signal domains: Availability, Latency, Saturation & Resource Utilization, Backlog & Consumer Health, Replication & Consistency, Resource Pressure. Each domain maps to one rule file in this skill. - Netdata observes the signals listed in the rule files via its native collectors, plus any OpenTelemetry-shipped metrics that your Apache Pulsar instrumentation adds. Both paths end at the same MCP query surface. - Netdata's pulsar collector emits 47 context(s) under `pulsar.*`. The rule files enumerate which contexts surface which domain; the Verification section below names the load-bearing ones explicitly. ## Step-by-step 1. Confirm the Apache Pulsar service is up. Query Netdata via MCP with `list_nodes` and filter by the host running the target. A missing node means the symptom is at the network or orchestrator layer, not inside the service. 2. Pull the last 15 minutes of signals for the target. Use `query_metrics` against the contexts listed in the domain rule files. Run `find_anomalous_metrics` in parallel over the same window; anomalies frame which rule file to read first. 3. Correlate with host-level signals (`system.cpu.utilization`, `system.memory.usage`, `system.disk.io_time`). Many service-level failures have a host-resource precursor. 4. Apply the remediation hinted at in the matching rule file or the operator playbook. Re-run the MCP queries from the Verification section to confirm the signals returned to expected ranges. A fix that does not move the signal back is not a fix. ### Handy MCP call templates ```text # Discover metrics from Apache Pulsar list_metrics with q="pulsar" # Pull a specific context over the last window query_metrics with context="pulsar.messages_rate", relative_window=-15m # Rank anomalies for the service or host find_anomalous_metrics with node=<host> and context_pattern="pulsar.*" # Correlate a known problem context with others find_correlated_metrics around the incident window # Show current alert state list_raised_alerts scoped to the node ``` ## Common mistakes - Treating Apache Pulsar as a generic HTTP or process health check. Apache Pulsar has specific failure archetypes (see Key facts) that generic checks miss. - Stopping at the first anomalous metric. Several archetypes produce correlated spikes; use `find_correlated_metrics` to widen the search before concluding a root cause. - Quoting percentile latency without the sample count. Low traffic plus a single slow request moves p99 by seconds. - Reading dashboards for a window shorter than the failure's fingerprint. Slow-brew failures (queue growth, bloat, memory fragmentation) need 30+ minutes of data to see the trend. - Skipping the host-level correlation. A process-level fix for a noisy-neighbour problem does not hold. - Assuming alert thresholds are tuned for your workload. Tune against observed Apache Pulsar traffic before escalating an alert configuration issue. ## Verification Run these MCP queries against the Netdata instance that sees the Apache Pulsar service. Every context listed below is a real Netdata chart name; the agent does not need to guess. ```text 1. list_metrics filtered by q="pulsar" (returns every pulsar.* context Netdata sees) 2. query_metrics with contexts=[pulsar.messages_rate, pulsar.throughput_rate, pulsar.storage_operations_rate, pulsar.subscription_msg_rate_redeliver, pulsar.replication_rate, pulsar.replication_throughput_rate] and relative_window=-30m 3. find_anomalous_metrics filtered by node=<host> and context_pattern="pulsar.*" ``` Load-bearing contexts for this service: - `pulsar.messages_rate`: Messages Rate (messages/s). Dimensions: publish, dispatch. - `pulsar.throughput_rate`: Throughput Rate (KiB/s). Dimensions: publish, dispatch. - `pulsar.storage_operations_rate`: Storage Read/Write Operations Rate (message batches/s). Dimensions: read, write. - `pulsar.subscription_msg_rate_redeliver`: Subscriptions Redelivered Message Rate (messages/s). Dimensions: redelivered. - `pulsar.replication_rate`: Replication Rate (messages/s). Dimensions: in, out. - `pulsar.replication_throughput_rate`: Replication Throughput Rate (KiB/s). Dimensions: in, out. A clean result means every context is within its expected band and the `find_anomalous_metrics` list is empty or contains only already-acknowledged items. If the fix was real, re-running the same queries 10 minutes after applying it will show a clean result. If it does not, revert and look deeper. ### When the fix does not hold If signals drift back into the anomalous range within 30 minutes of a remediation, the cause was deeper than the applied change. Typical misdiagnoses for Apache Pulsar: - Host-resource pressure masquerading as application bug. - Dependent service (DB, cache, upstream) causing a secondary symptom in the instrumented service. - Configuration change that was never reloaded (some subsystems only pick up config on full restart). Escalate by widening the query window: 2-6 hours instead of 15 minutes. Slow-moving causes are invisible at triage window sizes. ## References - [`rules/availability.md`](./rules/availability.md) - [`rules/latency.md`](./rules/latency.md) - [`rules/saturation-resource-utilization.md`](./rules/saturation-resource-utilization.md) - [`rules/backlog-consumer-health.md`](./rules/backlog-consumer-health.md) - [`rules/replication-consistency.md`](./rules/replication-consistency.md) - [`rules/resource-pressure.md`](./rules/resource-pressure.md) - [`rules/internal-state.md`](./rules/internal-state.md) - [`rules/errors.md`](./rules/errors.md) - [`rules/bookkeeper-storage-internals.md`](./rules/bookkeeper-storage-internals.md) - Netdata operator playbook: the authoritative source material this skill summarizes. - `skills/netdata-mcp-integration/` for the transport setup. - `skills/netdata-otel-setup/` if additional application signals are needed beyond what Netdata collects natively.
View on GitHub