diff --git a/doc/03-monitoring-basics.md b/doc/03-monitoring-basics.md
index e534b0d01..af5285dc4 100644
--- a/doc/03-monitoring-basics.md
+++ b/doc/03-monitoring-basics.md
@@ -2135,7 +2135,7 @@ In order to find out about the command argument, call the plugin's help
or consult the README.
```
-./check_systemd.py --help
+./check_systemd --help
...
@@ -2194,7 +2194,7 @@ With the [example above](03-monitoring-basics.md#command-arguments-value),
inspect the parameter's help text.
```
-./check_systemd.py --help
+./check_systemd --help
...
diff --git a/doc/05-service-monitoring.md b/doc/05-service-monitoring.md
index 097fb1184..9f188132b 100644
--- a/doc/05-service-monitoring.md
+++ b/doc/05-service-monitoring.md
@@ -281,10 +281,10 @@ that [it works](05-service-monitoring.md#service-monitoring-plugins-it-works). T
`--help` parameter to see the actual parameters (docs might be outdated).
```
-./check_systemd.py --help
+./check_systemd --help
-usage: check_systemd.py [-h] [-c SECONDS] [-e UNIT | -u UNIT] [-v] [-V]
- [-w SECONDS]
+usage: check_systemd [-h] [-c SECONDS] [-e UNIT | -u UNIT] [-v] [-V]
+ [-w SECONDS]
...
@@ -319,7 +319,7 @@ Start with the basic plugin call without any parameters.
```
object CheckCommand "systemd" { // Plugin name without 'check_' prefix
- command = [ PluginContribDir + "/check_systemd.py" ] // Use the 'PluginContribDir' constant, see the contributed ITL commands
+ command = [ PluginContribDir + "/check_systemd" ] // Use the 'PluginContribDir' constant, see the contributed ITL commands
}
```
diff --git a/doc/10-icinga-template-library.md b/doc/10-icinga-template-library.md
index 5b2a2fd27..a4b88afee 100644
--- a/doc/10-icinga-template-library.md
+++ b/doc/10-icinga-template-library.md
@@ -3717,22 +3717,33 @@ iostat\_cwrite | **Required.** Critical threshold for KB/s writes (default: 200)
#### systemd
-The [check_systemd.py](https://github.com/Josef-Friedrich/check_systemd) plugin
-will report a degraded system to your monitoring solution. It requires only the [nagiosplugin](https://nagiosplugin.readthedocs.io/en/stable) library.
+The [check_systemd](https://github.com/Josef-Friedrich/check_systemd) plugin
+will report a degraded system to your monitoring solution.
Custom variables passed as [command parameters](03-monitoring-basics.md#command-passing-parameters):
-Name | Description
---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------
-systemd\_unit | **Optional.** Name of the systemd unit that is being tested.
-systemd\_exclude\_unit | **Optional.** Exclude a systemd unit from the checks. This option can be applied multiple times. Also supports regular expressions.
-systemd\_no\_startup\_time | **Optional.** Don’t check the startup time. Using this option the options `systemd_warning` and `systemd_critical` have no effect. (Default: `false`)
-systemd\_warning | **Optional.** Startup time in seconds to result in a warning status. (Default: `60s`)
-systemd\_critical | **Optional.** Startup time in seconds to result in a critical status. (Default: `120s`)
-systemd\_dead\_timers | **Optional.** Detect dead / inactive timers. (Default: `false`)
-systemd\_dead\_timers\_warning | **Optional.** Time ago in seconds for dead / inactive timers to trigger a warning state (by default 6 days).
-systemd\_dead\_timers\_critical | **Optional.** Time ago in seconds for dead / inactive timers to trigger a critical state (by default 7 days).
-systemd\_verbose\_level | **Optional.** Increase verbosity level (Accepted values: `1`, `2` or `3`). (Defaults to none)
+Name | Description
+---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------
+systemd\_verbose\_level | **Optional.** Increase verbosity level (Accepted values: `1`, `2` or `3`). (Defaults to none)
+systemd\_ignore\_inactive\_state | **Optional.** Ignore an inactive state on a specific unit. Only affective if used with `systemd_unit`.
+systemd\_include | **Optional.** Include systemd units to the checks, regular expressions are supported. This option can be applied multiple times.
+systemd\_unit | **Optional.** Name of the systemd unit that is being tested.
+systemd\_include\_type | **Optional.** Unit types to be tested (for example: `service`, `timer`). This option can be applied multiple times.
+systemd\_exclude\_unit | **Optional.** Exclude a systemd unit from the checks, regular expressions are supported. This option can be applied multiple times.
+systemd\_exclude\_unit\_name | **Optional.** Exclude a systemd unit from the checks. This option can be applied multiple times.
+systemd\_exclude\_type | **Optional.** Exclude a systemd unit type (for example: `service`, `timer`)
+systemd\_state | **Optional.** Specify the active state that the systemd unit must have (for example: `active`, `inactive`)
+systemd\_dead\_timers | **Optional.** Detect dead / inactive timers, see `systemd_dead_timers_{warning,critical}`. (Default `false`)
+systemd\_dead\_timers\_warning | **Optional.** Time ago in seconds for dead / inactive timers to trigger a warning state. (Default 6 days)
+systemd\_dead\_timers\_critical | **Optional.** Time ago in seconds for dead / inactive timers to trigger a critical state. (Default 7 days)
+systemd\_no\_startup\_time | **Optional.** Don't check the startup time. Using this option, the options `systemd_{warning,critical}` have no effect. (Default `false`)
+systemd\_warning | **Optional.** Startup time in seconds to result in a warning status. (Default 60 seconds)
+systemd\_critical | **Optional.** Startup time in seconds to result in a critical status. (Default 120 seconds)
+systemd\_dbus | **Optional.** Use systemd's D-Bus API instead of parsing command output. Only partially implemented!
+systemd\_cli | **Optional.** Use text output from parsing command output. (Default)
+systemd\_user | **Optional.** Also show user (systemctl --user) units.
+
+
#### yum
diff --git a/itl/plugins-contrib.d/systemd.conf b/itl/plugins-contrib.d/systemd.conf
index 4c0bbca17..2638165ab 100644
--- a/itl/plugins-contrib.d/systemd.conf
+++ b/itl/plugins-contrib.d/systemd.conf
@@ -1,42 +1,10 @@
/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
object CheckCommand "systemd" {
- command = [ PluginContribDir + "/check_systemd.py" ]
+ command = [ PluginContribDir + "/check_systemd" ]
arguments = {
- "--unit" = {
- value = "$systemd_unit$"
- description = "Name of the systemd unit that is being tested."
- }
- "--exclude" = {
- value = "$systemd_exclude_unit$"
- description = "Exclude a systemd unit from the checks. This option can be applied multiple times. Also supports regular expressions."
- repeat_key = true
- }
- "--no-startup-time" = {
- set_if = "$systemd_no_startup_time$"
- description = "Don’t check the startup time. Using this option the options `systemd_warning` and `systemd_critical` have no effect. (Default: `false`)"
- }
- "--warning" = {
- value = "$systemd_warning$"
- description = "Startup time in seconds to result in a warning status. (Default: `60s`)"
- }
- "--critical" = {
- value = "$systemd_critical$"
- description = "Startup time in seconds to result in a critical status. (Default: `120s`)"
- }
- "--dead-timers" = {
- set_if = "$systemd_dead_timers$"
- description = "Detect dead / inactive timers. (Default: `false`)"
- }
- "--dead-timers-warning" = {
- value = "$systemd_dead_timers_warning$"
- description = "Time ago in seconds for dead / inactive timers to trigger a warning state (by default 6 days)."
- }
- "--dead-timers-critical" = {
- value = "$systemd_dead_timers_critical$"
- description = "Time ago in seconds for dead / inactive timers to trigger a critical state (by default 7 days)."
- }
+ /* General options */
"-v" = {
set_if = {{ macro("$systemd_verbose_level$") == 1 }}
description = "Increase verbosity level (Accepted values: `1`, `2` or `3`). Defaults to none."
@@ -47,5 +15,85 @@ object CheckCommand "systemd" {
"-vvv" = {
set_if = {{ macro("$systemd_verbose_level$") == 3 }}
}
+
+ /* Options related to unit selection */
+ "--ignore-inactive-state" = {
+ set_if = "$systemd_ignore_inactive_state$"
+ description = "Ignore an inactive state on a specific unit. Only affective if used with `systemd_unit`."
+ }
+ "--include" = {
+ value = "$systemd_include$"
+ description = "Include systemd units to the checks, regular expressions are supported. This option can be applied multiple times."
+ repeat_key = true
+ }
+ "--unit" = {
+ value = "$systemd_unit$"
+ description = "Name of the systemd unit that is being tested."
+ }
+ "--include-type" = {
+ value = "$systemd_include_type$"
+ description = "Unit types to be tested (for example: `service`, `timer`). This option can be applied multiple times."
+ repeat_key = true
+ }
+ "--exclude" = {
+ value = "$systemd_exclude_unit$"
+ description = "Exclude a systemd unit from the checks, regular expressions are supported. This option can be applied multiple times."
+ repeat_key = true
+ }
+ "--exclude-unit" = {
+ value = "$systemd_exclude_unit_name$"
+ description = "Exclude a systemd unit from the checks. This option can be applied multiple times."
+ repeat_key = true
+ }
+ "--exclude-type" = {
+ value = "$systemd_exclude_type$"
+ description = "Exclude a systemd unit type (for example: `service`, `timer`)"
+ }
+ "--state" = {
+ value = "$systemd_state$"
+ description = "Specify the active state that the systemd unit must have (for example: `active`, `inactive`)"
+ }
+
+ /* Timers related options */
+ "--dead-timers" = {
+ set_if = "$systemd_dead_timers$"
+ description = "Detect dead / inactive timers, see `systemd_dead_timers_{warning,critical}`. (Default `false`)"
+ }
+ "--dead-timers-warning" = {
+ value = "$systemd_dead_timers_warning$"
+ description = "Time ago in seconds for dead / inactive timers to trigger a warning state. (Default 6 days)"
+ }
+ "--dead-timers-critical" = {
+ value = "$systemd_dead_timers_critical$"
+ description = "Time ago in seconds for dead / inactive timers to trigger a critical state. (Default 7 days)"
+ }
+
+ /* Startup time related options */
+ "--no-startup-time" = {
+ set_if = "$systemd_no_startup_time$"
+ description = "Don't check the startup time. Using this option, the options `systemd_{warning,critical}` have no effect. (Default `false`)"
+ }
+ "--warning" = {
+ value = "$systemd_warning$"
+ description = "Startup time in seconds to result in a warning status. (Default 60 seconds)"
+ }
+ "--critical" = {
+ value = "$systemd_critical$"
+ description = "Startup time in seconds to result in a critical status. (Default 120 seconds)"
+ }
+
+ /* Monitoring data acquisition */
+ "--dbus" = {
+ set_if = "$systemd_dbus$"
+ description = "Use systemd's D-Bus API instead of parsing command output. Only partially implemented!"
+ }
+ "--cli" = {
+ set_if = "$systemd_cli$"
+ description = "Use text output from parsing command output. (Default)"
+ }
+ "--user" = {
+ set_if = "$systemd_user$"
+ description = "Also show user (systemctl --user) units."
+ }
}
}