You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 6ede09f
Browse filesBrowse the repository at this point in the historyBrowse files
feat(redfish-system): add dedicated check for Redfish system health (#652)
Splits the Redfish monitoring into two plugins, one task each:
* redfish-system: system-level health (manufacturer, model, hostname,
processors, BIOS, power state, indicator LED, SKU, serial number)
with the rolled-up Redfish `Status` as the check state.
* redfish-drives: stays focused on drive and storage-controller
health. Drops the systems_state aggregation so a system-level
warning unrelated to storage (inlet temperature, indicator LED,
etc.) no longer flips the check to WARN while all drives are
healthy. The member line is trimmed to identification only
(manufacturer, model, hostname, SKU, serial number) without a
state label.
Both plugins align their main() section comments to the example
plugin (`# parse the command line`, `# fetch data`, `# init some
vars`, `# analyze data`, `# build the message`, `# over and out`).
Verified against a locally running DMTF Redfish-Mockup-Server
configured with System Health=Warning and all drives healthy:
redfish-drives now exits OK, redfish-system exits WARN.
Closes#652.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,7 @@ Monitoring Plugins:
52
52
* procs: add `--top N` to list the top N processes by CPU time and memory usage
53
53
* procs: add `--lengthy` for extended `--top` table output
54
54
* procs: add `--warning-cpu-percent` / `--critical-cpu-percent` for aggregated CPU usage of filtered processes
55
+
* redfish-system: checks overall system health (processors, BIOS, power state, indicator LED, hostname, SKU, serial number) reported by a Redfish-compatible server, previously bundled into `redfish-drives` ([#652](https://github.com/Linuxfabrik/monitoring-plugins/issues/652))
55
56
* scanrootkit: add 41 signatures for modern Linux rootkits, backdoors and implants (BPFDoor, Drovorub, Ebury, FontOnLake, Kaiji, Kobalos, perfctl, PUMAKIT, Reptile, Symbiote, Winnti for Linux, and more)
56
57
* scanrootkit: findings now show the year the rootkit was first publicly disclosed when known
57
58
* sensors-temperatures: add `--ignore` to filter sensors by regex ([#965](https://github.com/Linuxfabrik/monitoring-plugins/issues/965))
@@ -75,6 +76,11 @@ Assets:
75
76
Build, CI/CD:
76
77
77
78
* Bump pinned `linuxfabrik-lib` dependency from 3.0.0 to 3.2.0
79
+
* GRAFANA: expanded guide. Documents the asset layout (per-plugin YAML, shared folder, default and Icinga dashboards), keeps the pinned Grizzly version at v0.2.0 (dashboards have not been validated against later releases), updates the Service Account navigation path to current Grafana, and adds an outlook section on the planned migration to `grafanactl` (tracked in [#1062](https://github.com/Linuxfabrik/monitoring-plugins/issues/1062))
80
+
* PLUGINS-KEYCLOAK, PLUGINS-MYSQL, PLUGINS-ROCKETCHAT, PLUGINS-WILDFLY: rewritten with a unified structure (Plugins in this group, Authentication, Common parameters, Service Sets in the Icinga Director Basket). Keycloak corrects the role terminology (`query-groups` is a client role of the `master-realm` client, not a realm role of `master`; verified against Keycloak 26.6) and reflects the modern Admin Console navigation. Rocket.Chat now separates the Enterprise Edition and Community Edition paths (custom roles are EE only)
81
+
* ICINGA: rewritten around the full-basket workflow. Adds sections on what the basket ships (Host/Service Templates, Service Sets, Time Periods, Notifications, Data Lists, Datafields), tag-based service assignment, upstream-vs-fork positioning, onboarding a host, upgrade-with-`basket-compare`, and troubleshooting (PHP/MySQL size limits, UUID conflicts, non-default master zone). Contributor-facing `build-basket` details remain in CONTRIBUTING.md
82
+
* README: split the FAQ section into FAQ (concepts, design decisions, capability questions) and Troubleshooting (runtime errors); both lists sorted alphabetically. New Troubleshooting entry for plugins exiting UNKNOWN with sudo errors that points at the sudoers drop-in
83
+
* INSTALL: rewritten as a single source of truth with a per-distro TOC (Debian, RHEL, SLE, Ubuntu), Linux before Windows, recommended paths first. Package-manager, Ansible, source tarball, Git, Windows MSI, Windows ZIP and Windows-from-source paths are now all documented on one page. `repo.linuxfabrik.ch` and `download.linuxfabrik.ch` link to the docs site instead of duplicating the commands
78
84
* Windows MSI no longer depends on an installed Icinga2 agent (install path unchanged: `ProgramFiles64Folder/ICINGA2/sbin/linuxfabrik`)
79
85
80
86
@@ -172,6 +178,7 @@ Monitoring Plugins:
172
178
* notify-host-mail, notify-service-mail: Icinga logo renders inline again on hosts with long FQDNs ([#790](https://github.com/Linuxfabrik/monitoring-plugins/issues/790))
173
179
* ntp-\*: prevent `TypeError` when comparing int and str
174
180
* podman-stats: precise numeric values; aggregate perfdata includes block and network I/O totals
181
+
* redfish-drives: a system-level warning unrelated to storage (such as an inlet temperature threshold) no longer flips the check to WARN while all drives are healthy. The system-level health is covered by `redfish-system` instead ([#652](https://github.com/Linuxfabrik/monitoring-plugins/issues/652))
175
182
* rocketchat-stats: crash when reporting the user count
176
183
* scanrootkit: a single malformed signature file no longer crashes the whole check
177
184
* scanrootkit: directory-only rootkit signatures (e.g. KBeast `/usr/_h4x_`, Kaiji `/usr/bin/lib`) are now actually evaluated
Copy file name to clipboardExpand all lines: check-plugins/redfish-drives/README.md
+12-6Lines changed: 12 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,21 +3,23 @@
3
3
4
4
## Overview
5
5
6
-
Checks the state of all physical drives and storage media in a Redfish-compatible server via the Redfish API. Iterates over the Systems collection, fetches storage controllers and their attached drives, and reports health status, media type, protocol, capacity, and predicted media life left.
6
+
Checks the state of all physical drives and their storage controllers in a Redfish-compatible server via the Redfish API. Iterates over the Systems collection, fetches storage controllers and their attached drives, and reports health status, media type, protocol, capacity, and predicted media life left.
7
7
8
8
**Important Notes:**
9
9
10
10
* Tested on DELL iDRAC and DMTF Simulator
11
11
* A check takes up to 10 seconds. Increasing runtime timeout to 30 seconds is recommended.
12
12
* This check runs with both HTTP and HTTPS. It uses GET requests only.
13
13
* No additional Python Redfish modules need to be installed.
14
+
* System-level health (processors, BIOS, power, temperature, indicator LED, etc.) is deliberately not aggregated into the plugin state, so that a system-level warning unrelated to storage (such as an inlet temperature threshold) cannot mask or flip the drive status. Use `redfish-system` for system-level health monitoring.
14
15
15
16
**Data Collection:**
16
17
17
18
* Queries `/redfish/v1/Systems` to enumerate system members
18
19
* For each member, queries the Storage collection and iterates over all storage controllers and attached drives
19
20
* Uses HTTP Basic authentication if `--username` and `--password` are provided
20
21
* Only evaluates drives and controllers in "Enabled" or "Quiesced" state
22
+
* Aggregates only drive health and storage-controller health into the plugin state. The member identification line (manufacturer, model, hostname, SKU, serial number) is shown as context without a status label.
Copy file name to clipboardExpand all lines: check-plugins/redfish-drives/icingaweb2-module-director/redfish-drives.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -104,7 +104,7 @@
104
104
"tpl-service-generic"
105
105
],
106
106
"max_check_attempts": 5,
107
-
"notes": "Checks the state of all physical drives and storage media in a Redfish-compatible server via the Redfish API. Alerts when any drive reports a degraded or failed state.",
107
+
"notes": "Checks the state of all physical drives and their storage controllers in a Redfish-compatible server via the Redfish API. Alerts when any drive or storage controller reports a degraded or failed state. System-level health (processors, BIOS, power, temperature, indicator LED, etc.) is deliberately ignored by this check so that a system warning unrelated to storage does not mask the drive status; use `redfish-system` for that.",
Checks the overall system health reported by a Redfish-compatible server via the Redfish API. Iterates over the Systems collection and reports each member's identification (manufacturer, model, hostname, SKU, serial number), its compute summary (processors, BIOS version, power state, indicator LED) and its rolled-up health status.
6
+
7
+
**Important Notes:**
8
+
9
+
* Tested on DELL iDRAC and DMTF Simulator
10
+
* A check takes up to 10 seconds. Increasing runtime timeout to 30 seconds is recommended.
11
+
* This check runs with both HTTP and HTTPS. It uses GET requests only.
12
+
* No additional Python Redfish modules need to be installed.
13
+
* This check reports system-level health only. For drive and storage-controller monitoring use `redfish-drives`.
14
+
15
+
**Data Collection:**
16
+
17
+
* Queries `/redfish/v1/Systems` to enumerate system members
18
+
* For each member in "Enabled" or "Quiesced" state, reads the `Status` block (including `HealthRollup`) and the compute summary
19
+
* Uses HTTP Basic authentication if `--username` and `--password` are provided
0 commit comments