Monitor Node Health [page]deterministic
*Node Problem Detector* is a daemon for monitoring and reporting about a node's health. You can run Node Problem Detector as a `DaemonSet` or as a standalone daemon. Node Problem Detector collects information about node problems from various daemons and reports these conditions to the API server as Node [Condition](/docs/concepts/architecture/nodes/#condition)s or as [Event](/docs/reference/kubernetes-api/cluster-resources/event-v1)s.
To learn how to install and use Node Problem Detector, see [Node Problem Detector project documentation](https://github.com/kubernetes/node-problem-detector).
##
## Limitations
* Node Problem Detector uses the kernel log format for reporting kernel issues. To learn how to extend the kernel log format, see [Add support for another log format](#support-other-log-format).
## Enabling Node Problem Detector
Some cloud providers enable Node Problem Detector as an [Addon](#gloss:addons). You can also enable Node Problem Detector with `kubectl` or by creating an Addon DaemonSet.
### Using kubectl to enable Node Problem Detector {#using-kubectl}
`kubectl` provides the most flexible management of Node Problem Detector. You can overwrite the default configuration to fit it into your environment or to detect customized node problems. For example:
1. Create a Node Problem Detector configuration similar to `node-problem-detector.yaml`:
> Note: You should verify that the system log directory is right for your operating system distribution.
1. Start node problem detector with `kubectl`:
```shell kubectl apply -f https://k8s.io/examples/debug/node-problem-detector.yaml ```
### Using an Addon pod to enable Node Problem Detector {#using-addon-pod}
If you are using a custom cluster bootstrap solution and don't need to overwrite the default configuration, you can leverage the Addon pod to further automate the deployment.
Create `node-problem-detector.yaml`, and save the configuration in the Addon pod's directory `/etc/kubernetes/addons/node-problem-detector` on a control plane node.
## Overwrite the configuration
The [default configuration](https://github.com/kubernetes/node-problem-detector/tree/v0.8.12/config) is embedded when building the Docker image of Node Problem Detector.
However, you can use a [`ConfigMap`](/docs/tasks/configure-pod-container/configure-pod-configmap/) to overwrite the configuration:
1. Change the configuration files in `config/` 1. Create the `ConfigMap` `node-problem-detector-config`:
```shell kubectl create configmap node-problem-detector-config --from-file=config/ ```
1. Change the `node-problem-detector.yaml` to use the `ConfigMap`:
1. Recreate the Node Problem Detector with the new configuration file:
```shell # If you have a node-problem-detector running, delete before recreating kubectl delete -f https://k8s.io/examples/debug/node-problem-detector.yaml kubectl apply -f https://k8s.io/examples/debug/node-problem-detector-configmap.yaml ```
> Note: This approach only applies to a Node Problem Detector started with `kubectl`.
Overwriting a configuration is not supported if a Node Problem Detector runs as a cluster Addon. The Addon manager does not support `ConfigMap`.
## Problem Daemons
A problem daemon is a sub-daemon of the Node Problem Detector. It monitors specific kinds of node problems and reports them to the Node Problem Detector. There are several types of supported problem daemons.
- A `SystemLogMonitor` type of daemon monitors the system logs and reports problems and metrics according to predefined rules. You can customize the configurations for different log sources such as [filelog](https://github.com/kubernetes/node-problem-detector/blob/v0.8.12/config/kernel-monitor-filelog.json), [kmsg](https://github.com/kubernetes/node-problem-detector/blob/v0.8.12/config/kernel-monitor.json), [kernel](https://github.com/kubernetes/node-problem-detector/blob/v0.8.12/config/kernel-monito …(trimmed)