How disk usage monitoring works for Kubernetes nodes and pods
The node filesystem, inode and image filesystem monitors and pod ephemeral storage, read from the kubelet Summary API
Applies to: Opslogix Kubernetes Management Pack (V26.11.4546.0 and later)
Last updated: November 2026 · Latest version: 26.11.4546.0
See also: Upgrade guide for 26.11.4546.0 · List of rules and monitors · Release notes
Kubernetes itself only reports the DiskPressure condition of a node, and that condition turns true when the kubelet is already evicting pods. From V26.11.4546.0 the Opslogix Kubernetes Management Pack also monitors how full the disks of the nodes are, and how much local storage each pod uses, so you are warned before the kubelet starts evicting pods.
Where the data comes from
The collector reads the kubelet Summary API of every node through the Kubernetes API server (the stats/summary path of the node proxy). It makes one call per node per interval; the node, pod and persistent volume claim metrics share the result. The values are the same ones the kubelet uses for its eviction decisions.
Monitors
| Monitor | Target | Warning | Critical | What it checks |
|---|---|---|---|---|
| Kubernetes Node Filesystem Used Percentage | Node | above 80% | 90% or more | The node root filesystem (nodefs): kubelet directory, container logs and emptyDir volumes, and on most nodes the container images. The kubelet evicts pods by default when less than 10% is available. |
| Kubernetes Node Filesystem Inodes Used Percentage | Node | above 85% | 95% or more | The inodes of the node root filesystem. A filesystem can run out of inodes while it still has free space. Windows nodes do not report inodes; the monitor stays healthy for them. |
| Kubernetes Node Image Filesystem Used Percentage | Node | above 75% | 85% or more | The filesystem the container runtime stores images on (imagefs). On most nodes this is the same disk as the root filesystem. |
| Kubernetes Pod Ephemeral Storage Used Percentage of Limit | Pod | above 80% | 95% or more | The local storage a pod uses (container writable layers, container logs and emptyDir volumes) as a percentage of its ephemeral-storage limit. The kubelet evicts a pod that exceeds its limit. Pods without a limit are not monitored. |
The monitors run every 300 seconds. Change the thresholds with an override on ThresholdLow (Warning) and ThresholdHigh (Critical), for example when your cluster uses its own eviction thresholds.
Performance collection rules
- Node: Filesystem \ Used \ Percentage, Filesystem \ Available \ Bytes, Filesystem \ Capacity \ Bytes, Filesystem \ Inodes Used \ Percentage and Image Filesystem \ Used \ Percentage.
- Pod: Ephemeral Storage \ Used \ Bytes, for all pods, also without a limit.
Requirements
- The account in the kube config needs get permission on nodes/proxy. The read-only cluster role in How to create a Kubernetes monitoring account already grants it.
- The API server must be able to reach the kubelet of each node, which is the case in a working cluster.
Collector settings
The section KubeletStats in the appsettings.json file of the collector controls the calls to the kubelet: Enabled (default true), CacheSeconds (60), RequestTimeoutSeconds (20) and MaxConcurrentRequests (8). See Kubernetes Management Pack Registry Settings.
Troubleshooting: no disk usage data
- Missing permission. Check the permission with kubectl and the kube config of the management pack: kubectl auth can-i get nodes --subresource=proxy must answer yes.
- A node is down or its kubelet does not answer. The collector skips that node, collects no data for the node and its pods, and logs a warning in the Application event log of the management server (source OpsLogix.Kubernetes.Collector) once per interval. The other nodes are not affected.
- Just after the upgrade. Restart the Microsoft Monitoring Agent on the members of the resource pool after you import the management packs; see the upgrade guide. The first sample after a workflow starts can be empty; data appears from the second interval.
- Pod ephemeral storage monitor stays healthy. Only pods with an ephemeral-storage limit are monitored. The Ephemeral Storage Used rule collects data for all pods.