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.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
bonding_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +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.go Add metrics for btrfs commit statistics (#3010) 2024-07-14 14:24:55 +02:00
btrfs_linux_test.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.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
cpu_dragonfly_test.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.go Update build (#3000) 2024-04-20 12:32:49 +02:00
cpu_linux_test.go Remove metrics of offline CPUs in CPU collector 2023-03-07 14:01:02 +01:00
cpu_netbsd.go NetBSD support for CPU collector (#2626) 2023-04-07 13:35:33 +02:00
cpu_netbsd_test.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.go collector: fix comment and remove redundant parentheses (#2691) 2023-05-17 18:04:50 +02:00
device_filter_test.go Rename netDevFilter helper 2022-05-19 10:36: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.go diskstats: ignore zram devices on linux systems by default (#2898) 2024-01-15 09:32:58 +01:00
diskstats_linux_test.go Do not panic as much in Linux collector tests (#3050) 2024-06-13 20:53:25 +02:00
diskstats_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
diskstats_openbsd_amd64.go Add diskstat include/exclude flag to all platforms 2022-06-28 08:30:01 +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.go Add logging for ethtool device include/exclude and metrics include flags (#2979) 2024-04-29 19:38:29 +02:00
ethtool_linux_test.go Do not panic as much in Linux collector tests (#3050) 2024-06-13 20:53:25 +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.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
filefd_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +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.go Revert "filesystem: fix mountTimeout not working issue (#2903)" (#2932) 2024-02-20 10:31:08 +01:00
filesystem_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
filesystem_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
helper.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
helper_test.go collector: use ByteSliceToString from golang.org/x/sys/unix 2022-05-23 15:44:16 +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.go interrupts_linux: Fix fields on aarch64 (#2631) 2023-03-10 13:02:33 +01:00
interrupts_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
interrupts_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
interrupts_openbsd_amd64.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
ipvs_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
ipvs_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02: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.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
loadavg_bsd.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
loadavg_linux.go Remove ioutil (#2438) 2022-07-27 20:59:39 +02:00
loadavg_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
loadavg_solaris.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
logind_linux.go go.mod: Update coreos/go-systemd 2022-05-04 22:19:30 +02:00
logind_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
mdadm_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
meminfo.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +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.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_netbsd.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_numa_linux.go Update go to 1.17 (#2159) 2021-10-03 13:35:24 +02:00
meminfo_numa_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
meminfo_openbsd.go ref!: convert linux meminfo implementation to use procfs lib (#3049) 2024-07-14 14:27:55 +02:00
meminfo_openbsd_amd64.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.go collector/netdev_linux.go: Fallback to 32-bit stats (#2757) 2023-08-01 15:58:53 +02:00
netdev_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
netdev_openbsd.go Drop redundant GOOS build tags if already in filename 2023-08-08 14:30:39 +02:00
netdev_openbsd_amd64.go collector/netdev_*: Add detailed interface stats 2022-07-26 13:24:20 +02:00
netisr_freebsd.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
netstat_linux.go Add TCPOFOQueue to default netstat metrics (#2867) 2023-12-08 18:24:07 +01:00
netstat_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02: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.go os_release.go: Removed caching of modtime/filename of os-release file. (#2987) 2024-04-17 21:27:47 +02:00
os_release_test.go os_release.go: Added support end parsing support. (#2982) 2024-04-03 12:23:03 +02:00
paths.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
paths_test.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
perf_linux.go Update build 2023-03-08 11:16:10 +01:00
perf_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
powersupplyclass.go Update exporter-toolkit 2023-03-07 15:18:38 +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
pressure_linux.go change irq psi url 2024-07-14 12:44:38 +02:00
processes_linux.go support thread state 2021-10-19 11:58:43 +02:00
processes_linux_test.go Update exporter-toolkit 2023-03-07 15:18:38 +01: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.go chore: fix typo in comment 2024-04-10 14:24:02 +02:00
systemd_linux_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02:00
tapestats_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
tcpstat_linux.go refactor: Use netlink for tcpstat collector 2022-04-25 10:13:06 +02:00
tcpstat_linux_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
textfile_test.go Sync build tags in *_test.go (#2767) 2023-08-15 11:38:13 +02: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.go Add clocksource metrics to time collector (#2197) 2021-11-12 11:45:31 +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
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.go Enable uname collector on NetBSD too 2022-12-31 12:02:00 +01: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
vmstat_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
watchdog.go Enable watchdog module by default; Add no data error (#2953) 2024-03-14 07:50:55 +01:00
watchdog_test.go Fix watchdog_test lint and test failures on macos. (#3003) 2024-04-22 22:34:00 +02:00
wifi_linux.go Update exporter-toolkit 2023-03-07 15:18:38 +01:00
xfrm.go Add new collector and metrics for XFRM (#2544) (#2866) 2023-12-03 17:10:59 +01:00
xfrm_test.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.go fix(zfs): add memory_available_bytes, fix dbufstats filename on Linux (#2687) 2023-05-23 11:13:48 +02:00
zfs_freebsd.go zfs: Log mib when sysctl read fails on FreeBSD 2024-04-10 12:44:05 +02:00
zfs_linux.go Revert "Add ZFS freebsd per dataset stats (#2753)" (#2925) 2024-02-14 09:13:18 +01:00
zfs_linux_test.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
zoneinfo_linux.go Add ErrorLog plumbing to promhttp 2021-06-03 10:47:41 +02:00