# kubernetes/node-problem-detector

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/kubernetes-node-problem-detector).**

3,344 stars · 687 forks · Go · apache-2.0

## Links

- GitHub: https://github.com/kubernetes/node-problem-detector
- awesome-repositories: https://awesome-repositories.com/repository/kubernetes-node-problem-detector.md

## Description

Node Problem Detector is a Kubernetes-native agent that monitors node health and reports hardware failures, kernel issues, and other node-level problems to the cluster control plane. It detects problems by scanning kernel ring buffer messages for error patterns, running user-defined health check scripts, and collecting system metrics from CPU, memory, disk, and network interfaces.

The agent distinguishes between permanent and temporary problems by mapping plugin failures to either persistent node conditions visible in `kubectl describe node` or one-time node events. It supports running multiple custom plugins concurrently with configurable concurrency limits, and can execute repair commands on unhealthy node components after a cooldown period. The detector also monitors systemd service health by scanning journald logs for repeated start/stop patterns, and checks for read-only filesystems or filesystem corruption.

Beyond problem detection, the agent collects system health metrics from `/proc` files on Linux and gopsutil on Windows, exposing them as Prometheus endpoints for external scraping. It includes built-in monitoring for CPU load averages, memory usage, disk I/O operations, network interface statistics, and host uptime. The project provides container images for both Linux and Windows deployments, and creates a dedicated Kubernetes service account with cluster role bindings for node problem detection permissions.

## Tags

### DevOps & Infrastructure

- [Node Condition Reporters](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-cluster-management/security-scanning/control-plane-auditing/node-condition-reporters.md) — An agent that monitors node health and reports hardware, kernel, and systemd issues as Kubernetes conditions or events. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector-config.yaml))
- [Node Condition Definitions](https://awesome-repositories.com/f/devops-infrastructure/blockchain-nodes/node-performance-monitoring/node-condition-definitions.md) — Maps plugin failures to persistent node conditions that the cluster scheduler can act upon. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/docs/custom_plugin_monitor.md))

### Networking & Communication

- [Kubernetes Node Failure Detections](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-systems-coordination/distributed-systems-configuration/heartbeat-and-timeout-configurations/node-failure-detection/kubernetes-node-failure-detections.md) — Detecting hardware failures, kernel issues, and other node-level problems in a Kubernetes cluster and reporting them as node conditions or events.
- [Permanent Node Failure Detections](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-systems-coordination/distributed-systems-configuration/heartbeat-and-timeout-configurations/node-failure-detection/permanent-node-failure-detections.md) — Identifies unrecoverable kernel problems and marks nodes with permanent conditions for cluster action. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/kernel-monitor-filelog.json))

### Part of an Awesome List

