Commit graph

954 commits

Author SHA1 Message Date
Ben Kochie 7da1321761
Release 1.4.0 (#2478)
* [CHANGE] Merge metrics descriptions in textfile collector #2475
* [FEATURE] [node-mixin] Add darwin dashboard to mixin #2351
* [FEATURE] Add "isolated" metric on cpu collector on linux #2251
* [FEATURE] Add cgroup summary collector #2408
* [FEATURE] Add selinux collector #2205
* [FEATURE] Add slab info collector #2376
* [FEATURE] Add sysctl collector #2425
* [FEATURE] Also track the CPU Spin time for OpenBSD systems #1971
* [FEATURE] Add support for MacOS version #2471
* [ENHANCEMENT] [node-mixin] Add missing selectors #2426
* [ENHANCEMENT] [node-mixin] Change current datasource to grafana's default #2281
* [ENHANCEMENT] [node-mixin] Change disk graph to disk table #2364
* [ENHANCEMENT] [node-mixin] Change io time units to %util #2375
* [ENHANCEMENT] Ad user_wired_bytes and laundry_bytes on *bsd #2266
* [ENHANCEMENT] Add additional vm_stat memory metrics for darwin #2240
* [ENHANCEMENT] Add device filter flags to arp collector #2254
* [ENHANCEMENT] Add diskstats include and exclude device flags #2417
* [ENHANCEMENT] Add node_softirqs_total metric #2221
* [ENHANCEMENT] Add rapl zone name label option #2401
* [ENHANCEMENT] Add slabinfo collector #1799
* [ENHANCEMENT] Allow user to select port on NTP server to query #2270
* [ENHANCEMENT] collector/diskstats: Add labels and metrics from udev #2404
* [ENHANCEMENT] Enable builds against older macOS SDK #2327
* [ENHANCEMENT] qdisk-linux: Add exclude and include flags for interface name #2432
* [ENHANCEMENT] systemd: Expose systemd minor version #2282
* [ENHANCEMENT] Use netlink for tcpstat collector #2322
* [ENHANCEMENT] Use netlink to get netdev stats #2074
* [ENHANCEMENT] Add additional perf counters for stalled frontend/backend cycles #2191
* [ENHANCEMENT] Add btrfs device error stats #2193
* [BUGFIX] [node-mixin] Fix fsSpaceAvailableCriticalThreshold and fsSpaceAvailableWarning #2352
* [BUGFIX] Fix concurrency issue in ethtool collector #2289
* [BUGFIX] Fix concurrency issue in netdev collector #2267
* [BUGFIX] Fix diskstat reads and write metrics for disks with different sector sizes #2311
* [BUGFIX] Fix iostat on macos broken by deprecation warning #2292
* [BUGFIX] Fix NodeFileDescriptorLimit alerts #2340
* [BUGFIX] Sanitize rapl zone names #2299
* [BUGFIX] Add file descriptor close safely in test #2447
* [BUGFIX] Fix race condition in os_release.go #2454
* [BUGFIX] Skip ZFS IO metrics if their paths are missing #2451

Signed-off-by: Ben Kochie <superq@gmail.com>

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-09-26 14:30:51 +02:00
Marcus Cobden 135710d8b5
Add btrfs device error stats (#2193)
* Improve metrics filesystem scanning logic
* Makes ioctl syscalls to load the device error stats.
* Adds filesystem mountpoint labels to existing metrics for ease of use.

Signed-off-by: Marcus Cobden <leth@users.noreply.github.com>
2022-09-24 08:25:15 +02:00
tnextday d7e89e769d
Skip zfs iostats (#2451)
skip over the zfs IO metrics if their paths are missing

Signed-off-by: tnextday <fw2k4@163.com>

Signed-off-by: tnextday <fw2k4@163.com>
2022-09-22 19:32:31 +02:00
Guillaume E 863f3ac54c
Merge metrics descriptions in textfile collector (#2475)
The textfile collector will now provide a unified metric description
(that will look like "Metric read from file/a.prom, file/b.prom")
for metrics collected accross several text-files that don't already
have a description.

Also change the error handling in the textfile collector tests to
ContinueOnError to better mirror the real-life use-case.

Signed-off-by: Guillaume Espanel <guillaume.espanel.ext@ovhcloud.com>

Signed-off-by: Guillaume Espanel <guillaume.espanel.ext@ovhcloud.com>
2022-09-20 12:49:21 +02:00
sfreydin 31f9aefe2f
feat: add support macos version (#2471)
Signed-off-by: Serhii Freidin <sfreydin@macpaw.com>

Signed-off-by: Serhii Freidin <sfreydin@macpaw.com>
2022-09-16 13:13:06 +02:00
Robin Nabel 8755e852fa Wrap accesses of c.osFilename and c.osMtime in
mutex to prevent race condition.

Signed-off-by: Robin Nabel <rnabel@ucdavis.edu>
2022-09-06 11:37:05 +02:00
Ben Kochie 49db7c81e1
Fixup codespell (#2455)
* Fix some mistakes
* Switch to an ignore file.

Signed-off-by: Ben Kochie <superq@gmail.com>

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-09-02 10:49:47 +02:00
Cosrider 46748fd229 add file descriptor close safely in test
Signed-off-by: Cosrider <cosrider7@gmail.com>
2022-08-22 16:01:02 +02:00
Daniel Hodges b43db0de6e
Add additional perf counters for stalled frontend/backend cycles (#2191)
* Add stalled frontend/backend cycles counters for perf collector

Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>

* Update collector/perf_linux.go

Co-authored-by: Ben Kochie <superq@gmail.com>
Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>

* Update collector/perf_linux.go

Co-authored-by: Ben Kochie <superq@gmail.com>
Signed-off-by: Daniel Hodges <hodges.daniel.scott@gmail.com>

Co-authored-by: Ben Kochie <superq@gmail.com>
2022-08-02 14:42:48 +02:00
inosato 9ed32666cc
Remove ioutil (#2438)
Signed-off-by: inosato <si17_21@yahoo.co.jp>
2022-07-27 20:59:39 +02:00
Andrew Rowson aa1adc7b11
Allow user to select port on NTP server to query (#2270)
* Allow user to select port on NTP server to query

Some people (me!) run NTP servers on non-privileged ports. The `github.com/beevik/ntp` package allows overriding the port, so this change just adds a flag `collector.ntp.server-port` (defaults to 123) and then passes that value through to the query via the `QueryOptions`.

Signed-off-by: Andrew Rowson <github@growse.com>
2022-07-27 15:41:59 +02:00
Ben Kochie 8a688e8903
Merge pull request #2433 from prometheus/superq/fixup_openbsd_date
Fix up copyright date change
2022-07-27 14:30:02 +02:00
binjip978 c38e1e27ca qdisk-linux: Add exclude and include flags for interface name
Signed-off-by: binjip978 <pdp.eleven11@gmail.com>
Signed-off-by: Johannes 'fish' Ziemke <github@freigeist.org>
2022-07-27 14:15:08 +02:00
Ben Kochie dffe507aad
Fix up copyright date change
Return the copyright date in `collector/cpu_openbsd.go` to the original
value.

Minor change revert on https://github.com/prometheus/node_exporter/pull/1971

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-07-27 14:11:01 +02:00
Ben Kochie 0b82f402d0
Merge pull request #1971 from cjeker/openbsd_spin_time
Also track the CPU Spin time for OpenBSD systems.
2022-07-27 14:10:31 +02:00
Ben Kochie 88a031567f
Merge pull request #2074 from BenoitKnecht/netdev-linux-netlink
collector/netdev_linux.go: Use netlink to get stats
2022-07-27 13:47:01 +02:00
Benoît Knecht b25273fac0 collector/netdev_*: Add detailed interface stats
On Linux, we get more detailed interface statistics from netlink than we did
from `/proc/net/dev`.

This commit adds a new flag (`--collector.netdev.enable-detailed-metrics`) to
expose those statistics under new (incompatible) metric names. When enabled,
the metric names are also changed on Darwin and BSD platforms to keep
everything consistent, but it doesn't provide more detailed statistics on those
platforms.

The old metrics can be derived from the new ones using the following rules
([dev_seq_printf_stats]):

- `receive_errs`      = `receive_errors`
- `receive_drop`      = `receive_dropped` + `receive_missed_errors`
- `receive_fifo`      = `receive_fifo_errors`
- `receive_frame`     = `receive_length_errors` + `receive_over_errors` + `receive_crc_errors` + `receive_frame_errors`
- `receive_multicast` = `multicast`
- `transmit_errs`     = `transmit_errors`
- `transmit_drop`     = `transmit_dropped`
- `transmit_fifo`     = `transmit_fifo_errors`
- `transmit_colls`    = `collisions`
- `transmit_carrier`  = `transmit_aborted_errors` + `transmit_carrier_errors` + `transmit_heartbeat_errors` + `transmit_window_errors`

[dev_seq_printf_stats]: https://github.com/torvalds/linux/blob/master/net/core/net-procfs.c#L75-L97

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-26 13:24:20 +02:00
Benoît Knecht 4851993a63 collector/netdev_linux_test.go: Add compatibility tests
To prepare for the introduction of new metric names, add tests for the legacy
metric names and values. This will make it easier to ensure that the code that
converts the new metrics to the old ones (for compatibility) behaves correctly.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-26 13:24:20 +02:00
Benoît Knecht a71d0bddc8 end-to-end-test.sh: Fix netdev metrics
Since netdev metrics are now read from netlink instead of `/proc/net/dev`, we
can't easily spoof them for the end-to-end tests by reading a fixture file in
place of `/proc/net/dev`.

Therefore, we only get metrics for `lo` and ignore those that would return
unpredictable values (i.e. the byte and packet counters).

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-26 13:24:20 +02:00
Benoît Knecht f23a956c4f collector/netdev_linux.go: Use netlink to get stats
Instead of parsing `/proc/net/dev` to get network interface statistics, get
them from a netlink call.

Internally, both come from the [rtnl_link_stats64] struct, but with
`/proc/net/dev`, some of the values are aggregated together in
[dev_seq_printf_stats], so we get less information out of them.

This commit maintains compatibility by aggregating those stats back into the
same metrics.

[rtnl_link_stats64]:    https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_link.h#L42-L246
[dev_seq_printf_stats]: https://github.com/torvalds/linux/blob/master/net/core/net-procfs.c#L75-L97

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-26 13:09:58 +02:00
DavidVentura 6477a197da adjust expected output for 64k file
Signed-off-by: DavidVentura <davidventura27@gmail.com>
2022-07-26 12:25:23 +02:00
david c2085cf8ca flip branches for early return
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 75c05f3d97 remove error from signature; update doc for function
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 840d32622f check for nil isolatedCpus before calling updateIsolated
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 5340d1ec37 add debug log for not existent file
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david c05af934af warn if isolcpus cannot be read and default to an empty slice
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 9ea9a5f029 only publish metrics for isolated cpus
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 698670bb6e add fixture & e2e output
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 5d68d5b9ad move logic to procfs; create a new metric for isolation
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
david 512e086dec Implement #2250: Add "isolated" label on cpu collector on linux
Signed-off-by: david <davidventura27@gmail.com>
2022-07-26 11:21:08 +02:00
François Charlier 5a2c83d0f9 memory_bsd: add user_wired_bytes & laundry_bytes
These two memory classes have been here for a while now in FreeBSD,
adding them allows having information for all memory classes.

Signed-off-by: François Charlier <fcharlier@ploup.net>
2022-07-25 18:49:56 +02:00
Johannes 'fish' Ziemke d962e48ca2 Add sysctl collector
Signed-off-by: Johannes Ziemke <github@5pi.de>
2022-07-25 18:27:48 +02:00
Johannes Ziemke f4e85bef0e Fix openbsd syscalls
Apparently these are not int8 slices anymore

Signed-off-by: Johannes Ziemke <github@5pi.de>
2022-07-25 18:27:48 +02:00
Benoît Knecht 690efa61e8 collector/diskstats: Ignore udev when directory unreadable
Log a single error message when the udev data directory (`/run/udev/data` by
default) is unreadable, and then don't try to get device properties out of it.

Also lower the log level from error to debug when we can't parse the udev files
properly, since these messages would be sent every time the node exporter gets
scraped.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Benoît Knecht 9ec7d6ba3c collector/diskstats: Only get device properties from udev
When parsing udev data, skip lines that don't start with `E:`.

Lines prefixed with `E:` represent device properties, as documented in
udevadm(8).

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Benoît Knecht 296aa35dd2 end-to-end-test.sh: Use udev fixture and update output
Set the `--path.udev.data` flag to point to the udev fixture, and update the
output fixture with

```console
$ ./end-to-end-test.sh -u
```

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Benoît Knecht 9b5d55e511 collector/diskstats: Add fixtures for udev data
Now that we read some data from `/run/udev/data`, add the corresponding
fixtures and update the expected test results accordingly.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Benoît Knecht 833216dc9e collector: Make udev data path optional
Instead of hard-coding the path to `/run/udev/data`, intoduce a
`--path.udev.data` flag that defaults to that value.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Benoît Knecht 75ceda8bb2 collector/diskstats: Don't use functions from Go 1.18
Since we need to support Go 1.17, don't use `strings.Cut()` which was
introduced in Go 1.18.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Benoît Knecht a997b6096d collector/diskstats: Add labels and metrics from udev
Add labels to the `node_disk_info` metric extracted from udev, such as `model`,
`path`, `revision`, `serial` and `wwn`.

Also add a few metrics related to filesystem and device mapper, which are also
extracted from udev information.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
2022-07-06 12:30:50 +02:00
Nobuhiro MIKI 3ed95908d6 collector: add slab info
Co-authored-by: Ben Kochie <superq@gmail.com>
Signed-off-by: Nobuhiro MIKI <nmiki@yahoo-corp.jp>
2022-07-06 12:18:27 +02:00
Ben Kochie 02f5005ac8
Add diskstat include/exclude flag to all platforms
Refactor diskstats collector include/exclude to work on all platforms.
* Fix up default ignored devices.

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-06-28 08:30:01 +02:00
rushilenekar20 8fcc6320a2
Add diskstats include and exclude device flags
Use standard include/exclude pattern for device include/exclude in the
diskstats collector.

Signed-off-by: Ben Kochie <superq@gmail.com>
Co-authored-by: rushilenekar20 <rushilenekar20@gmail.com>
2022-06-28 07:48:21 +02:00
Jonathan Davies 88f1811eb1
Add selinux collector (#2205)
Add selinux collector

Signed-off-by: Jonathan Davies <jpds@protonmail.com>
2022-06-28 05:54:05 +02:00
Ben Kochie d2b8ee8f20
Add rapl zone label option (#2401)
Add an optional flag to set the RAPL zone as a label, instead of as part
of the metric name.

Fixes: https://github.com/prometheus/node_exporter/issues/2299

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-06-27 23:09:32 +02:00
dependabot[bot] b99f933713
Bump github.com/prometheus/client_golang from 1.12.1 to 1.12.2 (#2411)
* Bump github.com/prometheus/client_golang from 1.12.1 to 1.12.2

Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.12.1 to 1.12.2.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.12.1...v1.12.2)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update fixtures for client_golang 1.12.2.

Signed-off-by: Ben Kochie <superq@gmail.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ben Kochie <superq@gmail.com>
2022-06-26 11:33:15 +02:00
Ben Kochie 59c146e57d
Update end-to-end test for aarch64 (#2415)
Fix up handling of CPU info collector on non-x86_64 systems due to
fixtures containing `/proc/cpuinfo` from x86_64.
* Update e2e 64k page test fixture from an arm64 system.
* Enable ARM testing in CircleCI.

Fixes: https://github.com/prometheus/node_exporter/issues/1959

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-06-26 09:41:21 +02:00
Ben Kochie a516d4de4a
Cleanup cgroups collector (#2414)
* Correctly name collector file.
* Fix cgroup summary type as gauge.
* Use a boolean metric rather than a label for enabled.

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-06-24 17:15:31 +02:00
Kobe Biello 45c75f1dbc
Add cgroup summary collector (#2408)
* add cgroups summary collector

Signed-off-by: biello <bellusa@qq.com>
Co-authored-by: bielu <bielu@zuoyebang.com>
2022-06-24 12:05:13 +02:00
Ben Kochie 3999866a36
Merge pull request #2368 from mrueg/update-go-systemd
go.mod: Update coreos/go-systemd
2022-06-05 11:20:46 +02:00
Ben Kochie ea85bfcc23
Merge pull request #2378 from prometheus/superq/devfilter
Rename netDevFilter helper
2022-06-05 10:01:50 +02:00
Ben Kochie e22382c5ec
Merge pull request #2372 from aneagoe/master
rapl_collector: fix issue with invalid metric name (#2299)
2022-05-31 21:42:50 +02:00
Tobias Klauser a8ebe3519e
collector: use ByteSliceToString from golang.org/x/sys/unix
Use unix.ByteSliceToString to convert Utsname []byte fields to strings.

This also allows to drop the bytesToString helper which serves the same
purpose and matches ByteSliceToString's implementation.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2022-05-23 15:44:16 +02:00
Ben Kochie 1b6aaeb2e8
Rename netDevFilter helper
Rename the network device filter to a more generic device filter.

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-05-19 10:36:50 +02:00
Andrei Neagoe 0e320e725b rapl_collector: fix issue with invalid metric name (#2299)
Signed-off-by: Andrei Neagoe <3854672+aneagoe@users.noreply.github.com>
2022-05-09 15:42:46 +02:00
Manuel Rüger 21f9ce2c49 go.mod: Update coreos/go-systemd
Signed-off-by: Manuel Rüger <manuel@rueg.eu>
2022-05-04 22:19:30 +02:00
Fionera 9ece38fca9 refactor: Use netlink for tcpstat collector
Signed-off-by: Tim Windelschmidt <t.windelschmidt@babiel.com>
2022-04-25 10:13:06 +02:00
binjip978 e5f384dfe6 Fix staticcheck warnings on linux
Signed-off-by: binjip978 <pdp.eleven11@gmail.com>
2022-04-09 05:36:59 +00:00
Ben Kochie b52bf958f8
Merge pull request #2327 from pjjw/pjjw/powersupplyclass-darwin-old-sdk-fixes
powersupplyclass_darwin: extra includes to build against older macOS SDK
2022-03-30 12:08:52 +02:00
Ben Kochie 9155971e07
Update Go modues
Update to latest releases.
* Fix up perf collector syntax.

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-03-30 11:47:09 +02:00
Peter Woodman 2370cccc1f
powersupplyclass_darwin: enable builds against older macOS SDK
This is necessary to build on darwin using nix, as nix-darwin uses an
older macOS SDK, built from Apple's open source releases.

Signed-off-by: Peter Woodman <peter@shortbus.org>
2022-03-23 22:41:31 -04:00
Ben Kochie 9aae303a46
Merge pull request #2289 from tanguyfalconnet/ethtool-lock
ethtool_linux: add mutex around entries access
2022-03-22 04:34:19 -07:00
Ben Kochie 086fdfed24
Merge pull request #2267 from bison/netdev-lock
netdev_common: Add mutex around metricDescs access
2022-03-22 04:27:37 -07:00
W. Andrew Denton 402a00932d Add a reference to the Linux kernel's documentation for block stat.
Signed-off-by: W. Andrew Denton <git@flying-snail.net>
2022-03-22 11:36:00 +01:00
W. Andrew Denton 84ce3a0103 diskstats_linux: always scale reads and writes by 512 bytes, not by device units.
Signed-off-by: W. Andrew Denton <git@flying-snail.net>
2022-03-22 11:36:00 +01:00
Brad Ison cb7b5a755b
netdev_common: Add mutex around metricDescs access
In certain instances on heavily loaded nodes with many network
devices, there may be concurrent access to the netdev collector's
`metricDescs` map, resulting in a panic.  This adds a mutex to prevent
concurrent reads and writes to the map.

Signed-off-by: Brad Ison <bison@xvdf.io>
2022-03-16 11:46:24 +01:00
Ben Kochie 5c0e4d61c8
Add systemd version as label string.
Signed-off-by: Ben Kochie <superq@gmail.com>
2022-02-17 15:39:00 +01:00
t-falconnet 5c8407b772 ethtool-linux: fix entry function
Signed-off-by: t-falconnet <tfalconnet.externe@bedrockstreaming.com>
2022-02-11 17:06:53 +01:00
t-falconnet db87173be0 ethtool-linux: split between create and show entry
Signed-off-by: t-falconnet <tfalconnet.externe@bedrockstreaming.com>
2022-02-11 17:04:33 +01:00
t-falconnet b0708e4c47 ethtool-linux: add remaining unlocked access to entries
Signed-off-by: t-falconnet <tfalconnet.externe@bedrockstreaming.com>
2022-02-11 16:55:26 +01:00
t-falconnet 642f64b701 ethtool_linux: fix entry function
Signed-off-by: t-falconnet <tfalconnet.externe@bedrockstreaming.com>
2022-02-11 16:44:43 +01:00
t-falconnet 4426962ec8 ethtool_linux: add mutex around entries access
Signed-off-by: t-falconnet <tfalconnet.externe@bedrockstreaming.com>
2022-02-11 16:44:43 +01:00
Ben Kochie 5981bbe638
Refactor systemd version
Move the systemd version function to an exporter method. This way we can
update the Verison information at every scrape, in case the underlying
version changes.

Signed-off-by: Ben Kochie <superq@gmail.com>
2022-02-06 15:37:58 +01:00
Joe Groocock 64c4c39132
systemd: Expose systemd minor version
systemd patch versions are as important as the major version number;
they indicate security or bug fixes or other behavioural changes between
versions.

Use float64 over float32 as the rounding error with float32 rendered
250.3 as 250.3000030517578 in my testing.

Signed-off-by: Joe Groocock <jgroocock@cloudflare.com>
Signed-off-by: Joe Groocock <me@frebib.net>
2022-02-06 14:01:45 +00:00
Robbie Lankford 4f27a4fd8e add additional vm_stat memory metrics for darwin
Signed-off-by: Robbie Lankford <robert.lankford@grafana.com>
2022-01-27 11:34:07 +01:00
Lauri Tirkkonen 996563f972 filesystem_linux: exclude mounts under /var/lib/containers/storage
analogous to the /var/lib/docker exclude added in
https://github.com/prometheus/node_exporter/pull/814

podman rootful containers mount eg. shm filesystems at
/var/lib/containers/storage/*-containers/*/userdata/shm. these should be
treated like things under /var/lib/docker by default.

Signed-off-by: Lauri Tirkkonen <lauri@hacktheplanet.fi>
2022-01-03 16:32:37 +01:00
Ben Kochie eecc2b1dea
Add device filter flags to arp collector
Allow filtering APR entries based on device. Useful for ignoring
entries for network namespaces (containers).

Signed-off-by: Ben Kochie <superq@gmail.com>
2021-12-16 15:41:10 +01:00
heyitao 7dbf358915 delete duplicate items
Signed-off-by: heyitao <linuxgcc@163.com>
2021-12-09 11:50:10 +01:00
Lapo Luchini 3136901a74
Ignore filesystems flagged as MNT_IGNORE. (#2227)
* Ignore filesystems flagges as MNT_IGNORE.
Closes #2152.

Signed-off-by: Lapo Luchini <lapo@lapo.it>
2021-12-01 11:21:31 +01:00
Ben Kochie 1d5afd05b5
Sanitize UTF-8 in dmi collector (#2229)
Replace invalid UTF-8 chars with "�" string.

Fixes: https://github.com/prometheus/node_exporter/issues/2228

Signed-off-by: Ben Kochie <superq@gmail.com>
2021-12-01 11:13:43 +01:00
Jacob Vosmaer 5c8d162ca6
Add node_softirqs_total metric (#2221)
This adds a new Linux metric, node_softirqs_total, which corresponds
to the 'softirq' line in /proc/stat. This metric is disabled by
default and it can be enabled with '--collector.stat.softirq'.

Signed-off-by: Jacob Vosmaer <jacob@gitlab.com>
2021-12-01 09:55:13 +01:00
Matt Oshry 60a2668788
Handle nil CPU thermal power status on M1 (#2225)
Signed-off-by: Matt Oshry <matto@spatialinc.com>
2021-11-29 10:55:36 +01:00
Claudio Jeker 2cf3db8859 Also track the CPU Spin time for OpenBSD systems.
Use the non-cgo version for all openbsd architectures.
The old code only pulled some defines from header files. Just add them
as enumerations in native go. Also be careful at what the SysctlRaw returns.

Implement a way that supports both recent and old pre-6.4 OpenBSD systems.
With go-1.16 OpenBSD binaries will link to libc and because of this binaries
built on OpenBSD 6.9-current do not run on OpenBSD 6.3. OpenBSD 6.3 is also
not supported for more then 2 years. So maybe the compat code is not needed.
Still validation object length before doing an unsafe pointer conversion
is probably reasonable but I'm no golang expert.

Signed-off-by: Claudio Jeker <claudio@openbsd.org>
2021-11-26 12:15:45 +01:00
Martin Kennelly 4065902fe5
Add TCPTimeouts to netstat default filter (#2189)
TCP timeouts count is a useful signal to show
abnormal network performance and is another
signal to aid debugging. This metric can be
used to generate proactive alerts for host
network namespace workloads.

Signed-off-by: Martin Kennelly <mkennell@redhat.com>
2021-11-18 09:34:55 +01:00
Benjamin Drung f5ae31a84c
Disable lnstat collector by default (#2188)
The new `lnstat` collector produces a high number of metrics, per-cpu,
and results in approximately double the number of metrics previously
scraped. For example, a typical server with 64 cores produces 3832
lnstat metrics compared to 4147 metrics for the remaining collectors.

Therefore disable the `lnstat` collector by default.

Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
2021-11-18 09:33:34 +01:00
Park Beomsu c861ba93aa
Remove redundant nil check (#2206)
Signed-off-by: computerphilosopher <bspark@jam2in.com>
2021-11-15 11:23:49 +01:00
Benjamin Drung d85cbaa17c
ethtool: Prevent duplicate metric names (#2187)
Sanitizing the metric names can lead to duplicate metric names:

```
caller=level.go:63 level=error caller="error gathering metrics: [from Gatherer #2] collected metric \"node_ethtool_giant_hdr\" { label:<name:\"device\" value:\"ens192\" > untyped:<value:0" msg=" > } was collected before with the same name and label values"
```

Generate a map from the sanitized metric names to the metric names from
ethtool. In case of duplicate sanitized metric names drop both metrics,
because it is unknown which one to take.

Fixes: https://github.com/prometheus/node_exporter/issues/2185
Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
2021-11-15 11:22:36 +01:00
Tobias Klauser 58ab0144af Use SysctlTimeval for boottime collector on BSD
Use SysctlTimeval from the golang.org/x/sys/unix package to
simplify the implementation of the boottime collector for the BSDs and
allows to build it without cgo.

Tested on macOS 11.6, FreeBSD 13 and OpenBSD 7.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2021-11-15 10:50:03 +01:00
Johannes 'fish' Ziemke 85e20238e7
Add clocksource metrics to time collector (#2197)
* Add clocksource metrics to time collector

This closes #1336

Signed-off-by: Johannes 'fish' Ziemke <github@freigeist.org>
2021-11-12 11:45:31 +01:00
Ben Kochie fda358a1ec
Workaround LLVM/Clang 11.0 for Darwin builds (#2200)
LLVM/Clang 11.0 adds a `-Wundef-prefix=TARGET_OS_` build flag which
breaks this build flag.

Signed-off-by: Ben Kochie <superq@gmail.com>
2021-11-09 17:52:49 +01:00
Benjamin Drung 2a28266852
ethtool: Add test case with leading spaces (#2186)
Add test case for ethtool metrics with leading spaces reported in #2185:

```
$ ethtool -S
NIC statistics:
     Tx Queue#: 0
       TSO pkts tx: 0
       TSO bytes tx: 0
       ucast pkts tx: 20487
       ucast bytes tx: 1908107
       mcast pkts tx: 83
       mcast bytes tx: 5906
       bcast pkts tx: 4
       bcast bytes tx: 168
       pkts tx err: 0
       pkts tx discard: 0
       drv dropped tx total: 0
          too many frags: 0
          giant hdr: 0
          hdr err: 0
          tso: 0
       ring full: 0
       pkts linearized: 0
       hdr cloned: 0
       giant hdr: 0
     Rx Queue#: 0
       LRO pkts rx: 0
       LRO byte rx: 0
       ucast pkts rx: 25086
       ucast bytes rx: 2404103
       mcast pkts rx: 0
       mcast bytes rx: 0
       bcast pkts rx: 0
       bcast bytes rx: 0
       pkts rx OOB: 0
       pkts rx err: 0
       drv dropped rx total: 0
          err: 0
          fcs: 0
       rx buf alloc fail: 0
     tx timeout count: 0
```

Bug: https://github.com/prometheus/node_exporter/issues/2185
Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
2021-10-29 10:55:39 +02:00
Benjamin Drung 0dc82eac13
Correctly disable ZFS for test cases (#2182)
Disable `collector/zfs_linux_test.go` in case `!nozfs` is set to
completely disable ZFS.

Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
2021-10-28 15:27:15 +02:00
Alessio Caiazza 6523fdfc4b
darwin powersupply collector (#1777)
* Extract powersupply linux code from collector common file.
* Add Darwin powersupply collector.

Signed-off-by: Alessio Caiazza <nolith@abisso.org>
2021-10-28 10:22:24 +02:00
Alessio Caiazza ee17ba0fc0
Fix imports when building on macos (#2180)
Signed-off-by: Alessio Caiazza <nolith@abisso.org>
2021-10-27 16:56:36 +02:00
STRRL df7ea981f7
feat: new collector about thermal conditions on macos (#2032)
* feat: new collector about thermal conditions on macos

Signed-off-by: STRRL <str_ruiling@outlook.com>
2021-10-27 14:05:57 +02:00
Benjamin Drung 9def2f9222
Add DMI collector (#2131)
Add a DMI collector to expose the Desktop Management Interface (DMI)
info from `/sys/class/dmi/id/`. This will expose information about the
BIOS, mainboard, chassis, and product.

Closes: https://github.com/prometheus/node_exporter/issues/303
Signed-off-by: Benjamin Drung <benjamin.drung@ionos.com>
2021-10-27 13:56:37 +02:00
ml 094ee24ad7
Ignore mountpoints under /run (#2157)
* Exclude mountpoints under /run/credentials

Signed-off-by: ml <ml@visu.li>
2021-10-27 13:53:26 +02:00
jordy1024 fbc23548b9
Fix timer GC delays in the Linux filesystem collector (#2169)
Use `time.NewTimer()` and explicit `Stop()` to avoid memory bloat / GC problems with `time.After()` in the Linux filesystem collector timeout handling.

Signed-off-by: bawenmao <bawenmao@sogou-inc.com>
2021-10-24 12:48:57 +02:00
Matt Layher 8b198ce168
collector: replace fmt.Sprintf with strconv.Itoa in perfCollector (#2174)
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2021-10-22 21:03:10 +02:00
W. Andrew Denton d514d67d7f ethtool: convert updateSpeeds to a loop.
Signed-off-by: W. Andrew Denton <git@flying-snail.net>
2021-10-20 19:11:30 +02:00