Check kubectl-get-pods¶
Overview¶
Checks the health and status of Kubernetes Pods by running kubectl get pods and parsing the results. Prints a table listing namespace, pod name, readiness, status, restart count, pod age, and IP address. Adds performance data for each pod status (Running, Pending, Failed, Succeeded, Unknown). By default, only shows pods from the current namespace. Use --all-namespaces to check across all namespaces. The plugin also stores a temporary local SQLite database during runtime (no persistent history). Results can therefore be filtered with a custom SQL --query (e.g., by namespace, pod name, or status). See the README for more details. Pending and Failed pods can trigger a WARNING or CRITICAL state (configurable via --severity), while Unknown pods result in an UNKNOWN state. Intended for use with Nagios/Icinga to detect Kubernetes pod issues like stuck, failing, or unreachable pods.
For the --query parameter, the following columns can be used:
- namespace (TEXT)
- name (TEXT)
- ready (TEXT)
- status (TEXT)
- restarts (INT)
- age (INT)
- ip (TEXT)
Hints:
- OIDC-based login to Kubernetes is not yet supported by this plugin.
Fact Sheet¶
| Fact | Value |
|---|---|
| Check Plugin Download | https://github.com/Linuxfabrik/monitoring-plugins/tree/main/check-plugins/kubectl-get-pods |
| Check Interval Recommendation | Once a minute |
| Can be called without parameters | Yes |
| Compiled for Windows | No |
| Requirements | Command-line tool kubectl (you must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.32 client can communicate with v1.31, v1.32, and v1.33 control planes. Using the latest compatible version of kubectl helps avoid unforeseen issues. See installation). |
| Uses SQLite DBs | $TEMP/linuxfabrik-monitoring-plugins-kubectl-get-pods.db |
Help¶
usage: kubectl-get-pods [-h] [-V] [--always-ok] [--all-namespaces]
[--kubeconfig KUBECONFIG] [--query QUERY]
[--severity {warn,crit}] [--test TEST]
Checks the health and status of Kubernetes Pods by running `kubectl get pods`
and parsing the results. Prints a table listing namespace, pod name,
readiness, status, restart count, pod age, and IP address. Adds performance
data for each pod status (Running, Pending, Failed, Succeeded, Unknown). By
default, only shows pods from the current namespace. Use `--all-namespaces` to
check across all namespaces. The plugin also stores a temporary local SQLite
database during runtime (no persistent history). Results can therefore be
filtered with a custom SQL `--query` (e.g., by namespace, pod name, or
status). See the README for more details. Pending and Failed pods can trigger
a WARNING or CRITICAL state (configurable via `--severity`), while Unknown
pods result in an UNKNOWN state. Intended for use with Nagios/Icinga to detect
Kubernetes pod issues like stuck, failing, or unreachable pods.
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
--always-ok Always returns OK.
--all-namespaces If present, list the requested object(s) across all
namespaces. Namespace in current context is ignored
even if specified with `--namespace`. Default: False
--kubeconfig KUBECONFIG
Path to the kubeconfig file. Default:
/var/spool/icinga2/.kubeconfig
--query QUERY Provide the SQL `WHEN` statement part to narrow down
results. Example: `namespace = 'mynamespace' and name
like 'prod-%' and status != 'running'`. Have a look at
the README for a list of available columns. Default: 1
--severity {warn,crit}
Severity for alerting. Default: crit
--test TEST For unit tests. Needs "path-to-stdout-file,path-to-
stderr-file,expected-retc".
Usage Examples¶
./kubectl-get-pods \
--all-namespaces \
--kubeconfig /var/spool/icinga2/.kubeconfig \
--query='namespace = "mynamespace" and name like "mycontainer-%"'
Output:
NAMESPACE ! NAME ! RDY ! RSTRT ! AGE ! IP ! STATUS
------------+-------------------------------------+-----+-------+--------+------------+--------
mynamespace ! mycontainer-mariadb-555df66f6c-5z8h ! 1/1 ! 0 ! 1D 2h ! 192.0.2.11 ! Running
mynamespace ! mycontainer-postgres-775cb466bb-qkw ! 1/1 ! 0 ! 1M 11h ! 192.0.2.12 ! Running
States¶
- Depending on the
--severitygiven, returns CRIT (default) or WARN if a pod is in 'Pending' or 'Failed' state, - UNKNOWN if it is in 'Unknown' state,
- and OK in all other cases.
Perfdata / Metrics¶
| Name | Type | Description |
|---|---|---|
| failed | Number | Number of failed pods |
| pending | Number | Number of pending pods |
| running | Number | Number of running pods |
| succeeded | Number | Number of succeeded pods |
| unknown | Number | Number of unknown pods |
Credits, License¶
- Authors: Linuxfabrik GmbH, Zurich
- License: The Unlicense, see LICENSE file.