- [Kernel Log Pattern Matchers](https://awesome-repositories.com/f/awesome-lists/devtools/regex-and-pattern-matching/regex-pattern-matching/kernel-log-pattern-matchers.md) — Scans kernel ring buffer messages with regex patterns to detect hardware and software faults.

### Development Tools & Productivity

- [Plugin-Based](https://awesome-repositories.com/f/development-tools-productivity/shell-script-execution-engines/custom-run-scripts/scheduled-script-executions/plugin-based.md) — Invokes user-defined scripts on a schedule and reports their output as node conditions or events. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/docs/custom_plugin_monitor.md))

### Operating Systems & Systems Programming

- [Hardware Failure Detectors](https://awesome-repositories.com/f/operating-systems-systems-programming/gpu-memory-diagnostics/hardware-failure-detectors.md) — Monitors kernel logs and system files to identify hardware malfunctions and reports them to the cluster. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector.yaml))

### Software Engineering & Architecture

- [Dual Condition and Event Reporting](https://awesome-repositories.com/f/software-engineering-architecture/scoped-event-handlers/entity-scoped-event-conditions/dual-condition-and-event-reporting.md) — Distinguishes between permanent node conditions and temporary node events for problem reporting.
- [Problem Detection Plugins](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures/problem-detection-plugins.md) — Runs user-defined scripts as plugins that report node problems via exit codes and structured output.
- [Plugin Concurrency Limiters](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-runners/concurrent-task-limiters/plugin-concurrency-limiters.md) — Provides configurable concurrency limits for parallel execution of custom monitoring plugins.

### System Administration & Monitoring

- [Systemd Service Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/service-and-infrastructure-management/service-infrastructure-monitoring/service-monitors/systemd-service-monitoring.md) — Scans journald logs for repeated start/stop patterns and reports conditions when restarts exceed thresholds. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/systemd-monitor-counter.json))
- [Kernel Log Exporters](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-log-exporters/kernel-log-exporters.md) — Scans kernel log files for patterns indicating issues like OOM kills and reports them as node conditions. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/kernel-monitor-filelog.json))
- [Custom Health Check Executors](https://awesome-repositories.com/f/system-administration-monitoring/health-checks/custom-health-check-executors.md) — Executes user-defined scripts or commands on each node and reports their exit status as node conditions. ([source](https://github.com/kubernetes/node-problem-detector/tree/master/docs))
- [Health Check Interval Configuration](https://awesome-repositories.com/f/system-administration-monitoring/health-checks/health-check-interval-configuration.md) — Invokes user-defined health checks at fixed intervals with configurable timeouts and cooldown periods.
- [Custom Plugin Health Monitors](https://awesome-repositories.com/f/system-administration-monitoring/health-monitoring/instance-health-monitors/microservices-health-monitoring/master-node-health-monitors/custom-plugin-health-monitors.md) — Running user-defined scripts or commands on Kubernetes nodes on a schedule to monitor custom health checks and report results.
- [Kernel Error Pattern Reporters](https://awesome-repositories.com/f/system-administration-monitoring/kernel-event-observability/kernel-error-pattern-reporters.md) — Scans kernel logs for known error patterns and surfaces them as node conditions or events. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/version.txt))
- [Kernel Ring Buffer Streams](https://awesome-repositories.com/f/system-administration-monitoring/log-streaming/kernel-ring-buffer-streams.md) — Scans kernel ring buffer messages in real time to detect hardware or software faults. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector-config.yaml))
- [Kernel Problem Reporters](https://awesome-repositories.com/f/system-administration-monitoring/log-streaming/kernel-ring-buffer-streams/kernel-problem-reporters.md) — Parses kernel ring buffer messages to detect software or driver issues and surfaces them to the cluster. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/go.mod))
- [System Metrics Collection](https://awesome-repositories.com/f/system-administration-monitoring/logging/system-metrics-collection.md) — Collects CPU, memory, disk, and network metrics from system files for node health monitoring. ([source](https://github.com/kubernetes/node-problem-detector/tree/master/pkg/systemstatsmonitor))
- [Kubernetes Node Metrics](https://awesome-repositories.com/f/system-administration-monitoring/metric-collection/kubernetes-node-metrics.md) — Collecting CPU, memory, disk, and network metrics from Kubernetes nodes and exposing them for Prometheus scraping.
- [Node Health Tracking](https://awesome-repositories.com/f/system-administration-monitoring/node-health-tracking.md) — Periodically checks node component health and reports conditions when components become unhealthy. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/health-checker-kubelet.json))
- [Prometheus System Metrics Exporters](https://awesome-repositories.com/f/system-administration-monitoring/prometheus-exporters/prometheus-based-metric-exporters/prometheus-system-metrics-exporters.md) — Exposes CPU, memory, disk, and network metrics in Prometheus format through a dedicated REST endpoint. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/go.mod))
- [Custom Script Exit-Code Monitors](https://awesome-repositories.com/f/system-administration-monitoring/telemetry-and-monitoring-agents/endpoint-monitoring-agents/exit-code-monitoring/custom-script-exit-code-monitors.md) — Executes arbitrary monitor scripts and interprets exit codes and output to detect node problems. ([source](https://github.com/kubernetes/node-problem-detector/tree/master/pkg/custompluginmonitor))
- [Node Health Metric Collectors](https://awesome-repositories.com/f/system-administration-monitoring/agent-health-monitoring/node-health-metric-collectors.md) — A daemon that collects CPU, memory, disk, and network metrics and exposes them for Prometheus scraping.
- [Temporary Node Anomaly Detections](https://awesome-repositories.com/f/system-administration-monitoring/anomaly-detection/temporary-node-anomaly-detections.md) — Emits temporary events for transient node issues like OOM kills without altering persistent conditions. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector-config.yaml))
- [CPU Performance Monitors](https://awesome-repositories.com/f/system-administration-monitoring/hardware-performance-monitoring/cpu-performance-monitors.md) — Collects CPU load averages, usage time, and process statistics at configurable intervals. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/system-stats-monitor.json))
- [Cross-Platform System Metrics Collectors](https://awesome-repositories.com/f/system-administration-monitoring/logging/system-metrics-collection/cross-platform-system-metrics-collectors.md) — Collects system metrics across Linux and Windows using platform-specific backends.
- [Disk and Swap Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors/system-usage-monitoring/system-usage-monitors/disk-and-swap-monitoring.md) — Collects disk usage, I/O operations, queue length, and weighted I/O for block devices. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/system-stats-monitor.json))
- [Network Interface Statistics Collectors](https://awesome-repositories.com/f/system-administration-monitoring/network-interface-monitors/network-interface-statistics-collectors.md) — Collects cumulative transmit and receive packet, error, and drop counts per network interface. ([source](https://github.com/kubernetes/node-problem-detector/tree/master/pkg/systemstatsmonitor))
- [Node Component Repair Tools](https://awesome-repositories.com/f/system-administration-monitoring/node-component-repair-tools.md) — Runs repair commands on unhealthy node components after a cooldown period to restore health. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/health-checker-kubelet.json))
- [Component Health Verifiers](https://awesome-repositories.com/f/system-administration-monitoring/node-health-tracking/component-health-verifiers.md) — Periodically verifying the health of node components like systemd services and reporting conditions when they become unhealthy.
- [Node-Level](https://awesome-repositories.com/f/system-administration-monitoring/resource-constraints/failure-simulations/node-level.md) — Simulate node-level failures like filesystem errors or process hangs to verify that the cluster detects and reports problems correctly. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/test/e2e/problemmaker/README.md))
- [System Memory Monitors](https://awesome-repositories.com/f/system-administration-monitoring/system-memory-monitors.md) — Collects memory usage, page cache, anonymous, dirty, and unevictable memory statistics. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/config/system-stats-monitor.json))
- [Kubernetes Windows Node Monitors](https://awesome-repositories.com/f/system-administration-monitoring/windows-server-monitoring/kubernetes-windows-node-monitors.md) — Collecting system health metrics and detecting problems on Windows Kubernetes nodes using platform-appropriate tools.
- [Windows Node Metric Collectors](https://awesome-repositories.com/f/system-administration-monitoring/windows-server-monitoring/windows-node-metric-collectors.md) — Collects CPU, memory, disk, and uptime metrics on Windows nodes using the gopsutil library instead of /proc files. ([source](https://github.com/kubernetes/node-problem-detector/tree/master/pkg/systemstatsmonitor))

### Business & Productivity Software

- [Node Event Emitters](https://awesome-repositories.com/f/business-productivity-software/polls-and-events/temporary-event-pages/node-event-emitters.md) — Generates one-time Kubernetes node events from plugin failures without persisting conditions. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/docs/custom_plugin_monitor.md))

### Security & Cryptography

- [Filesystem Corruption Detections](https://awesome-repositories.com/f/security-cryptography/security/policies/host-resource-access/file-system-access-controls/path-access-restrictions/read-only-filesystem-enforcement/filesystem-corruption-detections.md) — Checks for filesystem corruption or read-only mounts and alerts the cluster to storage issues. ([source](https://github.com/kubernetes/node-problem-detector/blob/master/deployment/node-problem-detector.yaml))
