Node_Exporter/collector
TJ Hoplock fdaa8fc00d
ref!: convert linux meminfo implementation to use procfs lib (#3049)
* ref!: convert linux meminfo implementation to use procfs lib

Part of #2957

Prometheus' procfs lib supports collecting memory info and we're using a
new enough version of the lib that has it available, so this converts
the meminfo collector for Linux to use data from procfs lib instead. The
bits I've touched for darwin/openbsd/netbsd are with intent to preserve
the original struct implementation/backwards compatibility.

Signed-off-by: TJ Hoplock <t.hoplock@gmail.com>

* fix: meminfo debug log unsupported value

Fixes:

```
ts=2024-06-11T19:04:55.591Z caller=meminfo.go:44 level=debug collector=meminfo msg="Set node_mem" memInfo="unsupported value type"
```

Signed-off-by: TJ Hoplock <t.hoplock@gmail.com>

* fix: don't coerce nil Meminfo entries to 0, leave out if nil

Nil entries in procfs.Meminfo fields indicate that the value isn't
present on the system. Coercing those nil values to `0` introduces new
metrics on systems that should not be present and can break some
queries.

Addresses PR feedback:
https://github.com/prometheus/node_exporter/pull/3049#discussion_r1637581536
https://github.com/prometheus/node_exporter/pull/3049#discussion_r1637584482

Signed-off-by: TJ Hoplock <t.hoplock@gmail.com>

---------

Signed-off-by: TJ Hoplock <t.hoplock@gmail.com>
2024-07-14 14:27:55 +02:00
..
fixtures Add metrics for btrfs commit statistics (#3010) 2024-07-14 14:24:55 +02:00
fixtures_bindmount/proc fix issue where rootfs path strips to the empty string (#1464) 2019-09-09 17:39:24 +02:00
fixtures_hidepid/proc Add fallback for missing /proc/1/mounts (#1172) 2018-11-30 14:01:55 +01:00
utils chore: sync with latest procfs release (#3059) 2024-07-10 09:58:57 -04:00
arp_linux.go Optionally fetch ARP stats via rtnetlink instead of procfs (#2777) 2023-09-09 16:41:09 +02:00
bcache_linux.go bcache: remove cache_readaheads_totals metrics #2103 (#2583) 2023-05-20 14:13:07 +02:00
bonding_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
bonding_linux.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
boot_time_bsd.go Use SysctlTimeval for boottime collector on BSD 2021-11-15 10:50:03 +01:00
boot_time_solaris.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
btrfs_linux_test.go Add metrics for btrfs commit statistics (#3010) 2024-07-14 14:24:55 +02:00
btrfs_linux.go Add metrics for btrfs commit statistics (#3010) 2024-07-14 14:24:55 +02:00
buddyinfo.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cgroups_linux.go Cleanup cgroups collector (#2414) 2022-06-24 17:15:31 +02:00
collector.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
conntrack_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cpu_common.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cpu_darwin.go Workaround LLVM/Clang 11.0 for Darwin builds (#2200) 2021-11-09 17:52:49 +01:00
cpu_dragonfly_test.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cpu_dragonfly.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cpu_freebsd.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cpu_linux_test.go Remove metrics of offline CPUs in CPU collector 2023-03-07 14:01:02 +01:00
cpu_linux.go Update build (#3000) 2024-04-20 12:32:49 +02:00
cpu_netbsd_test.go NetBSD support for CPU collector (#2626) 2023-04-07 13:35:33 +02:00
cpu_netbsd.go NetBSD support for CPU collector (#2626) 2023-04-07 13:35:33 +02:00
cpu_openbsd.go Do not hand define struct clockinfo here. Instead use the version from (#2663) 2023-05-11 10:39:51 +02:00
cpu_solaris.go collector/cpu: s/cpu_ticks*/cpu_nsec* for solaris (#2963) 2024-05-15 09:13:32 +02:00
cpu_vulnerabilities_linux.go Add mitigation information to the linux vulnerabilities collector (#2806) 2023-12-14 13:15:27 +01:00
cpufreq_common.go feat: add support for cpu freq governor metrics 2023-03-10 18:19:33 +01:00
cpufreq_linux.go feat: add support for cpu freq governor metrics 2023-03-10 18:19:33 +01:00
cpufreq_solaris.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
device_filter_test.go Rename netDevFilter helper 2022-05-19 10:36:50 +02:00
device_filter.go collector: fix comment and remove redundant parentheses (#2691) 2023-05-17 18:04:50 +02:00
devstat_dragonfly.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
devstat_freebsd.c Add missing license headers 2017-01-05 06:18:34 +01:00
devstat_freebsd.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
devstat_freebsd.h Add missing license headers 2017-01-05 06:18:34 +01:00
diskstats_common.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
diskstats_darwin.go Add diskstat include/exclude flag to all platforms 2022-06-28 08:30:01 +02:00
diskstats_linux_test.go Do not panic as much in Linux collector tests (#3050) 2024-06-13 20:53:25 +02:00
diskstats_linux.go diskstats: ignore zram devices on linux systems by default (#2898) 2024-01-15 09:32:58 +01:00
diskstats_openbsd_amd64.go Add diskstat include/exclude flag to all platforms 2022-06-28 08:30:01 +02:00
diskstats_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
dmi.go Sanitize UTF-8 in dmi collector (#2229) 2021-12-01 11:13:43 +01:00
drbd_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
drm_linux.go Remove redundant nil check (#2206) 2021-11-15 11:23:49 +01:00
edac_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
entropy_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
ethtool_linux_test.go Do not panic as much in Linux collector tests (#3050) 2024-06-13 20:53:25 +02:00
ethtool_linux.go Add logging for ethtool device include/exclude and metrics include flags (#2979) 2024-04-29 19:38:29 +02:00
exec_bsd.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
fibrechannel_linux.go chore: sync with latest procfs release (#3059) 2024-07-10 09:58:57 -04:00
filefd_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
filefd_linux.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
filesystem_bsd.go Fix filesystem collector for OpenBSD to not print loads of zero bytes in name (#2637) 2023-05-11 10:40:38 +02:00
filesystem_common.go filesystem: surface device errors (#2923) 2024-02-18 12:04:30 +01:00
filesystem_freebsd.go collector: use ByteSliceToString from golang.org/x/sys/unix 2022-05-23 15:44:16 +02:00
filesystem_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
filesystem_linux.go Revert "filesystem: fix mountTimeout not working issue (#2903)" (#2932) 2024-02-20 10:31:08 +01:00
filesystem_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
helper_test.go collector: use ByteSliceToString from golang.org/x/sys/unix 2022-05-23 15:44:16 +02:00
helper.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
hwmon_linux.go Add include and exclude filter for sensors in hwmon collector (#3072) 2024-07-14 13:50:06 +02:00
infiniband_linux.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
interrupts_common.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
interrupts_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
interrupts_linux.go interrupts_linux: Fix fields on aarch64 (#2631) 2023-03-10 13:02:33 +01:00
interrupts_openbsd_amd64.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
interrupts_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
ipvs_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
ipvs_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
ksmd_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
kvm_bsd.c Move FreeBSD/DragonflyBSD out of meminfo add kvm. (#547) 2018-01-04 12:23:26 +01:00
kvm_bsd.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
kvm_bsd.h Move FreeBSD/DragonflyBSD out of meminfo add kvm. (#547) 2018-01-04 12:23:26 +01:00
lnstat_linux.go Fix staticcheck warnings on linux 2022-04-09 05:36:59 +00:00
loadavg_bsd.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
loadavg_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
loadavg_linux.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
loadavg_solaris.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
loadavg.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
logind_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
logind_linux.go go.mod: Update coreos/go-systemd 2022-05-04 22:19:30 +02:00
mdadm_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
meminfo_darwin.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_linux_test.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_linux.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_netbsd.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_numa_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
meminfo_numa_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
meminfo_openbsd_amd64.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_openbsd.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
memory_bsd.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
mountstats_linux.go chore: sync with latest procfs release (#3059) 2024-07-10 09:58:57 -04:00
netclass_linux.go fix: data race of NetClassCollector metrics initialization when multiple requests happen (#2995) 2024-04-19 17:15:54 +02:00
netclass_rtnl_linux.go netlink: read missing attributes from sysfs (#2669) 2023-05-25 15:10:39 +02:00
netdev_bsd.go collector/netdev_*: Add detailed interface stats 2022-07-26 13:24:20 +02:00
netdev_common.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
netdev_darwin.go collector/netdev_*: Add detailed interface stats 2022-07-26 13:24:20 +02:00
netdev_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
netdev_linux.go collector/netdev_linux.go: Fallback to 32-bit stats (#2757) 2023-08-01 15:58:53 +02:00
netdev_openbsd_amd64.go collector/netdev_*: Add detailed interface stats 2022-07-26 13:24:20 +02:00
netdev_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
netisr_freebsd.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
netstat_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
netstat_linux.go Add TCPOFOQueue to default netstat metrics (#2867) 2023-12-08 18:24:07 +01:00
network_route_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
nfs_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
nfsd_linux.go NFSd: handle new wdeleg_getattr attribute in /proc/net/rpc/nfsd (#2810) 2023-11-14 03:54:11 +01:00
ntp.go Merge pull request #2603 from prometheus/superq/deprecate_ntp 2023-03-07 17:37:19 +01:00
nvme_linux.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
os_release_test.go os_release.go: Added support end parsing support. (#2982) 2024-04-03 12:23:03 +02:00
os_release.go os_release.go: Removed caching of modtime/filename of os-release file. (#2987) 2024-04-17 21:27:47 +02:00
paths_test.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
paths.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
perf_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
perf_linux.go Update build 2023-03-08 11:16:10 +01:00
powersupplyclass_darwin.go powersupplyclass_darwin: enable builds against older macOS SDK 2022-03-23 22:41:31 -04:00
powersupplyclass_linux.go darwin powersupply collector (#1777) 2021-10-28 10:22:24 +02:00
powersupplyclass.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
pressure_linux.go change irq psi url 2024-07-14 12:44:38 +02:00
processes_linux_test.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
processes_linux.go support thread state 2021-10-19 11:58:43 +02:00
qdisc_linux.go fix(qdisc) flag naming corrected for consistency (#2782) 2023-08-21 07:48:09 +02:00
rapl_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
runit.go Use go-runit fork, mark collector as deprecated 2023-05-09 11:42:21 +02:00
schedstat_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
selinux_linux.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
slabinfo_linux.go slab-collector: add filter for slab name. (#3041) 2024-06-06 18:37:22 +02:00
sockstat_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
softirq_linux.go exposing softirq metrics (#2294) 2023-05-25 15:09:32 +02:00
softirqs_common.go exposing softirq metrics (#2294) 2023-05-25 15:09:32 +02:00
softnet_linux.go softnet: additionals metrics from softnet_data, (#2592) 2023-05-24 17:23:13 +02:00
stat_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
supervisord.go Deprecate supervisord collector 2023-05-23 18:10:42 +02:00
sysctl_bsd.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
sysctl_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
sysctl_openbsd_amd64.go skip null bytes at the end of strings 2020-11-12 23:37:57 +01:00
systemd_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
systemd_linux.go chore: fix typo in comment 2024-04-10 14:24:02 +02:00
tapestats_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
tcpstat_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
tcpstat_linux.go refactor: Use netlink for tcpstat collector 2022-04-25 10:13:06 +02:00
textfile_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
textfile.go collector/textfile: Avoid inconsistent help-texts (#2962) 2024-03-24 06:43:03 +01:00
thermal_darwin.go Handle nil CPU thermal power status on M1 (#2225) 2021-11-29 10:55:36 +01:00
thermal_zone_linux.go Fix thermal_zone collector noise 2022-12-22 12:30:20 +01:00
time_linux.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
time_other.go Add clocksource metrics to time collector (#2197) 2021-11-12 11:45:31 +01:00
time.go Add clocksource metrics to time collector (#2197) 2021-11-12 11:45:31 +01:00
timex.go chore:remove constant from function (#2884) 2024-01-29 13:09:38 +01:00
udp_queues_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
uname_bsd.go Enable uname collector on NetBSD too 2022-12-31 12:02:00 +01:00
uname_linux.go collector: use ByteSliceToString from golang.org/x/sys/unix 2022-05-23 15:44:16 +02:00
uname.go Enable uname collector on NetBSD too 2022-12-31 12:02:00 +01:00
vmstat_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
watchdog_test.go Fix watchdog_test lint and test failures on macos. (#3003) 2024-04-22 22:34:00 +02:00
watchdog.go Enable watchdog module by default; Add no data error (#2953) 2024-03-14 07:50:55 +01:00
wifi_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
xfrm_test.go Add new collector and metrics for XFRM (#2544) (#2866) 2023-12-03 17:10:59 +01:00
xfrm.go Add new collector and metrics for XFRM (#2544) (#2866) 2023-12-03 17:10:59 +01:00
xfs_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
zfs_freebsd.go zfs: Log mib when sysctl read fails on FreeBSD 2024-04-10 12:44:05 +02:00
zfs_linux_test.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
zfs_linux.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
zfs_solaris.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
zfs.go fix(zfs): add memory_available_bytes, fix dbufstats filename on Linux (#2687) 2023-05-23 11:13:48 +02:00
zoneinfo_linux.go Add ErrorLog plumbing to promhttp 2021-06-03 10:47:41 +02:00