collector: add tainted collector for /proc/sys/kernel/tainted - #3745
collector: add tainted collector for /proc/sys/kernel/tainted#3745arunsrini3082 wants to merge 5 commits into
Conversation
cc89def to
fca75e8
Compare
|
Both procfs PRs are now merged: #844 — KernelTainted() implementation No new procfs release has been cut yet, so I've temporarily pinned go.mod to the merged commit pseudo-version to unblock CI. Will update to the proper release tag once available. |
|
Built and tested in our environment. All 20 taint flags are correctly exposed: This is on a clean kernel (all flags 0). The collector is working as expected. |
| github.com/prometheus/common v0.70.0 | ||
| github.com/prometheus/exporter-toolkit v0.17.1 | ||
| github.com/prometheus/procfs v0.21.1 | ||
| github.com/prometheus/procfs v0.21.2-0.20260717070424-0cd18237af6e |
|
Blocked on a tagged procfs release for Tracking: prometheus/procfs#859 Will update |
ffe6a29 to
b26e9a2
Compare
|
@arunsrini3082 can you check failing ci? |
Only DragonFly fails, and it fails at the dependency installation step (sudo exit code 100) before any tests run. FreeBSD, OpenBSD, NetBSD, Solaris, and Darwin/MacOS all pass. This is a DragonFly VM runner issue on AnyVM.org, not related to this PR. The tainted collector has //go:build linux so it doesn't affect any BSD target anyway. |
ArthurSens
left a comment
There was a problem hiding this comment.
Looks like documentation is missing in our README, could you add it to the list?
And looks like we're still waiting for the procfs release 😬
Review feedback addressed: procfs.FS cached on collector, matching !notainted build tag, README updated for node_kernel_tainted. |
Signed-off-by: Arun S <arun.srinivasan@flipkart.com>
Signed-off-by: Arun S <arun.srinivasan@flipkart.com>
Signed-off-by: Arun S <arun.srinivasan@flipkart.com>
Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Arun S <arun.srinivasan@flipkart.com>
Store procfs.FS on the collector instead of opening it each scrape. Add matching !notainted build tag on the implementation file. Document the tainted collector and node_kernel_tainted metrics in README. Signed-off-by: Arun S <arun.srinivasan@flipkart.com>
0d9a365 to
f6a97bb
Compare
ArthurSens
left a comment
There was a problem hiding this comment.
whoops, I forgot to add the comment in the previous review
| node_kernel_tainted{bit="0",flag="P"} 0 | ||
| ... | ||
| ``` | ||
|
|
There was a problem hiding this comment.
I'm not sure about this 🤔; we don't usually specify all the collectors in the node exporter on README. Just adding to the table above is sufficient
Summary
Add a
taintedcollector that exposes kernel taint flags from/proc/sys/kernel/taintedas Prometheus metrics.This revives the idea originally proposed in #1567. The review feedback
from that PR has been addressed:
prometheus/procfslibrary (companion PR:procfs: add KernelTainted() to parse /proc/sys/kernel/tainted procfs#844)
node_kernel_tainted{bit="14", flag="L"} 1Metrics
node_kernel_tainted{bit="14", flag="L"} 0
node_kernel_tainted{bit="12", flag="O"} 1
One series per known taint bit (20 total), value 0 or 1.
Disabled by default — enable with
--collector.tainted.Dependencies
The
go.modprocfs version will be bumped before merging oncethat PR is released.
Reference
https://www.kernel.org/doc/html/latest/admin-guide/tainted-kernels.html