From a8ec35353f4091178d635d0ae2354278951c982f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:51:21 +0200 Subject: [PATCH 001/109] build(deps): bump golang.org/x/sys from 0.33.0 to 0.34.0 (#3371) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.33.0 to 0.34.0. - [Commits](https://github.com/golang/sys/compare/v0.33.0...v0.34.0) --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-version: 0.34.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index deba372b..765a0826 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/prometheus/procfs v0.17.0 github.com/safchain/ethtool v0.6.1 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 - golang.org/x/sys v0.33.0 + golang.org/x/sys v0.34.0 howett.net/plist v1.0.1 ) diff --git a/go.sum b/go.sum index c612c15d..1a31f0b8 100644 --- a/go.sum +++ b/go.sum @@ -114,8 +114,8 @@ golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= From 744cee7e1923e77f90c531072692b260f44b96c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:52:32 +0200 Subject: [PATCH 002/109] build(deps): bump github.com/prometheus/common from 0.64.0 to 0.65.0 (#3369) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.64.0 to 0.65.0. - [Release notes](https://github.com/prometheus/common/releases) - [Changelog](https://github.com/prometheus/common/blob/main/RELEASE.md) - [Commits](https://github.com/prometheus/common/compare/v0.64.0...v0.65.0) --- updated-dependencies: - dependency-name: github.com/prometheus/common dependency-version: 0.65.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 765a0826..a642b070 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.21.1 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.64.0 + github.com/prometheus/common v0.65.0 github.com/prometheus/exporter-toolkit v0.14.0 github.com/prometheus/procfs v0.17.0 github.com/safchain/ethtool v0.6.1 diff --git a/go.sum b/go.sum index 1a31f0b8..7c0cd5e5 100644 --- a/go.sum +++ b/go.sum @@ -79,8 +79,8 @@ github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGC github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= -github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= +github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= +github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= From 2a25c1f8f8c028a6cddda54a5c929ed0219ee115 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:14:57 +0200 Subject: [PATCH 003/109] build(deps): bump github.com/mdlayher/wifi from 0.5.0 to 0.6.0 (#3372) Bumps [github.com/mdlayher/wifi](https://github.com/mdlayher/wifi) from 0.5.0 to 0.6.0. - [Release notes](https://github.com/mdlayher/wifi/releases) - [Commits](https://github.com/mdlayher/wifi/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: github.com/mdlayher/wifi dependency-version: 0.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index a642b070..07568286 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.4.0 github.com/mdlayher/netlink v1.7.2 - github.com/mdlayher/wifi v0.5.0 + github.com/mdlayher/wifi v0.6.0 github.com/opencontainers/selinux v1.11.1 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 @@ -51,11 +51,11 @@ require ( github.com/xhit/go-str2duration/v2 v2.1.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.38.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.15.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/text v0.26.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 7c0cd5e5..b44172ea 100644 --- a/go.sum +++ b/go.sum @@ -61,8 +61,8 @@ github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= -github.com/mdlayher/wifi v0.5.0 h1:TGZIcrhL6h3710amshpEJnMzLs74MrZOF+8qbm8Gx/I= -github.com/mdlayher/wifi v0.5.0/go.mod h1:yfQs+5zr1eOIfdsWDcZonWdznnt/Iiz0/4772cfZuHk= +github.com/mdlayher/wifi v0.6.0 h1:yBVPVgyCWcdyLkztUVM2Czd2XFKRJegHOoBm2gBWKG8= +github.com/mdlayher/wifi v0.6.0/go.mod h1:qwcTzRuC2bV+s4PFhGMzPi0sFHAr2jXkUSumSMIU6+4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= @@ -102,8 +102,8 @@ go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= @@ -116,8 +116,8 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 7a62ec931e54e1fe6295a3d341fcf8600d7b01a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:15:11 +0200 Subject: [PATCH 004/109] build(deps): bump github.com/prometheus/client_golang (#3370) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.21.1 to 1.23.0. - [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.21.1...v1.23.0) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-version: 1.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 10 ++++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 07568286..4d2c74b6 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/opencontainers/selinux v1.11.1 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 - github.com/prometheus/client_golang v1.21.1 + github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 github.com/prometheus/exporter-toolkit v0.14.0 @@ -40,7 +40,6 @@ require ( github.com/dennwc/ioctl v1.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect - github.com/klauspost/compress v1.17.11 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mdlayher/genetlink v1.3.2 // indirect github.com/mdlayher/socket v0.4.1 // indirect diff --git a/go.sum b/go.sum index b44172ea..f4f5a226 100644 --- a/go.sum +++ b/go.sum @@ -39,8 +39,8 @@ github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2E github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jsimonetti/rtnetlink/v2 v2.0.5 h1:l5S9iedrSW4thUfgiU+Hzsnk1cOR0upGD5ttt6mirHw= github.com/jsimonetti/rtnetlink/v2 v2.0.5/go.mod h1:9yTlq3Ojr1rbmh/Y5L30/KIojpFhTRph2xKeZ+y+Pic= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -75,8 +75,8 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus-community/go-runit v0.1.0 h1:uTWEj/Fn2RoLdfg/etSqwzgYNOYPrARx1BHUN052tGA= github.com/prometheus-community/go-runit v0.1.0/go.mod h1:AvJ9Jo3gAFu2lbM4+qfjdpq30FfiLDJZKbQ015u08IQ= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= @@ -100,6 +100,8 @@ github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8 github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= From e2f4986c64e1de3b9ec002e22210912dd450fd43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:53:09 +0200 Subject: [PATCH 005/109] build(deps): bump github.com/opencontainers/selinux (#3300) Bumps [github.com/opencontainers/selinux](https://github.com/opencontainers/selinux) from 1.11.1 to 1.12.0. - [Release notes](https://github.com/opencontainers/selinux/releases) - [Commits](https://github.com/opencontainers/selinux/compare/v1.11.1...v1.12.0) --- updated-dependencies: - dependency-name: github.com/opencontainers/selinux dependency-version: 1.12.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4d2c74b6..ec848e13 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/mdlayher/ethtool v0.4.0 github.com/mdlayher/netlink v1.7.2 github.com/mdlayher/wifi v0.6.0 - github.com/opencontainers/selinux v1.11.1 + github.com/opencontainers/selinux v1.12.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.23.0 diff --git a/go.sum b/go.sum index f4f5a226..05072873 100644 --- a/go.sum +++ b/go.sum @@ -67,8 +67,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= -github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/opencontainers/selinux v1.12.0 h1:6n5JV4Cf+4y0KNXW48TLj5DwfXpvWlxXplUkdTrmPb8= +github.com/opencontainers/selinux v1.12.0/go.mod h1:BTPX+bjVbWGXw7ZZWUbdENt8w0htPSrlgOOysQaU62U= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= From be19d537cd9d87bb9ca990eb24ce9162033f7260 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Thu, 7 Aug 2025 12:34:08 +0200 Subject: [PATCH 006/109] Fix Go minimum version (#3378) Update `github.com/safchain/ethtool` to fix Go 1.23.x backwards compatibility. Signed-off-by: Ben Kochie --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index ec848e13..3ab5c1bf 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/prometheus/node_exporter -go 1.24.2 +go 1.23.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 @@ -27,7 +27,7 @@ require ( github.com/prometheus/common v0.65.0 github.com/prometheus/exporter-toolkit v0.14.0 github.com/prometheus/procfs v0.17.0 - github.com/safchain/ethtool v0.6.1 + github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 golang.org/x/sys v0.34.0 howett.net/plist v1.0.1 diff --git a/go.sum b/go.sum index 05072873..e95bc5b6 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7D github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/safchain/ethtool v0.6.1 h1:mhRnXE1H8fV8TTXh/HdqE4tXtb57r//BQh5pPYMuM5k= -github.com/safchain/ethtool v0.6.1/go.mod h1:JzoNbG8xeg/BeVeVoMCtCb3UPWoppZZbFpA+1WFh+M0= +github.com/safchain/ethtool v0.6.2 h1:O3ZPFAKEUEfbtE6J/feEe2Ft7dIJ2Sy8t4SdMRiIMHY= +github.com/safchain/ethtool v0.6.2/go.mod h1:VS7cn+bP3Px3rIq55xImBiZGHVLNyBh5dqG6dDQy8+I= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:GfSdC6wKfTGcgCS7BtzF5694Amne1pGCSTY252WhlEY= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From 9caf48f9faf13548fa9ec33a2c18d2dafdbc2b97 Mon Sep 17 00:00:00 2001 From: Daniel Swarbrick Date: Mon, 25 Aug 2025 08:55:23 +0200 Subject: [PATCH 007/109] tcpstat: use std lib binary.NativeEndian Use standard lib binary.NativeEndian instead of third-party package. Supported since Go 1.21. Signed-off-by: Daniel Swarbrick --- collector/tcpstat_linux_test.go | 3 +-- go.mod | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/collector/tcpstat_linux_test.go b/collector/tcpstat_linux_test.go index e1bd090a..5f3c4aad 100644 --- a/collector/tcpstat_linux_test.go +++ b/collector/tcpstat_linux_test.go @@ -22,14 +22,13 @@ import ( "syscall" "testing" - "github.com/josharian/native" "github.com/mdlayher/netlink" ) func Test_parseTCPStats(t *testing.T) { encode := func(m InetDiagMsg) []byte { var buf bytes.Buffer - err := binary.Write(&buf, native.Endian, m) + err := binary.Write(&buf, binary.NativeEndian, m) if err != nil { panic(err) } diff --git a/go.mod b/go.mod index 3ab5c1bf..5adbedf6 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,6 @@ require ( github.com/hashicorp/go-envparse v0.1.0 github.com/hodgesds/perf-utils v0.7.0 github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 - github.com/josharian/native v1.1.0 github.com/jsimonetti/rtnetlink/v2 v2.0.5 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 @@ -39,6 +38,7 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dennwc/ioctl v1.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect + github.com/josharian/native v1.1.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mdlayher/genetlink v1.3.2 // indirect From 434fb7d864fe960f67681fdcf973e48aecf4a0d7 Mon Sep 17 00:00:00 2001 From: nicbaz Date: Wed, 27 Aug 2025 16:22:23 +0200 Subject: [PATCH 008/109] filesystem: take super options into account for read-only (#3387) * filesystem: take super options into account for read-only With the latest change implemented to use `mountinfo` instead of `mounts` there was a regression in filesystem readonly detection due to super options not taken into account: filesystems that would previously be marked a "read-only" would not anymore because that information had moved to super options instead of mount options on certain occasions. fixes #3157 Signed-off-by: nicbaz <932244+nicbaz@users.noreply.github.com> * filesystem: use faster integer to string implementation Signed-off-by: nicbaz <932244+nicbaz@users.noreply.github.com> --------- Signed-off-by: nicbaz <932244+nicbaz@users.noreply.github.com> --- collector/filesystem_common.go | 2 +- collector/filesystem_linux.go | 36 +++++++++++++++++---------- collector/filesystem_linux_test.go | 39 ++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/collector/filesystem_common.go b/collector/filesystem_common.go index 4161b3fe..1e61e8e7 100644 --- a/collector/filesystem_common.go +++ b/collector/filesystem_common.go @@ -82,7 +82,7 @@ type filesystemCollector struct { } type filesystemLabels struct { - device, mountPoint, fsType, options, deviceError, major, minor string + device, mountPoint, fsType, mountOptions, superOptions, deviceError, major, minor string } type filesystemStats struct { diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index 127a3be1..e7712856 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -23,6 +23,8 @@ import ( "io" "log/slog" "os" + "slices" + "strconv" "strings" "sync" "time" @@ -110,11 +112,8 @@ func (c *filesystemCollector) GetStats() ([]filesystemStats, error) { func (c *filesystemCollector) processStat(labels filesystemLabels) filesystemStats { var ro float64 - for _, option := range strings.Split(labels.options, ",") { - if option == "ro" { - ro = 1 - break - } + if isFilesystemReadOnly(labels) { + ro = 1 } success := make(chan struct{}) @@ -198,7 +197,7 @@ func parseFilesystemLabels(r io.Reader) ([]filesystemLabels, error) { for scanner.Scan() { parts := strings.Fields(scanner.Text()) - if len(parts) < 10 { + if len(parts) < 11 { return nil, fmt.Errorf("malformed mount point information: %q", scanner.Text()) } @@ -219,15 +218,26 @@ func parseFilesystemLabels(r io.Reader) ([]filesystemLabels, error) { parts[4] = strings.ReplaceAll(parts[4], "\\011", "\t") filesystems = append(filesystems, filesystemLabels{ - device: parts[m+3], - mountPoint: rootfsStripPrefix(parts[4]), - fsType: parts[m+2], - options: parts[5], - major: fmt.Sprint(major), - minor: fmt.Sprint(minor), - deviceError: "", + device: parts[m+3], + mountPoint: rootfsStripPrefix(parts[4]), + fsType: parts[m+2], + mountOptions: parts[5], + superOptions: parts[10], + major: strconv.Itoa(major), + minor: strconv.Itoa(minor), + deviceError: "", }) } return filesystems, scanner.Err() } + +// see https://github.com/prometheus/node_exporter/issues/3157#issuecomment-2422761187 +// if either mount or super options contain "ro" the filesystem is read-only +func isFilesystemReadOnly(labels filesystemLabels) bool { + if slices.Contains(strings.Split(labels.mountOptions, ","), "ro") || slices.Contains(strings.Split(labels.superOptions, ","), "ro") { + return true + } + + return false +} diff --git a/collector/filesystem_linux_test.go b/collector/filesystem_linux_test.go index d088598f..7b3e22c4 100644 --- a/collector/filesystem_linux_test.go +++ b/collector/filesystem_linux_test.go @@ -45,6 +45,45 @@ func Test_parseFilesystemLabelsError(t *testing.T) { } } +func Test_isFilesystemReadOnly(t *testing.T) { + tests := map[string]struct { + labels filesystemLabels + expected bool + }{ + "/media/volume1": { + labels: filesystemLabels{ + mountOptions: "rw,nosuid,nodev,noexec,relatime", + superOptions: "rw,devices", + }, + expected: false, + }, + "/media/volume2": { + labels: filesystemLabels{ + mountOptions: "ro,relatime", + superOptions: "rw,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct", + }, expected: true, + }, + "/media/volume3": { + labels: filesystemLabels{ + mountOptions: "rw,user_id=1000,group_id=1000", + superOptions: "ro", + }, expected: true, + }, + "/media/volume4": { + labels: filesystemLabels{ + mountOptions: "ro,nosuid,noexec", + superOptions: "ro,nodev", + }, expected: true, + }, + } + + for _, tt := range tests { + if got := isFilesystemReadOnly(tt.labels); got != tt.expected { + t.Errorf("Expected %t, got %t", tt.expected, got) + } + } +} + func TestMountPointDetails(t *testing.T) { if _, err := kingpin.CommandLine.Parse([]string{"--path.procfs", "./fixtures/proc"}); err != nil { t.Fatal(err) From 6471fa313e9e05a41eec9d3e4754c16d86f96db7 Mon Sep 17 00:00:00 2001 From: Ahmed Khaled Date: Sun, 31 Aug 2025 09:53:40 +0300 Subject: [PATCH 009/109] fix dupblicate cgo import, use double instead of Float64 in C function return (#3391) Signed-off-by: Ahmed Abdulraziq --- collector/filesystem_macos.go | 17 +++++++---------- collector/meminfo_darwin.go | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/collector/filesystem_macos.go b/collector/filesystem_macos.go index cc5c97ce..ff06e8c6 100644 --- a/collector/filesystem_macos.go +++ b/collector/filesystem_macos.go @@ -20,8 +20,13 @@ package collector #cgo CFLAGS: -x objective-c #cgo LDFLAGS: -framework Foundation #import -Float64 purgeable(char *path) { - Float64 value = -1.0f; +#include +#include +#include +#include + +double purgeable(char *path) { + double value = -1.0f; @autoreleasepool { NSError *error = nil; @@ -49,14 +54,6 @@ import ( "unsafe" ) -/* -#include -#include -#include -#include -*/ -import "C" - const ( defMountPointsExcluded = "^/(dev)($|/)" defFSTypesExcluded = "^devfs$" diff --git a/collector/meminfo_darwin.go b/collector/meminfo_darwin.go index b5b10b4b..26a6a1ac 100644 --- a/collector/meminfo_darwin.go +++ b/collector/meminfo_darwin.go @@ -52,7 +52,7 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) { &infoCount, ) if ret != C.KERN_SUCCESS { - return nil, fmt.Errorf("Couldn't get memory statistics, host_statistics returned %d", ret) + return nil, fmt.Errorf("couldn't get memory statistics, host_statistics returned %d", ret) } totalb, err := unix.Sysctl("hw.memsize") if err != nil { From 222cccd603383e12ca4a17bab633034d6f30a33d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 15:34:03 +0200 Subject: [PATCH 010/109] build(deps): bump github.com/mdlayher/ethtool from 0.4.0 to 0.4.1 (#3394) Bumps [github.com/mdlayher/ethtool](https://github.com/mdlayher/ethtool) from 0.4.0 to 0.4.1. - [Release notes](https://github.com/mdlayher/ethtool/releases) - [Commits](https://github.com/mdlayher/ethtool/compare/v0.4.0...v0.4.1) --- updated-dependencies: - dependency-name: github.com/mdlayher/ethtool dependency-version: 0.4.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 17 ++++++++--------- go.sum | 34 ++++++++++++++++------------------ 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index 5adbedf6..5f26ff70 100644 --- a/go.mod +++ b/go.mod @@ -15,8 +15,8 @@ require ( github.com/jsimonetti/rtnetlink/v2 v2.0.5 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 - github.com/mdlayher/ethtool v0.4.0 - github.com/mdlayher/netlink v1.7.2 + github.com/mdlayher/ethtool v0.4.1 + github.com/mdlayher/netlink v1.8.0 github.com/mdlayher/wifi v0.6.0 github.com/opencontainers/selinux v1.12.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 @@ -28,7 +28,7 @@ require ( github.com/prometheus/procfs v0.17.0 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 - golang.org/x/sys v0.34.0 + golang.org/x/sys v0.35.0 howett.net/plist v1.0.1 ) @@ -38,11 +38,10 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dennwc/ioctl v1.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/josharian/native v1.1.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mdlayher/genetlink v1.3.2 // indirect - github.com/mdlayher/socket v0.4.1 // indirect + github.com/mdlayher/socket v0.5.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect @@ -50,11 +49,11 @@ require ( github.com/xhit/go-str2duration/v2 v2.1.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.40.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/text v0.28.0 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index e95bc5b6..a8a50212 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,6 @@ github.com/hodgesds/perf-utils v0.7.0/go.mod h1:LAklqfDadNKpkxoAJNHpD5tkY0rkZEVd github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:hk4LPqXIY/c9XzRbe7dA6qQxaT6Axcbny0L/G5a4owQ= github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:PoK3ejP3LJkGTzKqRlpvCIFas3ncU02v8zzWDW+g0FY= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= -github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jsimonetti/rtnetlink/v2 v2.0.5 h1:l5S9iedrSW4thUfgiU+Hzsnk1cOR0upGD5ttt6mirHw= @@ -51,14 +49,14 @@ github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/mattn/go-xmlrpc v0.0.3 h1:Y6WEMLEsqs3RviBrAa1/7qmbGB7DVD3brZIbqMbQdGY= github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA= -github.com/mdlayher/ethtool v0.4.0 h1:jjMGNSQfqauwFCtSzcqpa57R0AJdxKdQgbQ9mAOtM4Q= -github.com/mdlayher/ethtool v0.4.0/go.mod h1:GrljOneAFOTPGazYlf8qpxvYLdu4mo3pdJqXWLZ2Re8= +github.com/mdlayher/ethtool v0.4.1 h1:BSUOGbnNNuPfGRFlKwtONPLJAQiLw8JdgS7E+SuN3/M= +github.com/mdlayher/ethtool v0.4.1/go.mod h1:9XP/78xTcyrfP8HvM0pI5ETaGHAuxrHRs+xkst29NlY= github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw= github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o= -github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= -github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= -github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= -github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= +github.com/mdlayher/netlink v1.8.0 h1:e7XNIYJKD7hUct3Px04RuIGJbBxy1/c4nX7D5YyvvlM= +github.com/mdlayher/netlink v1.8.0/go.mod h1:UhgKXUlDQhzb09DrCl2GuRNEglHmhYoWAHid9HK3594= +github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= +github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= github.com/mdlayher/wifi v0.6.0 h1:yBVPVgyCWcdyLkztUVM2Czd2XFKRJegHOoBm2gBWKG8= @@ -104,22 +102,22 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From e2161fea58610849486db211b1046b02b7f5eea8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Sep 2025 15:34:14 +0200 Subject: [PATCH 011/109] build(deps): bump github.com/coreos/go-systemd/v22 from 22.5.0 to 22.6.0 (#3395) Bumps [github.com/coreos/go-systemd/v22](https://github.com/coreos/go-systemd) from 22.5.0 to 22.6.0. - [Release notes](https://github.com/coreos/go-systemd/releases) - [Commits](https://github.com/coreos/go-systemd/compare/v22.5.0...v22.6.0) --- updated-dependencies: - dependency-name: github.com/coreos/go-systemd/v22 dependency-version: 22.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 5f26ff70..f5ffb9f8 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 github.com/beevik/ntp v1.4.3 - github.com/coreos/go-systemd/v22 v22.5.0 + github.com/coreos/go-systemd/v22 v22.6.0 github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a github.com/ema/qdisc v1.0.0 github.com/godbus/dbus/v5 v5.1.0 diff --git a/go.sum b/go.sum index a8a50212..8703e58c 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= +github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -21,7 +21,6 @@ github.com/dennwc/ioctl v1.0.0 h1:DsWAAjIxRqNcLn9x6mwfuf2pet3iB7aK90K4tF16rLg= github.com/dennwc/ioctl v1.0.0/go.mod h1:ellh2YB5ldny99SBU/VX7Nq0xiZbHphf1DrtHxxjMk0= github.com/ema/qdisc v1.0.0 h1:EHLG08FVRbWLg8uRICa3xzC9Zm0m7HyMHfXobWFnXYg= github.com/ema/qdisc v1.0.0/go.mod h1:FhIc0fLYi7f+lK5maMsesDqwYojIOh3VfRs8EVd5YJQ= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= From 2f980160aa4197b9036f46c72b8f4995159b4f0e Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Fri, 5 Sep 2025 16:18:25 +0200 Subject: [PATCH 012/109] Update Prometheus libraries (#3405) * Bump Prometheus client_golang/common/exporter-toolkit libraries. * Adapt textfile parser to the new validation scheme. Signed-off-by: Ben Kochie --- collector/textfile.go | 3 ++- go.mod | 10 +++++----- go.sum | 24 ++++++++++++------------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/collector/textfile.go b/collector/textfile.go index 3e0cc459..c6d21872 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -29,6 +29,7 @@ import ( "github.com/prometheus/client_golang/prometheus" dto "github.com/prometheus/client_model/go" "github.com/prometheus/common/expfmt" + "github.com/prometheus/common/model" ) var ( @@ -299,7 +300,7 @@ func (c *textFileCollector) processFile(dir, name string, ch chan<- prometheus.M } defer f.Close() - var parser expfmt.TextParser + parser := expfmt.NewTextParser(model.LegacyValidation) families, err := parser.TextToMetricFamilies(f) if err != nil { return nil, nil, fmt.Errorf("failed to parse textfile data from %q: %w", path, err) diff --git a/go.mod b/go.mod index f5ffb9f8..3810885b 100644 --- a/go.mod +++ b/go.mod @@ -21,10 +21,10 @@ require ( github.com/opencontainers/selinux v1.12.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 - github.com/prometheus/client_golang v1.23.0 + github.com/prometheus/client_golang v1.23.1 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.65.0 - github.com/prometheus/exporter-toolkit v0.14.0 + github.com/prometheus/common v0.66.1 + github.com/prometheus/exporter-toolkit v0.14.1 github.com/prometheus/procfs v0.17.0 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 @@ -49,11 +49,11 @@ require ( github.com/xhit/go-str2duration/v2 v2.1.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.16.0 // indirect golang.org/x/text v0.28.0 // indirect - google.golang.org/protobuf v1.36.6 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect + google.golang.org/protobuf v1.36.8 // indirect ) diff --git a/go.sum b/go.sum index 8703e58c..dfb656a5 100644 --- a/go.sum +++ b/go.sum @@ -72,14 +72,14 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus-community/go-runit v0.1.0 h1:uTWEj/Fn2RoLdfg/etSqwzgYNOYPrARx1BHUN052tGA= github.com/prometheus-community/go-runit v0.1.0/go.mod h1:AvJ9Jo3gAFu2lbM4+qfjdpq30FfiLDJZKbQ015u08IQ= -github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= -github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= +github.com/prometheus/client_golang v1.23.1 h1:w6gXMLQGgd0jXXlote9lRHMe0nG01EbnJT+C0EJru2Y= +github.com/prometheus/client_golang v1.23.1/go.mod h1:br8j//v2eg2K5Vvna5klK8Ku5pcU5r4ll73v6ik5dIQ= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE= -github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= -github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= -github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/exporter-toolkit v0.14.1 h1:uKPE4ewweVRWFainwvAcHs3uw15pjw2dk3I7b+aNo9o= +github.com/prometheus/exporter-toolkit v0.14.1/go.mod h1:di7yaAJiaMkcjcz48f/u4yRPwtyuxTU5Jr4EnM2mhtQ= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= @@ -91,8 +91,8 @@ github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81a github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= @@ -101,6 +101,8 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= @@ -117,15 +119,13 @@ golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= From 2a79d5e8000fb3bde6aa4f2a7bd6fc96e4756ab7 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Mon, 8 Sep 2025 20:08:21 +0200 Subject: [PATCH 013/109] Enable dependabot for actions (#3406) Update GitHub actions with dependabot. Signed-off-by: Ben Kochie --- .github/dependabot.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 202ae236..c0b195d2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,3 +4,7 @@ updates: directory: "/" schedule: interval: "monthly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" From 5fcd80addc077f541e159ad3ecc657b2b65ed0a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 22:14:36 +0200 Subject: [PATCH 014/109] build(deps): bump vmactions/openbsd-vm from 1.1.6 to 1.2.0 (#3414) * build(deps): bump vmactions/openbsd-vm from 1.1.6 to 1.2.0 Bumps [vmactions/openbsd-vm](https://github.com/vmactions/openbsd-vm) from 1.1.6 to 1.2.0. - [Release notes](https://github.com/vmactions/openbsd-vm/releases) - [Commits](https://github.com/vmactions/openbsd-vm/compare/7ac70b6de6f33efc74a90c1964afa3bcf0ee4401...1e7cc4fa7727646d3cf5921289b1f5c9d1a88f3c) --- updated-dependencies: - dependency-name: vmactions/openbsd-vm dependency-version: 1.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump OpenBSD Go version. Signed-off-by: Ben Kochie --------- Signed-off-by: dependabot[bot] Signed-off-by: Ben Kochie Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Kochie --- .github/workflows/bsd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 2f314913..4ba63973 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -16,7 +16,7 @@ env: GO_VERSION_DRAGONFLY: "1.24.1" GO_VERSION_FREEBSD: "123" GO_VERSION_NETBSD: "1.24.1" - GO_VERSION_OPENBSD: "1.23.1" + GO_VERSION_OPENBSD: "1.24.1" GO_VERSION_SOLARIS: "1.24.1" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions @@ -75,7 +75,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: test-e2e - uses: vmactions/openbsd-vm@7ac70b6de6f33efc74a90c1964afa3bcf0ee4401 # v1.1.6 + uses: vmactions/openbsd-vm@1e7cc4fa7727646d3cf5921289b1f5c9d1a88f3c # v1.2.0 with: copyback: false envs: 'GO_VERSION_OPENBSD GNU_TAR_VERSION' From 18f95ce16a536aa980e98182f2882a8ef8bdc841 Mon Sep 17 00:00:00 2001 From: Kemal Akkoyun Date: Mon, 8 Sep 2025 23:29:08 +0300 Subject: [PATCH 015/109] chore: Upgrade golangci-lint to v2 (#3303) * chore: Upgrade golangci-lint to v2 - Migrate the configuration file - Update the tooling version and CI - Apply auto-fixes Signed-off-by: Kemal Akkoyun * chore: Upgrade golangci-lint to v2 - Migrate the configuration file - Update the tooling version and CI - Apply auto-fixes Signed-off-by: Kemal Akkoyun --------- Signed-off-by: Kemal Akkoyun --- .github/workflows/golangci-lint.yml | 4 +- .golangci.yml | 66 ++++++++++++++++++----------- Makefile.common | 2 +- collector/boot_time_bsd.go | 3 +- collector/cpu_linux.go | 2 +- collector/perf_linux_test.go | 2 +- 6 files changed, 48 insertions(+), 31 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 5342cbe0..3893ef86 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -33,7 +33,7 @@ jobs: run: sudo apt-get update && sudo apt-get -y install libsnmp-dev if: github.repository == 'prometheus/snmp_exporter' - name: Lint - uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6.5.2 + uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd # v7.0.0 with: args: --verbose - version: v1.64.6 + version: v2.0.2 diff --git a/.golangci.yml b/.golangci.yml index 8731aefd..26d1f5ad 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,32 +1,48 @@ +version: "2" linters: enable: - depguard - - goimports - misspell - revive - -issues: - exclude-rules: - - path: _test.go - linters: - - errcheck - -linters-settings: - depguard: - rules: - no_exec_policy: - files: - - "!$test" - deny: - - pkg: "os/exec" - desc: "Using os/exec to run sub processes it not allowed by policy" - errcheck: - exclude-functions: + settings: + depguard: + rules: + no_exec_policy: + files: + - '!$test' + deny: + - pkg: os/exec + desc: Using os/exec to run sub processes it not allowed by policy + errcheck: # Used in HTTP handlers, any error is handled by the server itself. - - (net/http.ResponseWriter).Write - revive: + exclude-functions: + - (net/http.ResponseWriter).Write + revive: + rules: + - name: unused-parameter + severity: warning + disabled: true + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling rules: - # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter - - name: unused-parameter - severity: warning - disabled: true + - linters: + - errcheck + path: _test.go + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - goimports + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/Makefile.common b/Makefile.common index 8cb38385..81bad5f4 100644 --- a/Makefile.common +++ b/Makefile.common @@ -61,7 +61,7 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.64.6 +GOLANGCI_LINT_VERSION ?= v2.0.2 # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) diff --git a/collector/boot_time_bsd.go b/collector/boot_time_bsd.go index d632fef0..49b4145c 100644 --- a/collector/boot_time_bsd.go +++ b/collector/boot_time_bsd.go @@ -18,9 +18,10 @@ package collector import ( + "log/slog" + "github.com/prometheus/client_golang/prometheus" "golang.org/x/sys/unix" - "log/slog" ) type bootTimeCollector struct { diff --git a/collector/cpu_linux.go b/collector/cpu_linux.go index 078a4611..671db8ba 100644 --- a/collector/cpu_linux.go +++ b/collector/cpu_linux.go @@ -89,7 +89,7 @@ func NewCPUCollector(logger *slog.Logger) (Collector, error) { if !os.IsNotExist(err) { return nil, fmt.Errorf("unable to get isolated cpus: %w", err) } - logger.Debug("Could not open isolated file", "error", err) + logger.Debug("couldn't open isolated file", "error", err) } c := &cpuCollector{ diff --git a/collector/perf_linux_test.go b/collector/perf_linux_test.go index 7560b0a0..1d39e8a9 100644 --- a/collector/perf_linux_test.go +++ b/collector/perf_linux_test.go @@ -36,7 +36,7 @@ func canTestPerf(t *testing.T) { paranoidStr := strings.ReplaceAll(string(paranoidBytes), "\n", "") paranoid, err := strconv.Atoi(paranoidStr) if err != nil { - t.Fatalf("Expected perf_event_paranoid to be an int, got: %s", paranoidStr) + t.Fatalf("expected perf_event_paranoid to be an int, got: %s", paranoidStr) } if paranoid >= 1 { t.Skip("Skipping perf tests, set perf_event_paranoid to 0") From ae59e263c2cd1cbad4c40fa6903c4406d4e4b456 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 22:31:03 +0200 Subject: [PATCH 016/109] build(deps): bump actions/checkout from 4.2.2 to 5.0.0 (#3411) Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/11bd71901bbe5b1630ceea73d27597364c9af683...08c6903cd8c0fde910a37f88322edcfb5dd907a8) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 12 ++++++------ .github/workflows/container_description.yml | 4 ++-- .github/workflows/golangci-lint.yml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 4ba63973..a20610be 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e uses: vmactions/freebsd-vm@8873d98fd1413b5977cb2f7348fe329775159892 # v1.1.9 with: @@ -73,7 +73,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e uses: vmactions/openbsd-vm@1e7cc4fa7727646d3cf5921289b1f5c9d1a88f3c # v1.2.0 with: @@ -119,7 +119,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e uses: vmactions/netbsd-vm@46a58bbf03682b4cb24142b97fa315ae52bed573 # v1.1.8 with: @@ -167,7 +167,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e uses: vmactions/dragonflybsd-vm@e3c420e8a2362c2496fca6e76a291abd46f5d8e7 # v1.1.0 with: @@ -217,7 +217,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e uses: vmactions/solaris-vm@cc8f82fa1a7cc746153ec3f71bf11f311f16e225 # v1.1.1 with: @@ -276,7 +276,7 @@ jobs: runs-on: macos-latest steps: - name: Checkout the repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install dependencies run: | brew install \ diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index dcca16ff..b87ddcc8 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set docker hub repo name run: echo "DOCKER_REPO_NAME=$(make docker-repo-name)" >> $GITHUB_ENV - name: Push README to Dockerhub @@ -40,7 +40,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set quay.io org name run: echo "DOCKER_REPO=$(echo quay.io/${GITHUB_REPOSITORY_OWNER} | tr -d '-')" >> $GITHUB_ENV - name: Set quay.io repo name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 3893ef86..6537f313 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Install Go uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 with: From 3bd5f50305845b61402eab99c4aeb3c12c2ae10e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 07:08:42 +0200 Subject: [PATCH 017/109] build(deps): bump vmactions/freebsd-vm from 1.1.9 to 1.2.3 (#3418) Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.1.9 to 1.2.3. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](https://github.com/vmactions/freebsd-vm/compare/8873d98fd1413b5977cb2f7348fe329775159892...05856381fab64eeee9b038a0818f6cec649ca17a) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.2.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index a20610be..5c763351 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/freebsd-vm@8873d98fd1413b5977cb2f7348fe329775159892 # v1.1.9 + uses: vmactions/freebsd-vm@05856381fab64eeee9b038a0818f6cec649ca17a # v1.2.3 with: copyback: false envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' From 4566369ded208dd66249e60226225fb3a38af2b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 07:10:20 +0200 Subject: [PATCH 018/109] build(deps): bump vmactions/dragonflybsd-vm from 1.1.0 to 1.1.1 (#3416) Bumps [vmactions/dragonflybsd-vm](https://github.com/vmactions/dragonflybsd-vm) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/vmactions/dragonflybsd-vm/releases) - [Commits](https://github.com/vmactions/dragonflybsd-vm/compare/e3c420e8a2362c2496fca6e76a291abd46f5d8e7...ff1f01c32b9e82f2ba388d0ff270442bcd6ceddc) --- updated-dependencies: - dependency-name: vmactions/dragonflybsd-vm dependency-version: 1.1.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 5c763351..92988e45 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -169,7 +169,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/dragonflybsd-vm@e3c420e8a2362c2496fca6e76a291abd46f5d8e7 # v1.1.0 + uses: vmactions/dragonflybsd-vm@ff1f01c32b9e82f2ba388d0ff270442bcd6ceddc # v1.1.1 with: copyback: false envs: 'GO_VERSION_DRAGONFLY' From 63a219f75c2800e15e7c80f1991a55b625bfed69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 07:29:32 +0200 Subject: [PATCH 019/109] build(deps): bump vmactions/netbsd-vm from 1.1.8 to 1.1.9 (#3417) * build(deps): bump vmactions/netbsd-vm from 1.1.8 to 1.1.9 Bumps [vmactions/netbsd-vm](https://github.com/vmactions/netbsd-vm) from 1.1.8 to 1.1.9. - [Release notes](https://github.com/vmactions/netbsd-vm/releases) - [Commits](https://github.com/vmactions/netbsd-vm/compare/46a58bbf03682b4cb24142b97fa315ae52bed573...d0228be27fbaba19418cc1b332609a895cf16561) --- updated-dependencies: - dependency-name: vmactions/netbsd-vm dependency-version: 1.1.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Fix netbsd setup Do install and update in a single command. Signed-off-by: Ben Kochie --------- Signed-off-by: dependabot[bot] Signed-off-by: Ben Kochie Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Kochie --- .github/workflows/bsd.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 92988e45..cb399132 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -121,14 +121,13 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/netbsd-vm@46a58bbf03682b4cb24142b97fa315ae52bed573 # v1.1.8 + uses: vmactions/netbsd-vm@d0228be27fbaba19418cc1b332609a895cf16561 # v1.1.9 with: copyback: false envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' usesh: true prepare: | - /usr/sbin/pkg_add -u - /usr/sbin/pkg_add \ + /usr/sbin/pkg_add -u \ git \ gmake \ grep \ From d14f393db961013fc4a2c436f31a7bf9cafe287f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 09:55:08 +0200 Subject: [PATCH 020/109] build(deps): bump vmactions/solaris-vm from 1.1.1 to 1.1.5 (#3415) * build(deps): bump vmactions/solaris-vm from 1.1.1 to 1.1.5 Bumps [vmactions/solaris-vm](https://github.com/vmactions/solaris-vm) from 1.1.1 to 1.1.5. - [Release notes](https://github.com/vmactions/solaris-vm/releases) - [Commits](https://github.com/vmactions/solaris-vm/compare/cc8f82fa1a7cc746153ec3f71bf11f311f16e225...58cbd70c6e051860f9b8f65908cc582938fbbdba) --- updated-dependencies: - dependency-name: vmactions/solaris-vm dependency-version: 1.1.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Don't pkg update in solaris. Signed-off-by: Ben Kochie --------- Signed-off-by: dependabot[bot] Signed-off-by: Ben Kochie Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Kochie --- .github/workflows/bsd.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index cb399132..8130bbda 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -218,13 +218,12 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/solaris-vm@cc8f82fa1a7cc746153ec3f71bf11f311f16e225 # v1.1.1 + uses: vmactions/solaris-vm@58cbd70c6e051860f9b8f65908cc582938fbbdba # v1.1.5 with: copyback: false envs: 'GO_VERSION_SOLARIS' usesh: true prepare: | - pkg update pkg install \ bash \ curl \ From 3c1c506d6c3cc9a8ef5d672db3dc1220332ee8ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 10:49:10 +0200 Subject: [PATCH 021/109] build(deps): bump github.com/prometheus/client_golang (#3410) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.23.1 to 1.23.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.23.1...v1.23.2) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-version: 1.23.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3810885b..f6a28eeb 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/opencontainers/selinux v1.12.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 - github.com/prometheus/client_golang v1.23.1 + github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.66.1 github.com/prometheus/exporter-toolkit v0.14.1 diff --git a/go.sum b/go.sum index dfb656a5..b2a80e8f 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus-community/go-runit v0.1.0 h1:uTWEj/Fn2RoLdfg/etSqwzgYNOYPrARx1BHUN052tGA= github.com/prometheus-community/go-runit v0.1.0/go.mod h1:AvJ9Jo3gAFu2lbM4+qfjdpq30FfiLDJZKbQ015u08IQ= -github.com/prometheus/client_golang v1.23.1 h1:w6gXMLQGgd0jXXlote9lRHMe0nG01EbnJT+C0EJru2Y= -github.com/prometheus/client_golang v1.23.1/go.mod h1:br8j//v2eg2K5Vvna5klK8Ku5pcU5r4ll73v6ik5dIQ= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= From 249eb85805b87e53842375530582f3c885bbb3d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Sep 2025 11:36:24 +0200 Subject: [PATCH 022/109] build(deps): bump golang.org/x/sys from 0.35.0 to 0.36.0 (#3409) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.35.0 to 0.36.0. - [Commits](https://github.com/golang/sys/compare/v0.35.0...v0.36.0) --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-version: 0.36.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index f6a28eeb..9a4a2f5d 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/prometheus/node_exporter -go 1.23.0 +go 1.24.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 @@ -28,7 +28,7 @@ require ( github.com/prometheus/procfs v0.17.0 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 - golang.org/x/sys v0.35.0 + golang.org/x/sys v0.36.0 howett.net/plist v1.0.1 ) diff --git a/go.sum b/go.sum index b2a80e8f..d85a8039 100644 --- a/go.sum +++ b/go.sum @@ -115,8 +115,8 @@ golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= From 8da4825e48fcf71b026f3ca7a632fc9f732c3423 Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Tue, 9 Sep 2025 21:46:46 +0200 Subject: [PATCH 023/109] Update common Prometheus files (#3419) Signed-off-by: prombot --- .github/workflows/container_description.yml | 8 ++++++-- .github/workflows/golangci-lint.yml | 12 +++++++----- Makefile.common | 15 ++++++++++----- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index b87ddcc8..7de8bb8d 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,9 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false - name: Set docker hub repo name run: echo "DOCKER_REPO_NAME=$(make docker-repo-name)" >> $GITHUB_ENV - name: Push README to Dockerhub @@ -40,7 +42,9 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false - name: Set quay.io org name run: echo "DOCKER_REPO=$(echo quay.io/${GITHUB_REPOSITORY_OWNER} | tr -d '-')" >> $GITHUB_ENV - name: Set quay.io repo name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 6537f313..1816a556 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -24,16 +24,18 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false - name: Install Go - uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0 + uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 with: - go-version: 1.24.x + go-version: 1.25.x - name: Install snmp_exporter/generator dependencies run: sudo apt-get update && sudo apt-get -y install libsnmp-dev if: github.repository == 'prometheus/snmp_exporter' - name: Lint - uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd # v7.0.0 + uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 with: args: --verbose - version: v2.0.2 + version: v2.2.1 diff --git a/Makefile.common b/Makefile.common index 81bad5f4..1f4c9025 100644 --- a/Makefile.common +++ b/Makefile.common @@ -61,7 +61,8 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v2.0.2 +GOLANGCI_LINT_VERSION ?= v2.2.1 +GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) @@ -138,7 +139,7 @@ common-deps: update-go-deps: @echo ">> updating Go dependencies" @for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \ - $(GO) get -d $$m; \ + $(GO) get $$m; \ done $(GO) mod tidy @@ -156,9 +157,13 @@ $(GOTEST_DIR): @mkdir -p $@ .PHONY: common-format -common-format: +common-format: $(GOLANGCI_LINT) @echo ">> formatting code" $(GO) fmt $(pkgs) +ifdef GOLANGCI_LINT + @echo ">> formatting code with golangci-lint" + $(GOLANGCI_LINT) fmt $(GOLANGCI_FMT_OPTS) +endif .PHONY: common-vet common-vet: @@ -248,8 +253,8 @@ $(PROMU): cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu rm -r $(PROMU_TMP) -.PHONY: proto -proto: +.PHONY: common-proto +common-proto: @echo ">> generating code from proto files" @./scripts/genproto.sh From a7ab16bb29526195c109a65f445dc1c6ccdde581 Mon Sep 17 00:00:00 2001 From: v-zhuravlev Date: Wed, 23 Jul 2025 07:07:15 +0000 Subject: [PATCH 024/109] Fix NodeBondingDegraded alert Signed-off-by: v-zhuravlev --- docs/node-mixin/alerts/alerts.libsonnet | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/node-mixin/alerts/alerts.libsonnet b/docs/node-mixin/alerts/alerts.libsonnet index 61d9dd2d..29c934f5 100644 --- a/docs/node-mixin/alerts/alerts.libsonnet +++ b/docs/node-mixin/alerts/alerts.libsonnet @@ -424,14 +424,14 @@ { alert: 'NodeBondingDegraded', expr: ||| - (node_bonding_slaves - node_bonding_active) != 0 + (node_bonding_slaves{%(nodeExporterSelector)s} - node_bonding_active{%(nodeExporterSelector)s}) != 0 ||| % $._config, 'for': '5m', labels: { severity: 'warning', }, annotations: { - summary: 'Bonding interface is degraded', + summary: 'Bonding interface is degraded.', description: 'Bonding interface {{ $labels.master }} on {{ $labels.instance }} is in degraded state due to one or more slave failures.', }, }, From b959d48df950d5c446660eca3354c26eb997ca44 Mon Sep 17 00:00:00 2001 From: Nemric <56299157+Nemric@users.noreply.github.com> Date: Fri, 25 Apr 2025 18:59:41 +0200 Subject: [PATCH 025/109] Add erofs in default excluded fs type Signed-off-by: Nemric <56299157+Nemric@users.noreply.github.com> --- collector/filesystem_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index e7712856..d0ced514 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -35,7 +35,7 @@ import ( const ( defMountPointsExcluded = "^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)" - defFSTypesExcluded = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" + defFSTypesExcluded = "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|erofs|sysfs|tracefs)$" ) var mountTimeout = kingpin.Flag("collector.filesystem.mount-timeout", From b6112eac8af48aceb75691416ce66a5056e7f258 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sat, 27 Sep 2025 06:14:56 -0700 Subject: [PATCH 026/109] Update Go version (#3429) * Update default builds to Go 1.25.x. * Bump Go modules. * Bump FreeBSD action. * Fixup MacOS e2e test. * Fixup FreeBSD e2e test. Signed-off-by: Ben Kochie --- .circleci/config.yml | 6 ++--- .github/workflows/bsd.yml | 11 ++++----- .promu-cgo.yml | 2 +- .promu.yml | 2 +- collector/fixtures/e2e-output-darwin.txt | 4 ++++ collector/fixtures/e2e-output-freebsd.txt | 12 ++++++++++ end-to-end-test.sh | 27 +++++++++++++++++++++++ go.mod | 6 ++--- go.sum | 12 +++++----- 9 files changed, 63 insertions(+), 19 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 478aa310..b389cc3f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,10 +7,10 @@ executors: # should also be updated. golang: docker: - - image: cimg/go:1.24 + - image: cimg/go:1.25 arm: docker: - - image: cimg/go:1.24 + - image: cimg/go:1.25 resource_class: arm.medium jobs: @@ -70,7 +70,7 @@ jobs: machine: image: ubuntu-2404:current environment: - DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.24-base + DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.25-base REPO_PATH: github.com/prometheus/node_exporter steps: - prometheus/setup_environment diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 8130bbda..6c61e177 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -13,11 +13,11 @@ permissions: env: GNU_TAR_VERSION: "1.35" - GO_VERSION_DRAGONFLY: "1.24.1" - GO_VERSION_FREEBSD: "123" - GO_VERSION_NETBSD: "1.24.1" + GO_VERSION_DRAGONFLY: "1.25.1" + GO_VERSION_FREEBSD: "125" + GO_VERSION_NETBSD: "1.25.1" GO_VERSION_OPENBSD: "1.24.1" - GO_VERSION_SOLARIS: "1.24.1" + GO_VERSION_SOLARIS: "1.25.1" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions jobs: @@ -28,8 +28,9 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/freebsd-vm@05856381fab64eeee9b038a0818f6cec649ca17a # v1.2.3 + uses: vmactions/freebsd-vm@487ce35b96fae3e60d45b521735f5aa436ecfade # v1.2.4 with: + release: "15.0" copyback: false envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' usesh: true diff --git a/.promu-cgo.yml b/.promu-cgo.yml index 7ce1b201..aa40105c 100644 --- a/.promu-cgo.yml +++ b/.promu-cgo.yml @@ -1,7 +1,7 @@ go: # Whenever the Go version is updated here, .circle/config.yml and # .promu.yml should also be updated. - version: 1.24 + version: 1.25 cgo: true repository: path: github.com/prometheus/node_exporter diff --git a/.promu.yml b/.promu.yml index b38799f8..a7076d5b 100644 --- a/.promu.yml +++ b/.promu.yml @@ -1,7 +1,7 @@ go: # Whenever the Go version is updated here, .circle/config.yml and # .promu-cgo.yml should also be updated. - version: 1.24 + version: 1.25 repository: path: github.com/prometheus/node_exporter build: diff --git a/collector/fixtures/e2e-output-darwin.txt b/collector/fixtures/e2e-output-darwin.txt index 61b36997..cf29fb47 100644 --- a/collector/fixtures/e2e-output-darwin.txt +++ b/collector/fixtures/e2e-output-darwin.txt @@ -94,15 +94,19 @@ node_buddyinfo_blocks{node="0",size="9",zone="Normal"} 0 # HELP node_disk_read_errors_total The total number of read errors. # TYPE node_disk_read_errors_total counter node_disk_read_errors_total{device="disk0"} 0 +node_disk_read_errors_total{device="disk4"} 0 # HELP node_disk_read_retries_total The total number of read retries. # TYPE node_disk_read_retries_total counter node_disk_read_retries_total{device="disk0"} 0 +node_disk_read_retries_total{device="disk4"} 0 # HELP node_disk_write_errors_total The total number of write errors. # TYPE node_disk_write_errors_total counter node_disk_write_errors_total{device="disk0"} 0 +node_disk_write_errors_total{device="disk4"} 0 # HELP node_disk_write_retries_total The total number of write retries. # TYPE node_disk_write_retries_total counter node_disk_write_retries_total{device="disk0"} 0 +node_disk_write_retries_total{device="disk4"} 0 # HELP node_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, goversion from which node_exporter was built, and the goos and goarch for the build. # TYPE node_exporter_build_info gauge # HELP node_memory_swap_total_bytes Memory information field swap_total_bytes. diff --git a/collector/fixtures/e2e-output-freebsd.txt b/collector/fixtures/e2e-output-freebsd.txt index fad76e6f..0356d44e 100644 --- a/collector/fixtures/e2e-output-freebsd.txt +++ b/collector/fixtures/e2e-output-freebsd.txt @@ -261,6 +261,18 @@ node_xfrm_out_state_proto_error_packets_total 4542 # HELP node_xfrm_out_state_seq_error_packets_total Sequence error i.e. Sequence number overflow # TYPE node_xfrm_out_state_seq_error_packets_total counter node_xfrm_out_state_seq_error_packets_total 543 +# HELP node_zfs_arcstats_c_min_bytes ZFS ARC minimum size +# TYPE node_zfs_arcstats_c_min_bytes gauge +node_zfs_arcstats_c_min_bytes 1.99932544e+08 +# HELP node_zfs_arcstats_mfu_ghost_size ZFS ARC MFU ghost size +# TYPE node_zfs_arcstats_mfu_ghost_size gauge +node_zfs_arcstats_mfu_ghost_size 0 +# HELP node_zfs_arcstats_mru_ghost_hits_total ZFS ARC MRU ghost hits +# TYPE node_zfs_arcstats_mru_ghost_hits_total counter +node_zfs_arcstats_mru_ghost_hits_total 0 +# HELP node_zfs_arcstats_pm_bytes ZFS ARC meta MRU target frac +# TYPE node_zfs_arcstats_pm_bytes gauge +node_zfs_arcstats_pm_bytes 2.147483648e+09 # HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler. # TYPE promhttp_metric_handler_errors_total counter promhttp_metric_handler_errors_total{cause="encoding"} 0 diff --git a/end-to-end-test.sh b/end-to-end-test.sh index 0bd988ef..ac786134 100755 --- a/end-to-end-test.sh +++ b/end-to-end-test.sh @@ -365,6 +365,33 @@ non_deterministic_metrics=$(cat << METRICS node_network_receive_bytes_total node_network_receive_multicast_total node_network_transmit_multicast_total + node_zfs_abdstats_linear_count_total + node_zfs_abdstats_linear_data_bytes + node_zfs_abdstats_scatter_chunk_waste_bytes + node_zfs_abdstats_scatter_count_total + node_zfs_abdstats_scatter_data_bytes + node_zfs_abdstats_struct_bytes + node_zfs_arcstats_anon_bytes + node_zfs_arcstats_c_bytes + node_zfs_arcstats_c_max_bytes + node_zfs_arcstats_data_bytes + node_zfs_arcstats_demand_data_hits_total + node_zfs_arcstats_demand_data_misses_total + node_zfs_arcstats_demand_metadata_hits_total + node_zfs_arcstats_demand_metadata_misses_total + node_zfs_arcstats_hdr_bytes + node_zfs_arcstats_hits_total + node_zfs_arcstats_meta_bytes + node_zfs_arcstats_mfu_bytes + node_zfs_arcstats_mfu_ghost_hits_total + node_zfs_arcstats_misses_total + node_zfs_arcstats_mru_bytes + node_zfs_arcstats_mru_ghost_bytes + node_zfs_arcstats_other_bytes + node_zfs_arcstats_pd_bytes + node_zfs_arcstats_size_bytes + node_zfs_zfetchstats_hits_total + node_zfs_zfetchstats_misses_total METRICS ) diff --git a/go.mod b/go.mod index 9a4a2f5d..f6264284 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/alecthomas/kingpin/v2 v2.4.0 github.com/beevik/ntp v1.4.3 github.com/coreos/go-systemd/v22 v22.6.0 - github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a + github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 github.com/ema/qdisc v1.0.0 github.com/godbus/dbus/v5 v5.1.0 github.com/hashicorp/go-envparse v0.1.0 @@ -27,7 +27,7 @@ require ( github.com/prometheus/exporter-toolkit v0.14.1 github.com/prometheus/procfs v0.17.0 github.com/safchain/ethtool v0.6.2 - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 + golang.org/x/exp v0.0.0-20250911091902-df9299821621 golang.org/x/sys v0.36.0 howett.net/plist v1.0.1 ) @@ -53,7 +53,7 @@ require ( golang.org/x/crypto v0.41.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect + golang.org/x/sync v0.17.0 // indirect golang.org/x/text v0.28.0 // indirect google.golang.org/protobuf v1.36.8 // indirect ) diff --git a/go.sum b/go.sum index d85a8039..2c0cf80d 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a h1:KfFsGLJFVdCXlySUkV2FmxNtmiztpJb6tV+XYBmmv8E= -github.com/dennwc/btrfs v0.0.0-20240418142341-0167142bde7a/go.mod h1:MYsOV9Dgsec3FFSOjywi0QK5r6TeBbdWxdrMGtiYXHA= +github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 h1:fV+JlCY0cCJh3l0jfE7iB3ZmrdfJSgfcjdrCQhPokGg= +github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6/go.mod h1:MYsOV9Dgsec3FFSOjywi0QK5r6TeBbdWxdrMGtiYXHA= github.com/dennwc/ioctl v1.0.0 h1:DsWAAjIxRqNcLn9x6mwfuf2pet3iB7aK90K4tF16rLg= github.com/dennwc/ioctl v1.0.0/go.mod h1:ellh2YB5ldny99SBU/VX7Nq0xiZbHphf1DrtHxxjMk0= github.com/ema/qdisc v1.0.0 h1:EHLG08FVRbWLg8uRICa3xzC9Zm0m7HyMHfXobWFnXYg= @@ -105,14 +105,14 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU= +golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= From 771c3d458a763aeae8040619ab560e5085699b6f Mon Sep 17 00:00:00 2001 From: Fabian Deutsch Date: Mon, 6 Oct 2025 19:42:00 +0200 Subject: [PATCH 027/109] Add /proc/swaps collector (#3428) * Add /proc/swaps collector Building on prometheus/procfs#246 this PR is introducing metrics around swap devices. Today metrics around swap are already available, but they are on the node level. With this PR, metrics are now available per device. Relates to: #1890 Signed-off-by: Fabian Deutsch Co-authored-by: claude.ai --------- Signed-off-by: Fabian Deutsch --- README.md | 1 + collector/fixtures/proc/swaps | 2 + collector/swap_linux.go | 129 ++++++++++++++++++++++++++++++++++ collector/swap_linux_test.go | 58 +++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 collector/fixtures/proc/swaps create mode 100644 collector/swap_linux.go create mode 100644 collector/swap_linux_test.go diff --git a/README.md b/README.md index 0e4f3d38..3761bcc9 100644 --- a/README.md +++ b/README.md @@ -208,6 +208,7 @@ qdisc | Exposes [queuing discipline](https://en.wikipedia.org/wiki/Network_sched slabinfo | Exposes slab statistics from `/proc/slabinfo`. Note that permission of `/proc/slabinfo` is usually 0400, so set it appropriately. | Linux softirqs | Exposes detailed softirq statistics from `/proc/softirqs`. | Linux sysctl | Expose sysctl values from `/proc/sys`. Use `--collector.sysctl.include(-info)` to configure. | Linux +swap | Expose swap information from `/proc/swaps`. | Linux systemd | Exposes service and system status from [systemd](http://www.freedesktop.org/wiki/Software/systemd/). | Linux tcpstat | Exposes TCP connection status information from `/proc/net/tcp` and `/proc/net/tcp6`. (Warning: the current version has potential performance issues in high load situations.) | Linux wifi | Exposes WiFi device and station statistics. | Linux diff --git a/collector/fixtures/proc/swaps b/collector/fixtures/proc/swaps new file mode 100644 index 00000000..c0fbf778 --- /dev/null +++ b/collector/fixtures/proc/swaps @@ -0,0 +1,2 @@ +Filename Type Size Used Priority +/dev/zram0 partition 8388604 76 100 diff --git a/collector/swap_linux.go b/collector/swap_linux.go new file mode 100644 index 00000000..9a275e16 --- /dev/null +++ b/collector/swap_linux.go @@ -0,0 +1,129 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !noswap + +package collector + +import ( + "fmt" + "log/slog" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs" +) + +const ( + swapSubsystem = "swap" +) + +var swapLabelNames = []string{"device", "swap_type"} + +type swapCollector struct { + fs procfs.FS + logger *slog.Logger +} + +func init() { + registerCollector("swap", defaultDisabled, NewSwapCollector) +} + +// NewSwapCollector returns a new Collector exposing swap device statistics. +func NewSwapCollector(logger *slog.Logger) (Collector, error) { + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + + return &swapCollector{ + fs: fs, + logger: logger, + }, nil +} + +type SwapsEntry struct { + Device string + Type string + Priority int + Size int + Used int +} + +func (c *swapCollector) getSwapInfo() ([]SwapsEntry, error) { + swaps, err := c.fs.Swaps() + if err != nil { + return nil, fmt.Errorf("couldn't get proc/swap information: %w", err) + } + + metrics := make([]SwapsEntry, 0, len(swaps)) + + for _, swap := range swaps { + metrics = append(metrics, SwapsEntry{Device: swap.Filename, Type: swap.Type, + Priority: swap.Priority, Size: swap.Size, Used: swap.Used}) + } + + return metrics, nil +} + +func (c *swapCollector) Update(ch chan<- prometheus.Metric) error { + swaps, err := c.getSwapInfo() + if err != nil { + return fmt.Errorf("couldn't get swap information: %w", err) + } + + for _, swap := range swaps { + swapLabelValues := []string{swap.Device, swap.Type} + + // Export swap size in bytes + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, swapSubsystem, "size_bytes"), + "Swap device size in bytes.", + []string{"device", "swap_type"}, nil, + ), + prometheus.GaugeValue, + // Size is provided in kbytes (not bytes), translate to bytes + // see https://github.com/torvalds/linux/blob/fd94619c43360eb44d28bd3ef326a4f85c600a07/mm/swapfile.c#L3079-L3080 + float64(swap.Size*1024), + swapLabelValues..., + ) + + // Export swap used in bytes + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, swapSubsystem, "used_bytes"), + "Swap device used in bytes.", + swapLabelNames, nil, + ), + prometheus.GaugeValue, + // Swap used is also provided in kbytes, translate to bytes + float64(swap.Used*1024), + swapLabelValues..., + ) + + // Export swap priority + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, swapSubsystem, "priority"), + "Swap device priority.", + swapLabelNames, nil, + ), + prometheus.GaugeValue, + float64(swap.Priority), + swapLabelValues..., + ) + + } + + return nil +} diff --git a/collector/swap_linux_test.go b/collector/swap_linux_test.go new file mode 100644 index 00000000..bd9e44eb --- /dev/null +++ b/collector/swap_linux_test.go @@ -0,0 +1,58 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !noswap +// +build !noswap + +package collector + +import ( + "io" + "log/slog" + "testing" +) + +func TestSwap(t *testing.T) { + *procPath = "fixtures/proc" + logger := slog.New(slog.NewTextHandler(io.Discard, nil)) + + collector, err := NewSwapCollector(logger) + if err != nil { + panic(err) + } + + swapInfo, err := collector.(*swapCollector).getSwapInfo() + if err != nil { + panic(err) + } + + if want, got := "/dev/zram0", swapInfo[0].Device; want != got { + t.Errorf("want swap device %s, got %s", want, got) + } + + if want, got := "partition", swapInfo[0].Type; want != got { + t.Errorf("want swap type %s, got %s", want, got) + } + + if want, got := 100, swapInfo[0].Priority; want != got { + t.Errorf("want swap priority %d, got %d", want, got) + } + + if want, got := 8388604, swapInfo[0].Size; want != got { + t.Errorf("want swap size %d, got %d", want, got) + } + + if want, got := 76, swapInfo[0].Used; want != got { + t.Errorf("want swpa used %d, got %d", want, got) + } +} From dedb4712c895f47554b5f4ba07bc1556eb6280ef Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Mon, 13 Oct 2025 22:37:15 +0100 Subject: [PATCH 028/109] perf collector: add tlb_data metrics (#3436) This lets users see stats on TLB cache hits and misses for data. Signed-off-by: Bryan Boreham --- collector/perf_linux.go | 82 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 77 insertions(+), 5 deletions(-) diff --git a/collector/perf_linux.go b/collector/perf_linux.go index b62d9b80..67b48995 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -86,10 +86,10 @@ var ( "BPUReadHit": perf.BPUReadHitProfiler, "BPUReadMiss": perf.BPUReadMissProfiler, // "L1InstrReadHit": perf.L1InstrReadHitProfiler, - // "DataTLBReadHit": perf.DataTLBReadHitProfiler, - // "DataTLBReadMiss": perf.DataTLBReadMissProfiler, - // "DataTLBWriteHit": perf.DataTLBWriteHitProfiler, - // "DataTLBWriteMiss": perf.DataTLBWriteMissProfiler, + "DataTLBReadHit": perf.DataTLBReadHitProfiler, + "DataTLBReadMiss": perf.DataTLBReadMissProfiler, + "DataTLBWriteHit": perf.DataTLBWriteHitProfiler, + "DataTLBWriteMiss": perf.DataTLBWriteMissProfiler, // "NodeCacheReadHit": perf.NodeCacheReadHitProfiler, // "NodeCacheReadMiss": perf.NodeCacheReadMissProfiler, // "NodeCacheWriteHit": perf.NodeCacheWriteHitProfiler, @@ -355,7 +355,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } } } - cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler + cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.DataTLBReadHitProfiler | perf.DataTLBReadMissProfiler | perf.DataTLBWriteHitProfiler | perf.DataTLBWriteMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler if *perfCaProfilerFlag != nil && len(*perfCaProfilerFlag) > 0 { cacheProfilers = 0 for _, cf := range *perfCaProfilerFlag { @@ -615,6 +615,46 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { []string{"cpu"}, nil, ), + "cache_tlb_data_read_hits_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_read_hits_total", + ), + "Number of data TLB read hits", + []string{"cpu"}, + nil, + ), + "cache_tlb_data_read_misses_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_read_misses_total", + ), + "Number of data TLB read misses", + []string{"cpu"}, + nil, + ), + "cache_tlb_data_write_hits_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_write_hits_total", + ), + "Number of data TLB write hits", + []string{"cpu"}, + nil, + ), + "cache_tlb_data_write_misses_total": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "cache_tlb_data_write_misses_total", + ), + "Number of data TLB write misses", + []string{"cpu"}, + nil, + ), "cache_ll_read_hits_total": prometheus.NewDesc( prometheus.BuildFQName( namespace, @@ -895,6 +935,38 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error { ) } + if cacheProfile.DataTLBReadHit != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_read_hits_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBReadHit), + cpuid, + ) + } + + if cacheProfile.DataTLBReadMiss != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_read_misses_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBReadMiss), + cpuid, + ) + } + + if cacheProfile.DataTLBWriteHit != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_write_hits_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBWriteHit), + cpuid, + ) + } + + if cacheProfile.DataTLBWriteMiss != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["cache_tlb_data_write_misses_total"], + prometheus.CounterValue, float64(*cacheProfile.DataTLBWriteMiss), + cpuid, + ) + } + if cacheProfile.LastLevelReadHit != nil { ch <- prometheus.MustNewConstMetric( c.desc["cache_ll_read_hits_total"], From b7a54fe3113e52b77424c94f778f78bf86edf5ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 11:54:20 +0200 Subject: [PATCH 029/109] build(deps): bump vmactions/netbsd-vm from 1.1.9 to 1.2.0 (#3433) Bumps [vmactions/netbsd-vm](https://github.com/vmactions/netbsd-vm) from 1.1.9 to 1.2.0. - [Release notes](https://github.com/vmactions/netbsd-vm/releases) - [Commits](https://github.com/vmactions/netbsd-vm/compare/d0228be27fbaba19418cc1b332609a895cf16561...7aea50f9eb16df034be5d71eb81fea9804505c28) --- updated-dependencies: - dependency-name: vmactions/netbsd-vm dependency-version: 1.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 6c61e177..08dfd9f1 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -122,7 +122,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/netbsd-vm@d0228be27fbaba19418cc1b332609a895cf16561 # v1.1.9 + uses: vmactions/netbsd-vm@7aea50f9eb16df034be5d71eb81fea9804505c28 # v1.2.0 with: copyback: false envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' From be0dcd85e21ae9c064f6a5ddee21a9b221ed77b5 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Wed, 22 Oct 2025 14:43:25 +0200 Subject: [PATCH 030/109] Rollback FreeBSD version (#3440) Rollback to FreeBSD 14.x to avoid breakage in the 15.x pre-release. Signed-off-by: Ben Kochie --- .github/workflows/bsd.yml | 2 +- collector/fixtures/e2e-output-freebsd.txt | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 08dfd9f1..23a1df2a 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -30,7 +30,7 @@ jobs: - name: test-e2e uses: vmactions/freebsd-vm@487ce35b96fae3e60d45b521735f5aa436ecfade # v1.2.4 with: - release: "15.0" + release: "14.3" copyback: false envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' usesh: true diff --git a/collector/fixtures/e2e-output-freebsd.txt b/collector/fixtures/e2e-output-freebsd.txt index 0356d44e..fad76e6f 100644 --- a/collector/fixtures/e2e-output-freebsd.txt +++ b/collector/fixtures/e2e-output-freebsd.txt @@ -261,18 +261,6 @@ node_xfrm_out_state_proto_error_packets_total 4542 # HELP node_xfrm_out_state_seq_error_packets_total Sequence error i.e. Sequence number overflow # TYPE node_xfrm_out_state_seq_error_packets_total counter node_xfrm_out_state_seq_error_packets_total 543 -# HELP node_zfs_arcstats_c_min_bytes ZFS ARC minimum size -# TYPE node_zfs_arcstats_c_min_bytes gauge -node_zfs_arcstats_c_min_bytes 1.99932544e+08 -# HELP node_zfs_arcstats_mfu_ghost_size ZFS ARC MFU ghost size -# TYPE node_zfs_arcstats_mfu_ghost_size gauge -node_zfs_arcstats_mfu_ghost_size 0 -# HELP node_zfs_arcstats_mru_ghost_hits_total ZFS ARC MRU ghost hits -# TYPE node_zfs_arcstats_mru_ghost_hits_total counter -node_zfs_arcstats_mru_ghost_hits_total 0 -# HELP node_zfs_arcstats_pm_bytes ZFS ARC meta MRU target frac -# TYPE node_zfs_arcstats_pm_bytes gauge -node_zfs_arcstats_pm_bytes 2.147483648e+09 # HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler. # TYPE promhttp_metric_handler_errors_total counter promhttp_metric_handler_errors_total{cause="encoding"} 0 From f3b02df012f5191fd8c847bdd2ffa2fe95bccaa1 Mon Sep 17 00:00:00 2001 From: slicesequal Date: Wed, 22 Oct 2025 20:44:40 +0800 Subject: [PATCH 031/109] chore: fix some typos in comment (#3399) Signed-off-by: slicesequal --- collector/ntp.go | 2 +- collector/pcidevice_linux.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/collector/ntp.go b/collector/ntp.go index 10e639b1..406920e3 100644 --- a/collector/ntp.go +++ b/collector/ntp.go @@ -60,7 +60,7 @@ func init() { // NewNtpCollector returns a new Collector exposing sanity of local NTP server. // Default definition of "local" is: // - collector.ntp.server address is a loopback address (or collector.ntp.server-is-mine flag is turned on) -// - the server is reachable with outgoin IP_TTL = 1 +// - the server is reachable with outgoing IP_TTL = 1 func NewNtpCollector(logger *slog.Logger) (Collector, error) { ipaddr := net.ParseIP(*ntpServer) if !*ntpServerIsLocal && (ipaddr == nil || !ipaddr.IsLoopback()) { diff --git a/collector/pcidevice_linux.go b/collector/pcidevice_linux.go index a7e7f6d3..d5ed020a 100644 --- a/collector/pcidevice_linux.go +++ b/collector/pcidevice_linux.go @@ -125,7 +125,7 @@ func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { ch <- c.infoDesc.mustNewConstMetric(1.0, values...) - // MaxLinkSpeed and CurrentLinkSpeed are represnted in GT/s + // MaxLinkSpeed and CurrentLinkSpeed are represented in GT/s maxLinkSpeedTS := float64(int64(*device.MaxLinkSpeed * 1e9)) currentLinkSpeedTS := float64(int64(*device.CurrentLinkSpeed * 1e9)) From 61c461ce0a00656988aad3c730bfad75ab31e9bf Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Wed, 22 Oct 2025 14:55:47 +0200 Subject: [PATCH 032/109] Modernize codebase (#3431) Run Go modernize tool and apply fixes. Signed-off-by: Ben Kochie --- collector/bonding_linux.go | 4 ++-- collector/collector.go | 2 +- collector/cpufreq_linux.go | 4 ++-- collector/ethtool_linux_test.go | 4 ++-- collector/filesystem_linux.go | 5 +---- collector/hwmon_linux.go | 8 +++----- collector/logind_linux.go | 19 +++++++++---------- collector/netstat_linux.go | 9 +++------ collector/perf_linux.go | 2 +- collector/sysctl_linux.go | 8 ++++---- collector/textfile.go | 10 ++-------- collector/wifi_linux.go | 2 +- collector/zfs_linux.go | 4 ++-- collector/zfs_linux_test.go | 22 +++++++++++----------- node_exporter_test.go | 4 ++-- 15 files changed, 46 insertions(+), 61 deletions(-) diff --git a/collector/bonding_linux.go b/collector/bonding_linux.go index bfec32fd..4e30cac5 100644 --- a/collector/bonding_linux.go +++ b/collector/bonding_linux.go @@ -78,13 +78,13 @@ func readBondingStats(root string) (status map[string][2]int, err error) { if err != nil { return nil, err } - for _, master := range strings.Fields(string(masters)) { + for master := range strings.FieldsSeq(string(masters)) { slaves, err := os.ReadFile(filepath.Join(root, master, "bonding", "slaves")) if err != nil { return nil, err } sstat := [2]int{0, 0} - for _, slave := range strings.Fields(string(slaves)) { + for slave := range strings.FieldsSeq(string(slaves)) { state, err := os.ReadFile(filepath.Join(root, master, fmt.Sprintf("lower_%s", slave), "bonding_slave", "mii_status")) if errors.Is(err, os.ErrNotExist) { // some older? kernels use slave_ prefix diff --git a/collector/collector.go b/collector/collector.go index 9768fb6a..18ff7388 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -199,7 +199,7 @@ func IsNoDataError(err error) bool { } // pushMetric helps construct and convert a variety of value types into Prometheus float64 metrics. -func pushMetric(ch chan<- prometheus.Metric, fieldDesc *prometheus.Desc, name string, value interface{}, valueType prometheus.ValueType, labelValues ...string) { +func pushMetric(ch chan<- prometheus.Metric, fieldDesc *prometheus.Desc, name string, value any, valueType prometheus.ValueType, labelValues ...string) { var fVal float64 switch val := value.(type) { case uint8: diff --git a/collector/cpufreq_linux.go b/collector/cpufreq_linux.go index 79e2308c..dbeaa491 100644 --- a/collector/cpufreq_linux.go +++ b/collector/cpufreq_linux.go @@ -106,8 +106,8 @@ func (c *cpuFreqCollector) Update(ch chan<- prometheus.Metric) error { ) } if stats.Governor != "" { - availableGovernors := strings.Split(stats.AvailableGovernors, " ") - for _, g := range availableGovernors { + availableGovernors := strings.SplitSeq(stats.AvailableGovernors, " ") + for g := range availableGovernors { state := 0 if g == stats.Governor { state = 1 diff --git a/collector/ethtool_linux_test.go b/collector/ethtool_linux_test.go index c72adcb4..3cd00809 100644 --- a/collector/ethtool_linux_test.go +++ b/collector/ethtool_linux_test.go @@ -139,7 +139,7 @@ func (e *EthtoolFixture) Stats(intf string) (map[string]uint64, error) { func readModes(modes string) uint32 { var out uint32 - for _, mode := range strings.Split(modes, " ") { + for mode := range strings.SplitSeq(modes, " ") { switch mode { case "10baseT/Half": out |= (1 << unix.ETHTOOL_LINK_MODE_10baseT_Half_BIT) @@ -162,7 +162,7 @@ func readModes(modes string) uint32 { func readPortTypes(portTypes string) uint32 { var out uint32 - for _, ptype := range strings.Split(portTypes, " ") { + for ptype := range strings.SplitSeq(portTypes, " ") { ptype = strings.Trim(ptype, " \t") if ptype == "TP" { out |= (1 << unix.ETHTOOL_LINK_MODE_TP_BIT) diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index d0ced514..c213d969 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -58,10 +58,7 @@ func (c *filesystemCollector) GetStats() ([]filesystemStats, error) { statChan := make(chan filesystemStats) wg := sync.WaitGroup{} - workerCount := *statWorkerCount - if workerCount < 1 { - workerCount = 1 - } + workerCount := max(*statWorkerCount, 1) for i := 0; i < workerCount; i++ { wg.Add(1) diff --git a/collector/hwmon_linux.go b/collector/hwmon_linux.go index ad8da41b..905a4336 100644 --- a/collector/hwmon_linux.go +++ b/collector/hwmon_linux.go @@ -23,6 +23,7 @@ import ( "os" "path/filepath" "regexp" + "slices" "strconv" "strings" @@ -154,11 +155,8 @@ func collectSensorData(dir string, data map[string]map[string]string) error { continue } - for _, t := range hwmonSensorTypes { - if t == sensorType { - addValueFile(data, sensorType+strconv.Itoa(sensorNum), sensorProperty, filepath.Join(dir, file.Name())) - break - } + if slices.Contains(hwmonSensorTypes, sensorType) { + addValueFile(data, sensorType+strconv.Itoa(sensorNum), sensorProperty, filepath.Join(dir, file.Name())) } } return nil diff --git a/collector/logind_linux.go b/collector/logind_linux.go index f5606ee1..140a7b93 100644 --- a/collector/logind_linux.go +++ b/collector/logind_linux.go @@ -20,6 +20,7 @@ import ( "fmt" "log/slog" "os" + "slices" "strconv" "github.com/godbus/dbus/v5" @@ -138,10 +139,8 @@ func collectMetrics(ch chan<- prometheus.Metric, c logindInterface) error { } func knownStringOrOther(value string, known []string) string { - for i := range known { - if value == known[i] { - return value - } + if slices.Contains(known, value) { + return value } return "other" @@ -176,19 +175,19 @@ func newDbus() (*logindDbus, error) { } func (c *logindDbus) listSeats() ([]string, error) { - var result [][]interface{} + var result [][]any err := c.object.Call(dbusObject+".Manager.ListSeats", 0).Store(&result) if err != nil { return nil, err } - resultInterface := make([]interface{}, len(result)) + resultInterface := make([]any, len(result)) for i := range result { resultInterface[i] = result[i] } seats := make([]logindSeatEntry, len(result)) - seatsInterface := make([]interface{}, len(seats)) + seatsInterface := make([]any, len(seats)) for i := range seats { seatsInterface[i] = &seats[i] } @@ -209,19 +208,19 @@ func (c *logindDbus) listSeats() ([]string, error) { } func (c *logindDbus) listSessions() ([]logindSessionEntry, error) { - var result [][]interface{} + var result [][]any err := c.object.Call(dbusObject+".Manager.ListSessions", 0).Store(&result) if err != nil { return nil, err } - resultInterface := make([]interface{}, len(result)) + resultInterface := make([]any, len(result)) for i := range result { resultInterface[i] = result[i] } sessions := make([]logindSessionEntry, len(result)) - sessionsInterface := make([]interface{}, len(sessions)) + sessionsInterface := make([]any, len(sessions)) for i := range sessions { sessionsInterface[i] = &sessions[i] } diff --git a/collector/netstat_linux.go b/collector/netstat_linux.go index 1aa92340..c59183d7 100644 --- a/collector/netstat_linux.go +++ b/collector/netstat_linux.go @@ -22,6 +22,7 @@ import ( "fmt" "io" "log/slog" + "maps" "os" "regexp" "strconv" @@ -73,12 +74,8 @@ func (c *netStatCollector) Update(ch chan<- prometheus.Metric) error { } // Merge the results of snmpStats into netStats (collisions are possible, but // we know that the keys are always unique for the given use case). - for k, v := range snmpStats { - netStats[k] = v - } - for k, v := range snmp6Stats { - netStats[k] = v - } + maps.Copy(netStats, snmpStats) + maps.Copy(netStats, snmp6Stats) for protocol, protocolStats := range netStats { for name, value := range protocolStats { key := protocol + "_" + name diff --git a/collector/perf_linux.go b/collector/perf_linux.go index 67b48995..2fc1676d 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -118,7 +118,7 @@ func perfTracepointFlagToTracepoints(tracepointsFlag []string) ([]*perfTracepoin func perfCPUFlagToCPUs(cpuFlag string) ([]int, error) { var err error cpus := []int{} - for _, subset := range strings.Split(cpuFlag, ",") { + for subset := range strings.SplitSeq(cpuFlag, ",") { // First parse a single CPU. if !strings.Contains(subset, "-") { cpu, err := strconv.Atoi(subset) diff --git a/collector/sysctl_linux.go b/collector/sysctl_linux.go index ac7022fb..0915b4e6 100644 --- a/collector/sysctl_linux.go +++ b/collector/sysctl_linux.go @@ -86,7 +86,7 @@ func (c *sysctlCollector) Update(ch chan<- prometheus.Metric) error { func (c *sysctlCollector) newMetrics(s *sysctl) ([]prometheus.Metric, error) { var ( - values interface{} + values any length int err error ) @@ -151,7 +151,7 @@ func (s *sysctl) metricName() string { return SanitizeMetricName(s.name) } -func (s *sysctl) newConstMetric(v interface{}) prometheus.Metric { +func (s *sysctl) newConstMetric(v any) prometheus.Metric { if s.numeric { return prometheus.MustNewConstMetric( prometheus.NewDesc( @@ -171,7 +171,7 @@ func (s *sysctl) newConstMetric(v interface{}) prometheus.Metric { ) } -func (s *sysctl) newIndexedMetrics(v interface{}) []prometheus.Metric { +func (s *sysctl) newIndexedMetrics(v any) []prometheus.Metric { desc := prometheus.NewDesc( prometheus.BuildFQName(namespace, "sysctl", s.metricName()), fmt.Sprintf("sysctl %s", s.name), @@ -195,7 +195,7 @@ func (s *sysctl) newIndexedMetrics(v interface{}) []prometheus.Metric { } } -func (s *sysctl) newMappedMetrics(v interface{}) ([]prometheus.Metric, error) { +func (s *sysctl) newMappedMetrics(v any) ([]prometheus.Metric, error) { switch values := v.(type) { case []int: metrics := make([]prometheus.Metric, len(values)) diff --git a/collector/textfile.go b/collector/textfile.go index c6d21872..c61a6a62 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -21,6 +21,7 @@ import ( "log/slog" "os" "path/filepath" + "slices" "sort" "strings" "time" @@ -91,14 +92,7 @@ func convertMetricFamily(metricFamily *dto.MetricFamily, ch chan<- prometheus.Me } for k := range allLabelNames { - present := false - for _, name := range names { - if k == name { - present = true - break - } - } - if !present { + if !slices.Contains(names, k) { names = append(names, k) values = append(values, "") } diff --git a/collector/wifi_linux.go b/collector/wifi_linux.go index c84cdd71..0f651bce 100644 --- a/collector/wifi_linux.go +++ b/collector/wifi_linux.go @@ -363,7 +363,7 @@ type mockWifiStater struct { fixtures string } -func (s *mockWifiStater) unmarshalJSONFile(filename string, v interface{}) error { +func (s *mockWifiStater) unmarshalJSONFile(filename string, v any) error { b, err := os.ReadFile(filepath.Join(s.fixtures, filename)) if err != nil { return err diff --git a/collector/zfs_linux.go b/collector/zfs_linux.go index ff544a79..b714a18b 100644 --- a/collector/zfs_linux.go +++ b/collector/zfs_linux.go @@ -124,7 +124,7 @@ func (c *zfsCollector) updateZfsStats(subsystem string, ch chan<- prometheus.Met } defer file.Close() - return c.parseProcfsFile(file, c.linuxPathMap[subsystem], func(s zfsSysctl, v interface{}) { + return c.parseProcfsFile(file, c.linuxPathMap[subsystem], func(s zfsSysctl, v any) { var valueAsFloat64 float64 switch value := v.(type) { case int64: @@ -212,7 +212,7 @@ func (c *zfsCollector) updatePoolStats(ch chan<- prometheus.Metric) error { return nil } -func (c *zfsCollector) parseProcfsFile(reader io.Reader, fmtExt string, handler func(zfsSysctl, interface{})) error { +func (c *zfsCollector) parseProcfsFile(reader io.Reader, fmtExt string, handler func(zfsSysctl, any)) error { scanner := bufio.NewScanner(reader) parseLine := false diff --git a/collector/zfs_linux_test.go b/collector/zfs_linux_test.go index 7b019e8c..0b77a522 100644 --- a/collector/zfs_linux_test.go +++ b/collector/zfs_linux_test.go @@ -35,7 +35,7 @@ func TestArcstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(arcstatsFile, "arcstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(arcstatsFile, "arcstats", func(s zfsSysctl, v any) { if s == zfsSysctl("kstat.zfs.misc.arcstats.hits") { if v.(uint64) != 8772612 { @@ -72,7 +72,7 @@ func TestZfetchstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(zfetchstatsFile, "zfetchstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(zfetchstatsFile, "zfetchstats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.zfetchstats.hits") { return @@ -108,7 +108,7 @@ func TestZilParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(zilFile, "zil", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(zilFile, "zil", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.zil.zil_commit_count") { return @@ -144,7 +144,7 @@ func TestVdevCacheStatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(vdevCacheStatsFile, "vdev_cache_stats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(vdevCacheStatsFile, "vdev_cache_stats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.vdev_cache_stats.delegations") { return @@ -180,7 +180,7 @@ func TestXuioStatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(xuioStatsFile, "xuio_stats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(xuioStatsFile, "xuio_stats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.xuio_stats.onloan_read_buf") { return @@ -216,7 +216,7 @@ func TestFmParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(fmFile, "fm", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(fmFile, "fm", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.fm.erpt-dropped") { return @@ -252,7 +252,7 @@ func TestDmuTxParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(dmuTxFile, "dmu_tx", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(dmuTxFile, "dmu_tx", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.dmu_tx.dmu_tx_assigned") { return @@ -417,7 +417,7 @@ func TestAbdstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(abdstatsFile, "abdstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(abdstatsFile, "abdstats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.abdstats.linear_data_size") { return @@ -453,7 +453,7 @@ func TestDbufstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(dbufstatsFile, "dbufstats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(dbufstatsFile, "dbufstats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.dbufstats.hash_hits") { return @@ -489,7 +489,7 @@ func TestDnodestatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(dnodestatsFile, "dnodestats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(dnodestatsFile, "dnodestats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.dnodestats.dnode_hold_alloc_hits") { return @@ -525,7 +525,7 @@ func TestVdevMirrorstatsParsing(t *testing.T) { } handlerCalled := false - err = c.parseProcfsFile(vdevMirrorStatsFile, "vdev_mirror_stats", func(s zfsSysctl, v interface{}) { + err = c.parseProcfsFile(vdevMirrorStatsFile, "vdev_mirror_stats", func(s zfsSysctl, v any) { if s != zfsSysctl("kstat.zfs.misc.vdev_mirror_stats.preferred_not_found") { return diff --git a/node_exporter_test.go b/node_exporter_test.go index 6fbbc7ee..0d6b41e4 100644 --- a/node_exporter_test.go +++ b/node_exporter_test.go @@ -59,7 +59,7 @@ func TestFileDescriptorLeak(t *testing.T) { if err != nil { return err } - for i := 0; i < 5; i++ { + for range 5 { if err := queryExporter(address); err != nil { return err } @@ -131,7 +131,7 @@ func runCommandAndTests(cmd *exec.Cmd, address string, fn func(pid int) error) e return fmt.Errorf("failed to start command: %s", err) } time.Sleep(50 * time.Millisecond) - for i := 0; i < 10; i++ { + for i := range 10 { if err := queryExporter(address); err == nil { break } From 5b9db7036aa664cb168a4932d1e601f8deb8aaaf Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Wed, 22 Oct 2025 14:56:34 +0200 Subject: [PATCH 033/109] Update common Prometheus files (#3423) Signed-off-by: prombot Co-authored-by: Ben Kochie --- .github/workflows/golangci-lint.yml | 5 ++++- Makefile.common | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 1816a556..79891553 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -34,8 +34,11 @@ jobs: - name: Install snmp_exporter/generator dependencies run: sudo apt-get update && sudo apt-get -y install libsnmp-dev if: github.repository == 'prometheus/snmp_exporter' + - name: Get golangci-lint version + id: golangci-lint-version + run: echo "version=$(make print-golangci-lint-version)" >> $GITHUB_OUTPUT - name: Lint uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 with: args: --verbose - version: v2.2.1 + version: ${{ steps.golangci-lint-version.outputs.version }} diff --git a/Makefile.common b/Makefile.common index 1f4c9025..6762d0f8 100644 --- a/Makefile.common +++ b/Makefile.common @@ -61,7 +61,7 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v2.2.1 +GOLANGCI_LINT_VERSION ?= v2.4.0 GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. @@ -266,6 +266,10 @@ $(GOLANGCI_LINT): | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION) endif +.PHONY: common-print-golangci-lint-version +common-print-golangci-lint-version: + @echo $(GOLANGCI_LINT_VERSION) + .PHONY: precheck precheck:: From 7ea13dae7614bf4839eb70a003aa1718d4dfb664 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 15:10:56 +0200 Subject: [PATCH 034/109] build(deps): bump github.com/prometheus/procfs from 0.17.0 to 0.18.0 (#3444) Bumps [github.com/prometheus/procfs](https://github.com/prometheus/procfs) from 0.17.0 to 0.18.0. - [Release notes](https://github.com/prometheus/procfs/releases) - [Commits](https://github.com/prometheus/procfs/compare/v0.17.0...v0.18.0) --- updated-dependencies: - dependency-name: github.com/prometheus/procfs dependency-version: 0.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f6264284..5ac37f6c 100644 --- a/go.mod +++ b/go.mod @@ -25,10 +25,10 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.66.1 github.com/prometheus/exporter-toolkit v0.14.1 - github.com/prometheus/procfs v0.17.0 + github.com/prometheus/procfs v0.18.0 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20250911091902-df9299821621 - golang.org/x/sys v0.36.0 + golang.org/x/sys v0.37.0 howett.net/plist v1.0.1 ) diff --git a/go.sum b/go.sum index 2c0cf80d..ee07ca8b 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9Z github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/exporter-toolkit v0.14.1 h1:uKPE4ewweVRWFainwvAcHs3uw15pjw2dk3I7b+aNo9o= github.com/prometheus/exporter-toolkit v0.14.1/go.mod h1:di7yaAJiaMkcjcz48f/u4yRPwtyuxTU5Jr4EnM2mhtQ= -github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= -github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= +github.com/prometheus/procfs v0.18.0 h1:2QTA9cKdznfYJz7EDaa7IiJobHuV7E1WzeBwcrhk0ao= +github.com/prometheus/procfs v0.18.0/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/safchain/ethtool v0.6.2 h1:O3ZPFAKEUEfbtE6J/feEe2Ft7dIJ2Sy8t4SdMRiIMHY= @@ -115,8 +115,8 @@ golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= From 3068421fb1938080972ed2f433afb02307ef8e2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 15:11:37 +0200 Subject: [PATCH 035/109] build(deps): bump github.com/mdlayher/ethtool from 0.4.1 to 0.5.0 (#3445) Bumps [github.com/mdlayher/ethtool](https://github.com/mdlayher/ethtool) from 0.4.1 to 0.5.0. - [Release notes](https://github.com/mdlayher/ethtool/releases) - [Commits](https://github.com/mdlayher/ethtool/compare/v0.4.1...v0.5.0) --- updated-dependencies: - dependency-name: github.com/mdlayher/ethtool dependency-version: 0.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5ac37f6c..a7dfa5cf 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/jsimonetti/rtnetlink/v2 v2.0.5 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 - github.com/mdlayher/ethtool v0.4.1 + github.com/mdlayher/ethtool v0.5.0 github.com/mdlayher/netlink v1.8.0 github.com/mdlayher/wifi v0.6.0 github.com/opencontainers/selinux v1.12.0 diff --git a/go.sum b/go.sum index ee07ca8b..1d7a75c7 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,8 @@ github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/mattn/go-xmlrpc v0.0.3 h1:Y6WEMLEsqs3RviBrAa1/7qmbGB7DVD3brZIbqMbQdGY= github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA= -github.com/mdlayher/ethtool v0.4.1 h1:BSUOGbnNNuPfGRFlKwtONPLJAQiLw8JdgS7E+SuN3/M= -github.com/mdlayher/ethtool v0.4.1/go.mod h1:9XP/78xTcyrfP8HvM0pI5ETaGHAuxrHRs+xkst29NlY= +github.com/mdlayher/ethtool v0.5.0 h1:7MpuhvUE574uVQDfkXotePLdfSNetlx3GDikFcdlVQA= +github.com/mdlayher/ethtool v0.5.0/go.mod h1:ROV9hwnETqDdpLv8E8WkCa8FymlkhFEeiB9cg3qzNkk= github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw= github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o= github.com/mdlayher/netlink v1.8.0 h1:e7XNIYJKD7hUct3Px04RuIGJbBxy1/c4nX7D5YyvvlM= From 1589b299978e82ab14927d304a7d062620ba9c85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 15:20:15 +0200 Subject: [PATCH 036/109] build(deps): bump github.com/prometheus/common from 0.66.1 to 0.67.1 (#3441) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.66.1 to 0.67.1. - [Release notes](https://github.com/prometheus/common/releases) - [Changelog](https://github.com/prometheus/common/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/common/compare/v0.66.1...v0.67.1) --- updated-dependencies: - dependency-name: github.com/prometheus/common dependency-version: 0.67.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 16 ++++++++-------- go.sum | 42 ++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index a7dfa5cf..74a911fa 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.66.1 + github.com/prometheus/common v0.67.1 github.com/prometheus/exporter-toolkit v0.14.1 github.com/prometheus/procfs v0.18.0 github.com/safchain/ethtool v0.6.2 @@ -33,7 +33,7 @@ require ( ) require ( - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect + github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/dennwc/ioctl v1.0.0 // indirect @@ -49,11 +49,11 @@ require ( github.com/xhit/go-str2duration/v2 v2.1.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect golang.org/x/sync v0.17.0 // indirect - golang.org/x/text v0.28.0 // indirect - google.golang.org/protobuf v1.36.8 // indirect + golang.org/x/text v0.29.0 // indirect + google.golang.org/protobuf v1.36.10 // indirect ) diff --git a/go.sum b/go.sum index 1d7a75c7..53487f34 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/beevik/ntp v1.4.3 h1:PlbTvE5NNy4QHmA4Mg57n7mcFTmr1W1j3gcK7L1lqho= github.com/beevik/ntp v1.4.3/go.mod h1:Unr8Zg+2dRn7d8bHFuehIMSvvUYssHMxW3Q5Nx4RW5Q= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -76,8 +76,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= +github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/exporter-toolkit v0.14.1 h1:uKPE4ewweVRWFainwvAcHs3uw15pjw2dk3I7b+aNo9o= github.com/prometheus/exporter-toolkit v0.14.1/go.mod h1:di7yaAJiaMkcjcz48f/u4yRPwtyuxTU5Jr4EnM2mhtQ= github.com/prometheus/procfs v0.18.0 h1:2QTA9cKdznfYJz7EDaa7IiJobHuV7E1WzeBwcrhk0ao= @@ -89,8 +89,14 @@ github.com/safchain/ethtool v0.6.2/go.mod h1:VS7cn+bP3Px3rIq55xImBiZGHVLNyBh5dqG github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:GfSdC6wKfTGcgCS7BtzF5694Amne1pGCSTY252WhlEY= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= @@ -101,31 +107,31 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU= golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= From 4f4ff38d9b2b5e7018a704a70cf7a282a16006c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 15:55:38 +0200 Subject: [PATCH 037/109] build(deps): bump github.com/beevik/ntp from 1.4.3 to 1.5.0 (#3442) Bumps [github.com/beevik/ntp](https://github.com/beevik/ntp) from 1.4.3 to 1.5.0. - [Release notes](https://github.com/beevik/ntp/releases) - [Changelog](https://github.com/beevik/ntp/blob/main/RELEASE_NOTES.md) - [Commits](https://github.com/beevik/ntp/compare/v1.4.3...v1.5.0) --- updated-dependencies: - dependency-name: github.com/beevik/ntp dependency-version: 1.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 74a911fa..c5d76440 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 - github.com/beevik/ntp v1.4.3 + github.com/beevik/ntp v1.5.0 github.com/coreos/go-systemd/v22 v22.6.0 github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 github.com/ema/qdisc v1.0.0 diff --git a/go.sum b/go.sum index 53487f34..470b53a0 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjH github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= -github.com/beevik/ntp v1.4.3 h1:PlbTvE5NNy4QHmA4Mg57n7mcFTmr1W1j3gcK7L1lqho= -github.com/beevik/ntp v1.4.3/go.mod h1:Unr8Zg+2dRn7d8bHFuehIMSvvUYssHMxW3Q5Nx4RW5Q= +github.com/beevik/ntp v1.5.0 h1:y+uj/JjNwlY2JahivxYvtmv4ehfi3h74fAuABB9ZSM4= +github.com/beevik/ntp v1.5.0/go.mod h1:mJEhBrwT76w9D+IfOEGvuzyuudiW9E52U2BaTrMOYow= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= From 2f8f9209511b2ca879eec85fbe7a13d384505891 Mon Sep 17 00:00:00 2001 From: Jain Johny Date: Thu, 23 Oct 2025 00:39:25 +0530 Subject: [PATCH 038/109] additional metrics for pcidevice and id to name conversion (#3425) * * Rebase from upstream * add sriov, power info support and pci id name resolution Signed-off-by: Jain Johny * fix/remove debug lines Signed-off-by: Jain Johny --------- Signed-off-by: Jain Johny * add numa_node and missing test output file (#2) * add numa_node and missing test output file Signed-off-by: Jain Johny * use c.logger for debug line Signed-off-by: Jain Johny * point to procfs master Signed-off-by: Jain Johny * include device_id in e2e-output pecidevice output Signed-off-by: Jain Johny * fix typo in e2e-output.txt Signed-off-by: Jain Johny * update test cases in e2e-64k-page-output.txt Signed-off-by: Jain Johny * fixing the rebase Signed-off-by: Jain Johny * move power_state to enum metric type, dont emit unavailable metrics Signed-off-by: Jain Johny * change test fixtures for power state change Signed-off-by: Jain Johny * change test fixtures for numa_node change Signed-off-by: Jain Johny --------- Signed-off-by: Jain Johny --- collector/fixtures/e2e-64k-page-output.txt | 60 +- collector/fixtures/e2e-output.txt | 60 +- collector/fixtures/pci.ids | 26 + collector/fixtures/pcidevice-names-output.txt | 95 + collector/fixtures/sys.ttar | 2183 +++++++++++++++++ collector/pcidevice_linux.go | 535 +++- collector/pcidevice_linux_test.go | 89 + 7 files changed, 3005 insertions(+), 43 deletions(-) create mode 100644 collector/fixtures/pci.ids create mode 100644 collector/fixtures/pcidevice-names-output.txt create mode 100644 collector/pcidevice_linux_test.go diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index 1914288e..207a1a07 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -2836,22 +2836,78 @@ node_os_version{id="ubuntu",id_like="debian",name="Ubuntu"} 20.04 # TYPE node_pcidevice_current_link_transfers_per_second gauge node_pcidevice_current_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_current_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_current_link_width Value of current link's width (number of lanes) # TYPE node_pcidevice_current_link_width gauge node_pcidevice_current_link_width{bus="00",device="02",function="1",segment="0000"} 4 node_pcidevice_current_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_current_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_d3cold_allowed Whether the PCIe device supports D3cold power state (0/1). +# TYPE node_pcidevice_d3cold_allowed gauge +node_pcidevice_d3cold_allowed{bus="00",device="02",function="1",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="45",device="00",function="0",segment="0000"} 1 # HELP node_pcidevice_info Non-numeric data from /sys/bus/pci/devices/, value is always 1. # TYPE node_pcidevice_info gauge -node_pcidevice_info{bus="00",class_id="0x060400",device="02",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1634"} 1 -node_pcidevice_info{bus="01",class_id="0x010802",device="00",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0x540a"} 1 +node_pcidevice_info{bus="00",class_id="0x060400",device="02",device_id="0x1634",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1022"} 1 +node_pcidevice_info{bus="01",class_id="0x010802",device="00",device_id="0x540a",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0xc0a9"} 1 +node_pcidevice_info{bus="45",class_id="0x020000",device="00",device_id="0x1521",function="0",parent_bus="40",parent_device="01",parent_function="3",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x00a3",subsystem_vendor_id="0x8086",vendor_id="0x8086"} 1 # HELP node_pcidevice_max_link_transfers_per_second Value of maximum link's transfers per second (T/s) # TYPE node_pcidevice_max_link_transfers_per_second gauge node_pcidevice_max_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_max_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 1.6e+10 +node_pcidevice_max_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_max_link_width Value of maximum link's width (number of lanes) # TYPE node_pcidevice_max_link_width gauge node_pcidevice_max_link_width{bus="00",device="02",function="1",segment="0000"} 8 node_pcidevice_max_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_max_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_numa_node NUMA node number for the PCI device. -1 indicates unknown or not available. +# TYPE node_pcidevice_numa_node gauge +node_pcidevice_numa_node{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_power_state PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error. +# TYPE node_pcidevice_power_state gauge +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="unknown"} 0 +# HELP node_pcidevice_sriov_drivers_autoprobe Whether SR-IOV drivers autoprobe is enabled for the device (0/1). +# TYPE node_pcidevice_sriov_drivers_autoprobe gauge +node_pcidevice_sriov_drivers_autoprobe{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_drivers_autoprobe{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_sriov_drivers_autoprobe{bus="45",device="00",function="0",segment="0000"} 1 +# HELP node_pcidevice_sriov_numvfs Number of Virtual Functions (VFs) currently enabled for SR-IOV. +# TYPE node_pcidevice_sriov_numvfs gauge +node_pcidevice_sriov_numvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_numvfs{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_sriov_numvfs{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_sriov_totalvfs Total number of Virtual Functions (VFs) supported by the device. +# TYPE node_pcidevice_sriov_totalvfs gauge +node_pcidevice_sriov_totalvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_totalvfs{bus="01",device="00",function="0",segment="0000"} 8 +node_pcidevice_sriov_totalvfs{bus="45",device="00",function="0",segment="0000"} 7 +# HELP node_pcidevice_sriov_vf_total_msix Total number of MSI-X vectors for Virtual Functions. +# TYPE node_pcidevice_sriov_vf_total_msix gauge +node_pcidevice_sriov_vf_total_msix{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_vf_total_msix{bus="01",device="00",function="0",segment="0000"} 16 +node_pcidevice_sriov_vf_total_msix{bus="45",device="00",function="0",segment="0000"} 0 # HELP node_power_supply_capacity capacity value of /sys/class/power_supply/. # TYPE node_power_supply_capacity gauge node_power_supply_capacity{power_supply="BAT0"} 81 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 634386da..997f3bf5 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -2858,22 +2858,78 @@ node_os_version{id="ubuntu",id_like="debian",name="Ubuntu"} 20.04 # TYPE node_pcidevice_current_link_transfers_per_second gauge node_pcidevice_current_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_current_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_current_link_width Value of current link's width (number of lanes) # TYPE node_pcidevice_current_link_width gauge node_pcidevice_current_link_width{bus="00",device="02",function="1",segment="0000"} 4 node_pcidevice_current_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_current_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_d3cold_allowed Whether the PCIe device supports D3cold power state (0/1). +# TYPE node_pcidevice_d3cold_allowed gauge +node_pcidevice_d3cold_allowed{bus="00",device="02",function="1",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="45",device="00",function="0",segment="0000"} 1 # HELP node_pcidevice_info Non-numeric data from /sys/bus/pci/devices/, value is always 1. # TYPE node_pcidevice_info gauge -node_pcidevice_info{bus="00",class_id="0x060400",device="02",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1634"} 1 -node_pcidevice_info{bus="01",class_id="0x010802",device="00",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0x540a"} 1 +node_pcidevice_info{bus="00",class_id="0x060400",device="02",device_id="0x1634",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_vendor_id="0x17aa",vendor_id="0x1022"} 1 +node_pcidevice_info{bus="01",class_id="0x010802",device="00",device_id="0x540a",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_vendor_id="0xc0a9",vendor_id="0xc0a9"} 1 +node_pcidevice_info{bus="45",class_id="0x020000",device="00",device_id="0x1521",function="0",parent_bus="40",parent_device="01",parent_function="3",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x00a3",subsystem_vendor_id="0x8086",vendor_id="0x8086"} 1 # HELP node_pcidevice_max_link_transfers_per_second Value of maximum link's transfers per second (T/s) # TYPE node_pcidevice_max_link_transfers_per_second gauge node_pcidevice_max_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 node_pcidevice_max_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 1.6e+10 +node_pcidevice_max_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 # HELP node_pcidevice_max_link_width Value of maximum link's width (number of lanes) # TYPE node_pcidevice_max_link_width gauge node_pcidevice_max_link_width{bus="00",device="02",function="1",segment="0000"} 8 node_pcidevice_max_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_max_link_width{bus="45",device="00",function="0",segment="0000"} 4 +# HELP node_pcidevice_numa_node NUMA node number for the PCI device. -1 indicates unknown or not available. +# TYPE node_pcidevice_numa_node gauge +node_pcidevice_numa_node{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_power_state PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error. +# TYPE node_pcidevice_power_state gauge +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="unknown"} 0 +# HELP node_pcidevice_sriov_drivers_autoprobe Whether SR-IOV drivers autoprobe is enabled for the device (0/1). +# TYPE node_pcidevice_sriov_drivers_autoprobe gauge +node_pcidevice_sriov_drivers_autoprobe{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_drivers_autoprobe{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_sriov_drivers_autoprobe{bus="45",device="00",function="0",segment="0000"} 1 +# HELP node_pcidevice_sriov_numvfs Number of Virtual Functions (VFs) currently enabled for SR-IOV. +# TYPE node_pcidevice_sriov_numvfs gauge +node_pcidevice_sriov_numvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_numvfs{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_sriov_numvfs{bus="45",device="00",function="0",segment="0000"} 0 +# HELP node_pcidevice_sriov_totalvfs Total number of Virtual Functions (VFs) supported by the device. +# TYPE node_pcidevice_sriov_totalvfs gauge +node_pcidevice_sriov_totalvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_totalvfs{bus="01",device="00",function="0",segment="0000"} 8 +node_pcidevice_sriov_totalvfs{bus="45",device="00",function="0",segment="0000"} 7 +# HELP node_pcidevice_sriov_vf_total_msix Total number of MSI-X vectors for Virtual Functions. +# TYPE node_pcidevice_sriov_vf_total_msix gauge +node_pcidevice_sriov_vf_total_msix{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_vf_total_msix{bus="01",device="00",function="0",segment="0000"} 16 +node_pcidevice_sriov_vf_total_msix{bus="45",device="00",function="0",segment="0000"} 0 # HELP node_power_supply_capacity capacity value of /sys/class/power_supply/. # TYPE node_power_supply_capacity gauge node_power_supply_capacity{power_supply="BAT0"} 81 diff --git a/collector/fixtures/pci.ids b/collector/fixtures/pci.ids new file mode 100644 index 00000000..a25e6532 --- /dev/null +++ b/collector/fixtures/pci.ids @@ -0,0 +1,26 @@ +# Test PCI IDs file for node_exporter testing +# This file contains sample entries for testing PCI name resolution + +# Classes +C 06 Bridge device + 04 PCI bridge +C 01 Mass storage controller + 08 Non-Volatile memory controller + 02 NVM Express +C 02 Network controller + 00 Ethernet controller + +# Vendors +1022 Advanced Micro Devices, Inc. [AMD] + 1634 Renoir/Cezanne PCIe GPP Bridge + 17aa 5095 T540-5095 Unified Wire Ethernet Controller + +c0a9 Micron/Crucial Technology + 540a P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less) + c0a9 5021 PS5021-E21 PCIe4 NVMe Controller (DRAM-less) + +8086 Intel Corporation + 1521 I350 Gigabit Network Connection + 8086 00a3 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 + +17aa Lenovo \ No newline at end of file diff --git a/collector/fixtures/pcidevice-names-output.txt b/collector/fixtures/pcidevice-names-output.txt new file mode 100644 index 00000000..674404f4 --- /dev/null +++ b/collector/fixtures/pcidevice-names-output.txt @@ -0,0 +1,95 @@ +# Test output for PCI device collector with name resolution enabled +# This file demonstrates the --collector.pcidevice.names=true functionality + +# HELP node_pcidevice_current_link_transfers_per_second Value of current link's transfers per second (T/s) +# TYPE node_pcidevice_current_link_transfers_per_second gauge +node_pcidevice_current_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 8e+09 +node_pcidevice_current_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 + +# HELP node_pcidevice_current_link_width Value of current link's width (number of lanes) +# TYPE node_pcidevice_current_link_width gauge +node_pcidevice_current_link_width{bus="00",device="02",function="1",segment="0000"} 4 +node_pcidevice_current_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_current_link_width{bus="45",device="00",function="0",segment="0000"} 4 + +# HELP node_pcidevice_d3cold_allowed Whether the PCIe device supports D3cold power state (0/1). +# TYPE node_pcidevice_d3cold_allowed gauge +node_pcidevice_d3cold_allowed{bus="00",device="02",function="1",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_d3cold_allowed{bus="45",device="00",function="0",segment="0000"} 1 + +# HELP node_pcidevice_info Non-numeric data from /sys/bus/pci/devices/, value is always 1. +# TYPE node_pcidevice_info gauge +# Example 1: AMD PCIe Bridge with Lenovo subsystem +node_pcidevice_info{bus="00",class_id="0x060400",class_name="PCI bridge",device="02",device_id="0x1634",device_name="Renoir/Cezanne PCIe GPP Bridge",function="1",parent_bus="*",parent_device="*",parent_function="*",parent_segment="*",revision="0x00",segment="0000",subsystem_device_id="0x5095",subsystem_device_name="T540-5095 Unified Wire Ethernet Controller",subsystem_vendor_id="0x17aa",subsystem_vendor_name="Lenovo",vendor_id="0x1022",vendor_name="Advanced Micro Devices, Inc. [AMD]"} 1 + +# Example 2: Micron/Crucial NVMe Controller +node_pcidevice_info{bus="01",class_id="0x010802",class_name="NVM Express",device="00",device_id="0x540a",device_name="P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less)",function="0",parent_bus="00",parent_device="02",parent_function="1",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x5021",subsystem_device_name="PS5021-E21 PCIe4 NVMe Controller (DRAM-less)",subsystem_vendor_id="0xc0a9",subsystem_vendor_name="Micron/Crucial Technology",vendor_id="0xc0a9",vendor_name="Micron/Crucial Technology"} 1 + +# Example 3: Intel Network Controller +node_pcidevice_info{bus="45",class_id="0x020000",class_name="Ethernet controller",device="00",device_id="0x1521",device_name="I350 Gigabit Network Connection",function="0",parent_bus="40",parent_device="01",parent_function="3",parent_segment="0000",revision="0x01",segment="0000",subsystem_device_id="0x00a3",subsystem_device_name="Ethernet Network Adapter I350-T4 for OCP NIC 3.0",subsystem_vendor_id="0x8086",subsystem_vendor_name="Intel Corporation",vendor_id="0x8086",vendor_name="Intel Corporation"} 1 + +# HELP node_pcidevice_numa_node NUMA node number for the PCI device. -1 indicates unknown or not available. +# TYPE node_pcidevice_numa_node gauge +node_pcidevice_numa_node{bus="45",device="00",function="0",segment="0000"} 0 + +# HELP node_pcidevice_max_link_transfers_per_second Value of maximum link's transfers per second (T/s) +# TYPE node_pcidevice_max_link_transfers_per_second gauge +node_pcidevice_max_link_transfers_per_second{bus="00",device="02",function="1",segment="0000"} 8e+09 +node_pcidevice_max_link_transfers_per_second{bus="01",device="00",function="0",segment="0000"} 1.6e+10 +node_pcidevice_max_link_transfers_per_second{bus="45",device="00",function="0",segment="0000"} 5e+09 + +# HELP node_pcidevice_max_link_width Value of maximum link's width (number of lanes) +# TYPE node_pcidevice_max_link_width gauge +node_pcidevice_max_link_width{bus="00",device="02",function="1",segment="0000"} 8 +node_pcidevice_max_link_width{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_max_link_width{bus="45",device="00",function="0",segment="0000"} 4 + +# HELP node_pcidevice_power_state PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error. +# TYPE node_pcidevice_power_state gauge +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="00",device="02",function="1",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="01",device="00",function="0",segment="0000",state="unknown"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D0"} 1 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D1"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D2"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3cold"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="D3hot"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="error"} 0 +node_pcidevice_power_state{bus="45",device="00",function="0",segment="0000",state="unknown"} 0 + +# HELP node_pcidevice_sriov_drivers_autoprobe Whether SR-IOV drivers autoprobe is enabled for the device (0/1). +# TYPE node_pcidevice_sriov_drivers_autoprobe gauge +node_pcidevice_sriov_drivers_autoprobe{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_drivers_autoprobe{bus="01",device="00",function="0",segment="0000"} 1 +node_pcidevice_sriov_drivers_autoprobe{bus="45",device="00",function="0",segment="0000"} 1 + +# HELP node_pcidevice_sriov_numvfs Number of Virtual Functions (VFs) currently enabled for SR-IOV. +# TYPE node_pcidevice_sriov_numvfs gauge +node_pcidevice_sriov_numvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_numvfs{bus="01",device="00",function="0",segment="0000"} 4 +node_pcidevice_sriov_numvfs{bus="45",device="00",function="0",segment="0000"} 0 + +# HELP node_pcidevice_sriov_totalvfs Total number of Virtual Functions (VFs) supported by the device. +# TYPE node_pcidevice_sriov_totalvfs gauge +node_pcidevice_sriov_totalvfs{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_totalvfs{bus="01",device="00",function="0",segment="0000"} 8 +node_pcidevice_sriov_totalvfs{bus="45",device="00",function="0",segment="0000"} 7 + +# HELP node_pcidevice_sriov_vf_total_msix Total number of MSI-X vectors for Virtual Functions. +# TYPE node_pcidevice_sriov_vf_total_msix gauge +node_pcidevice_sriov_vf_total_msix{bus="00",device="02",function="1",segment="0000"} 0 +node_pcidevice_sriov_vf_total_msix{bus="01",device="00",function="0",segment="0000"} 16 +node_pcidevice_sriov_vf_total_msix{bus="45",device="00",function="0",segment="0000"} 0 diff --git a/collector/fixtures/sys.ttar b/collector/fixtures/sys.ttar index a0e653e2..3cf4f13b 100644 --- a/collector/fixtures/sys.ttar +++ b/collector/fixtures/sys.ttar @@ -871,6 +871,9 @@ SymlinkTo: ../../../devices/pci0000:00/0000:00:02.1 Path: sys/bus/pci/devices/0000:01:00.0 SymlinkTo: ../../../devices/pci0000:00/0000:00:02.1/0000:01:00.0 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/bus/pci/devices/0000:45:00.0 +SymlinkTo: ../../../devices/pci0000:40/0000:40:01.3/0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/class Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5104,6 +5107,26 @@ Lines: 1 0x01 Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_drivers_autoprobe +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_numvfs +Lines: 1 +4 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_totalvfs +Lines: 1 +8 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/sriov_vf_total_msix +Lines: 1 +16 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/subsystem SymlinkTo: ../../../../bus/pci # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5462,6 +5485,26 @@ Lines: 1 1 Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_drivers_autoprobe +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_numvfs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_totalvfs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:00/0000:00:02.1/sriov_vf_total_msix +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/subordinate_bus_number Lines: 1 1 @@ -5890,6 +5933,2146 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/aer_dev_correctable +Lines: 9 +RxErr 0 +BadTLP 0 +BadDLLP 0 +Rollover 0 +Timeout 0 +NonFatalErr 0 +CorrIntErr 0 +HeaderOF 0 +TOTAL_ERR_COR 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/aer_dev_fatal +Lines: 19 +Undefined 0 +DLP 0 +SDES 0 +TLP 0 +FCP 0 +CmpltTO 0 +CmpltAbrt 0 +UnxCmplt 0 +RxOF 0 +MalfTLP 0 +ECRC 0 +UnsupReq 0 +ACSViol 0 +UncorrIntErr 0 +BlockedTLP 0 +AtomicOpBlocked 0 +TLPBlockedErr 0 +PoisonTLPBlocked 0 +TOTAL_ERR_FATAL 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/aer_dev_nonfatal +Lines: 19 +Undefined 0 +DLP 0 +SDES 0 +TLP 0 +FCP 0 +CmpltTO 0 +CmpltAbrt 0 +UnxCmplt 0 +RxOF 0 +MalfTLP 0 +ECRC 0 +UnsupReq 0 +ACSViol 0 +UncorrIntErr 0 +BlockedTLP 0 +AtomicOpBlocked 0 +TLPBlockedErr 0 +PoisonTLPBlocked 0 +TOTAL_ERR_NONFATAL 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ari_enabled +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/broken_parity_status +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/class +Lines: 1 +0x020000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/consistent_dma_mask_bits +Lines: 1 +64 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/current_link_speed +Lines: 1 +5.0 GT/s PCIe +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/current_link_width +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/d3cold_allowed +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/device +Lines: 1 +0x1521 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/dma_mask_bits +Lines: 1 +64 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/driver +SymlinkTo: ../../../../bus/pci/drivers/igb +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/driver_override +Lines: 1 +(null) +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/firmware_node +SymlinkTo: ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:01/device:18/device:19 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/name +Lines: 1 +i350bb +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/async +Lines: 1 +disabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/control +Lines: 1 +auto +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_active_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_enabled +Lines: 1 +disabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_status +Lines: 1 +unsupported +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/subsystem +SymlinkTo: ../../../../../../class/hwmon +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_crit +Lines: 1 +110000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_input +Lines: 1 +50000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_label +Lines: 1 +loc1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/temp1_max +Lines: 1 +120000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/hwmon/hwmon0/uevent +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/modalias +Lines: 1 +i2c:i350bb +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/name +Lines: 1 +i350bb +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/async +Lines: 1 +enabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/control +Lines: 1 +auto +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_active_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_enabled +Lines: 1 +disabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_status +Lines: 1 +unsupported +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/subsystem +SymlinkTo: ../../../../../../bus/i2c +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/3-007c/uevent +Lines: 1 +MODALIAS=i2c:i350bb +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/dev +Lines: 1 +89:3 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/device +SymlinkTo: ../../../i2c-3 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/name +Lines: 1 +igb BB +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/async +Lines: 1 +disabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/control +Lines: 1 +auto +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_active_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_enabled +Lines: 1 +disabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_status +Lines: 1 +unsupported +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/subsystem +SymlinkTo: ../../../../../../../class/i2c-dev +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/i2c-dev/i2c-3/uevent +Lines: 3 +MAJOR=89 +MINOR=3 +DEVNAME=i2c-3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/name +Lines: 1 +igb BB +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/async +Lines: 1 +enabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_enabled +Lines: 1 +enabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_status +Lines: 1 +suspended +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/subsystem +SymlinkTo: ../../../../../bus/i2c +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/i2c-3/uevent +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/iommu +SymlinkTo: ../../0000:40:00.2/iommu/ivhd1 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/iommu_group +SymlinkTo: ../../../../kernel/iommu_groups/25 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/irq +Lines: 1 +58 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/link +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/local_cpulist +Lines: 1 +0-63,128-191 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/local_cpus +Lines: 1 +00000000,00000000,ffffffff,ffffffff,00000000,00000000,ffffffff,ffffffff +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/max_link_speed +Lines: 1 +5.0 GT/s PCIe +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/max_link_width +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/modalias +Lines: 1 +pci:v00008086d00001521sv00008086sd000000A3bc02sc00i00 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_bus +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/147 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/148 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/149 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/150 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/151 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/152 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/153 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/154 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/msi_irqs/155 +Lines: 1 +msix +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/addr_assign_type +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/addr_len +Lines: 1 +6 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/address +Lines: 1 +68:05:ca:f0:cb:12 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/broadcast +Lines: 1 +ff:ff:ff:ff:ff:ff +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/backup_port +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/bpdu_guard +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/bridge +SymlinkTo: ../../../../../../virtual/net/vmbr0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/broadcast_flood +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/change_ack +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/config_pending +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_bridge +Lines: 1 +8000.6805caf0cb12 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_cost +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_port +Lines: 1 +32769 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/designated_root +Lines: 1 +8000.6805caf0cb12 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/forward_delay_timer +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/group_fwd_mask +Lines: 1 +0x0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/hairpin_mode +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/hold_timer +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/isolated +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/learning +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/message_age_timer +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_fast_leave +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_flood +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_router +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/multicast_to_unicast +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/neigh_suppress +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/path_cost +Lines: 1 +5 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/port_id +Lines: 1 +0x8001 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/port_no +Lines: 1 +0x1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/priority +Lines: 1 +32 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/proxyarp +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/proxyarp_wifi +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/root_block +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/state +Lines: 1 +3 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/brport/unicast_flood +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier_changes +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier_down_count +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/carrier_up_count +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/dev_id +Lines: 1 +0x0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/dev_port +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/dormant +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/duplex +Lines: 1 +full +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/flags +Lines: 1 +0x1303 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/gro_flush_timeout +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/ifalias +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/ifindex +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/iflink +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/link_mode +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/master +SymlinkTo: ../../../../../virtual/net/vmbr0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/mtu +Lines: 1 +1500 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/name_assign_type +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/napi_defer_hard_irqs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/netdev_group +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/operstate +Lines: 1 +up +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/phys_port_id +Lines: 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/phys_port_name +Lines: 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/phys_switch_id +Lines: 0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/async +Lines: 1 +disabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/control +Lines: 1 +auto +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_active_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_enabled +Lines: 1 +disabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_status +Lines: 1 +unsupported +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/proto_down +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-0/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-0/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-1/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-1/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-2/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-2/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-3/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-3/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-4 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-4/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-4/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-5 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-5/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-5/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-6 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-6/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-6/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-7 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-7/rps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/rx-7/rps_flow_cnt +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/limit +Lines: 1 +67893 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-0/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/limit +Lines: 1 +137370 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-1/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/limit +Lines: 1 +137370 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-2/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/limit +Lines: 1 +137370 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-3/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/limit +Lines: 1 +68879 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-4/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/limit +Lines: 1 +137370 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-5/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/limit +Lines: 1 +54464 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-6/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/hold_time +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/inflight +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/limit +Lines: 1 +71700 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/limit_max +Lines: 1 +1879048192 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/limit_min +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/stall_cnt +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/stall_max +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/byte_queue_limits/stall_thrs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/traffic_class +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/tx_maxrate +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/tx_timeout +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/xps_cpus +Lines: 1 +00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/queues/tx-7/xps_rxqs +Lines: 1 +00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/speed +Lines: 1 +1000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/collisions +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/multicast +Lines: 1 +656633 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_bytes +Lines: 1 +10013625365 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_compressed +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_crc_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_dropped +Lines: 1 +29220 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_fifo_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_frame_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_length_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_missed_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_nohandler +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_over_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/rx_packets +Lines: 1 +46422718 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_aborted_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_bytes +Lines: 1 +10275718925 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_carrier_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_compressed +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_dropped +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_fifo_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_heartbeat_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_packets +Lines: 1 +47308115 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/statistics/tx_window_errors +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/subsystem +SymlinkTo: ../../../../../../class/net +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/testing +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/threaded +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/tx_queue_len +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/type +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/uevent +Lines: 2 +INTERFACE=ens10f0 +IFINDEX=2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/net/ens10f0/upper_vmbr0 +SymlinkTo: ../../../../../virtual/net/vmbr0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/numa_node +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/async +Lines: 1 +enabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/control +Lines: 1 +on +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_active_time +Lines: 1 +862796974 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_enabled +Lines: 1 +forbidden +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_status +Lines: 1 +active +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/runtime_usage +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup +Lines: 1 +enabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_abort_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_active +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_active_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_expire_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_last_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_max_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power/wakeup_total_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/power_state +Lines: 1 +D0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/clock_name +Lines: 1 +6805caf0cb12 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/dev +Lines: 1 +246:0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/fifo +Lines: 1 +NULLBYTEEOF +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/max_adjustment +Lines: 1 +62499999 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/max_vclocks +Lines: 1 +20 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_alarms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_external_timestamps +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_periodic_outputs +Lines: 1 +2 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_programmable_pins +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/n_vclocks +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP0 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP1 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP2 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pins/SDP3 +Lines: 1 +0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/async +Lines: 1 +disabled +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/autosuspend_delay_ms +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/control +Lines: 1 +auto +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_active_kids +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_active_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_enabled +Lines: 1 +disabled +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_status +Lines: 1 +unsupported +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_suspended_time +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/power/runtime_usage +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/pps_available +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/subsystem +SymlinkTo: ../../../../../../class/ptp +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/ptp/ptp0/uevent +Lines: 3 +MAJOR=246 +MINOR=0 +DEVNAME=ptp0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/reset_method +Lines: 1 +flr bus +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource +Lines: 13 +0x0000000097100000 0x00000000971fffff 0x0000000000040200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000003060 0x000000000000307f 0x0000000000040101 +0x000000009720c000 0x000000009720ffff 0x0000000000040200 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000097280000 0x00000000972fffff 0x0000000000046200 +0x000000f0a03e0000 0x000000f0a03fffff 0x000000000014220c +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x000000f0a03c0000 0x000000f0a03dffff 0x000000000014220c +0x0000000000000000 0x0000000000000000 0x0000000000000000 +0x0000000000000000 0x0000000000000000 0x0000000000000000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource0 +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource2 +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/resource3 +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/revision +Lines: 1 +0x01 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/rom +Lines: 0 +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_drivers_autoprobe +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_numvfs +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_offset +Lines: 1 +128 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_stride +Lines: 1 +4 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_totalvfs +Lines: 1 +7 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_vf_device +Lines: 1 +1520 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/sriov_vf_total_msix +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/subsystem +SymlinkTo: ../../../../bus/pci +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/subsystem_device +Lines: 1 +0x00a3 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/subsystem_vendor +Lines: 1 +0x8086 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/uevent +Lines: 6 +DRIVER=igb +PCI_CLASS=20000 +PCI_ID=8086:1521 +PCI_SUBSYS_ID=8086:00A3 +PCI_SLOT_NAME=0000:45:00.0 +MODALIAS=pci:v00008086d00001521sv00008086sd000000A3bc02sc00i00 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/vendor +Lines: 1 +0x8086 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/vpd +Lines: 2 +:NULLBYTEIntel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0dNULLBYTEV1:Intel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0PN +K53978-004SN 6805CAF0CB12V24521RVxEOF +Mode: 600 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/active_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/active_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/device +SymlinkTo: ../../../0000:45:00.0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/event_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/expire_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/last_change_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/max_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/name +Lines: 1 +0000:45:00.0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/prevent_suspend_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/subsystem +SymlinkTo: ../../../../../../class/wakeup +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/total_time_ms +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/uevent +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup/wakeup87/wakeup_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/class +Lines: 1 +0x060400 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/d3cold_allowed +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/device +Lines: 1 +0x1483 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/power_state +Lines: 1 +D0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/revision +Lines: 1 +0x00 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/subsystem_device +Lines: 1 +0x1453 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/subsystem_vendor +Lines: 1 +0x1022 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/devices/pci0000:40/0000:40:01.3/vendor +Lines: 1 +0x1022 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/devices/platform Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/collector/pcidevice_linux.go b/collector/pcidevice_linux.go index d5ed020a..1d276212 100644 --- a/collector/pcidevice_linux.go +++ b/collector/pcidevice_linux.go @@ -17,11 +17,14 @@ package collector import ( + "bufio" "errors" "fmt" "log/slog" "os" + "strings" + "github.com/alecthomas/kingpin/v2" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/procfs/sysfs" ) @@ -31,6 +34,13 @@ const ( ) var ( + pciIdsPaths = []string{ + "/usr/share/misc/pci.ids", + "/usr/share/hwdata/pci.ids", + } + pciIdsFile = kingpin.Flag("collector.pcidevice.idsfile", "Path to pci.ids file to use for PCI device identification.").String() + pciNames = kingpin.Flag("collector.pcidevice.names", "Enable PCI device name resolution (requires pci.ids file).").Default("false").Bool() + pcideviceLabelNames = []string{"segment", "bus", "device", "function"} pcideviceMaxLinkTSDesc = prometheus.NewDesc( @@ -54,13 +64,62 @@ var ( "Value of current link's width (number of lanes)", pcideviceLabelNames, nil, ) + + pcidevicePowerStateDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "power_state"), + "PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error.", + append(pcideviceLabelNames, "state"), nil, + ) + + pcideviceD3coldAllowedDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "d3cold_allowed"), + "Whether the PCIe device supports D3cold power state (0/1).", + pcideviceLabelNames, nil, + ) + + pcideviceSriovDriversAutoprobeDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_drivers_autoprobe"), + "Whether SR-IOV drivers autoprobe is enabled for the device (0/1).", + pcideviceLabelNames, nil, + ) + + pcideviceSriovNumvfsDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_numvfs"), + "Number of Virtual Functions (VFs) currently enabled for SR-IOV.", + pcideviceLabelNames, nil, + ) + + pcideviceSriovTotalvfsDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_totalvfs"), + "Total number of Virtual Functions (VFs) supported by the device.", + pcideviceLabelNames, nil, + ) + + pcideviceSriovVfTotalMsixDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_vf_total_msix"), + "Total number of MSI-X vectors for Virtual Functions.", + pcideviceLabelNames, nil, + ) + + pcideviceNumaNodeDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "numa_node"), + "NUMA node number for the PCI device. -1 indicates unknown or not available.", + pcideviceLabelNames, nil, + ) ) type pcideviceCollector struct { - fs sysfs.FS - infoDesc typedDesc - descs []typedFactorDesc - logger *slog.Logger + fs sysfs.FS + infoDesc typedDesc + descs []typedFactorDesc + logger *slog.Logger + pciVendors map[string]string + pciDevices map[string]map[string]string + pciSubsystems map[string]map[string]string + pciClasses map[string]string + pciSubclasses map[string]string + pciProgIfs map[string]string + pciNames bool } func init() { @@ -74,29 +133,49 @@ func NewPcideviceCollector(logger *slog.Logger) (Collector, error) { return nil, fmt.Errorf("failed to open sysfs: %w", err) } - c := pcideviceCollector{ - fs: fs, - logger: logger, - infoDesc: typedDesc{ - desc: prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "info"), - "Non-numeric data from /sys/bus/pci/devices/, value is always 1.", - append(pcideviceLabelNames, - []string{"parent_segment", "parent_bus", "parent_device", "parent_function", - "class_id", "vendor_id", "subsystem_vendor_id", "subsystem_device_id", "revision"}...), - nil, - ), - valueType: prometheus.GaugeValue, - }, - descs: []typedFactorDesc{ - {desc: pcideviceMaxLinkTSDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceMaxLinkWidthDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceCurrentLinkTSDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceCurrentLinkWidthDesc, valueType: prometheus.GaugeValue}, - }, - } - - return &c, nil + // Initialize PCI ID maps + c := &pcideviceCollector{ + fs: fs, + logger: logger, + pciNames: *pciNames, + } + + // Build label names based on whether name resolution is enabled + labelNames := append(pcideviceLabelNames, + []string{"parent_segment", "parent_bus", "parent_device", "parent_function", + "class_id", "vendor_id", "device_id", "subsystem_vendor_id", "subsystem_device_id", "revision"}...) + + if c.pciNames { + c.loadPCIIds() + // Add name labels when name resolution is enabled + labelNames = append(labelNames, "vendor_name", "device_name", "subsystem_vendor_name", "subsystem_device_name", "class_name") + } + + c.infoDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "info"), + "Non-numeric data from /sys/bus/pci/devices/, value is always 1.", + labelNames, + nil, + ), + valueType: prometheus.GaugeValue, + } + + c.descs = []typedFactorDesc{ + {desc: pcideviceMaxLinkTSDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceMaxLinkWidthDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceCurrentLinkTSDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceCurrentLinkWidthDesc, valueType: prometheus.GaugeValue}, + {desc: pcidevicePowerStateDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceD3coldAllowedDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceSriovDriversAutoprobeDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceSriovNumvfsDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceSriovTotalvfsDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceSriovVfTotalMsixDesc, valueType: prometheus.GaugeValue}, + {desc: pcideviceNumaNodeDesc, valueType: prometheus.GaugeValue}, + } + + return c, nil } func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { @@ -117,27 +196,405 @@ func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { } else { values = append(values, []string{"*", "*", "*", "*"}...) } - values = append(values, fmt.Sprintf("0x%06x", device.Class)) - values = append(values, fmt.Sprintf("0x%04x", device.Device)) - values = append(values, fmt.Sprintf("0x%04x", device.SubsystemVendor)) - values = append(values, fmt.Sprintf("0x%04x", device.SubsystemDevice)) - values = append(values, fmt.Sprintf("0x%02x", device.Revision)) + + // Add basic device information + classID := fmt.Sprintf("0x%06x", device.Class) + vendorID := fmt.Sprintf("0x%04x", device.Vendor) + deviceID := fmt.Sprintf("0x%04x", device.Device) + subsysVendorID := fmt.Sprintf("0x%04x", device.SubsystemVendor) + subsysDeviceID := fmt.Sprintf("0x%04x", device.SubsystemDevice) + + values = append(values, classID, vendorID, deviceID, subsysVendorID, subsysDeviceID, fmt.Sprintf("0x%02x", device.Revision)) + + // Add name values if name resolution is enabled + if c.pciNames { + vendorName := c.getPCIVendorName(vendorID) + deviceName := c.getPCIDeviceName(vendorID, deviceID) + subsysVendorName := c.getPCIVendorName(subsysVendorID) + subsysDeviceName := c.getPCISubsystemName(vendorID, deviceID, subsysVendorID, subsysDeviceID) + className := c.getPCIClassName(classID) + + values = append(values, vendorName, deviceName, subsysVendorName, subsysDeviceName, className) + } ch <- c.infoDesc.mustNewConstMetric(1.0, values...) // MaxLinkSpeed and CurrentLinkSpeed are represented in GT/s - maxLinkSpeedTS := float64(int64(*device.MaxLinkSpeed * 1e9)) - currentLinkSpeedTS := float64(int64(*device.CurrentLinkSpeed * 1e9)) + var maxLinkSpeedTS float64 + if device.MaxLinkSpeed != nil { + maxLinkSpeedTS = (*device.MaxLinkSpeed) * 1e9 + } else { + maxLinkSpeedTS = -1 + } - for i, val := range []float64{ + var currentLinkSpeedTS float64 + if device.CurrentLinkSpeed != nil { + currentLinkSpeedTS = (*device.CurrentLinkSpeed) * 1e9 + } else { + currentLinkSpeedTS = -1 + } + + // Get power state information directly from device object + var currentPowerState string + var hasPowerState bool + if device.PowerState != nil { + currentPowerState = device.PowerState.String() + hasPowerState = true + } + + var d3coldAllowed float64 + if device.D3coldAllowed != nil { + if *device.D3coldAllowed { + d3coldAllowed = 1 + } else { + d3coldAllowed = 0 + } + } + + // Get SR-IOV information directly from device object + var sriovDriversAutoprobe float64 + if device.SriovDriversAutoprobe != nil { + if *device.SriovDriversAutoprobe { + sriovDriversAutoprobe = 1 + } else { + sriovDriversAutoprobe = 0 + } + } + + var sriovNumvfs float64 + if device.SriovNumvfs != nil { + sriovNumvfs = float64(*device.SriovNumvfs) + } + + var sriovTotalvfs float64 + if device.SriovTotalvfs != nil { + sriovTotalvfs = float64(*device.SriovTotalvfs) + } + + var sriovVfTotalMsix float64 + if device.SriovVfTotalMsix != nil { + sriovVfTotalMsix = float64(*device.SriovVfTotalMsix) + } + + // Handle numa_node with nil safety + var numaNode float64 + if device.NumaNode != nil { + numaNode = float64(*device.NumaNode) + } else { + numaNode = -1 + } + + // Handle link width fields with nil safety + var maxLinkWidth float64 + if device.MaxLinkWidth != nil { + maxLinkWidth = float64(*device.MaxLinkWidth) + } else { + maxLinkWidth = -1 + } + + var currentLinkWidth float64 + if device.CurrentLinkWidth != nil { + currentLinkWidth = float64(*device.CurrentLinkWidth) + } else { + currentLinkWidth = -1 + } + + // Emit metrics for all fields except numa_node and power_state + metrics := []float64{ maxLinkSpeedTS, - float64(*device.MaxLinkWidth), + maxLinkWidth, currentLinkSpeedTS, - float64(*device.CurrentLinkWidth), - } { - ch <- c.descs[i].mustNewConstMetric(val, device.Location.Strings()...) + currentLinkWidth, + d3coldAllowed, + sriovDriversAutoprobe, + sriovNumvfs, + sriovTotalvfs, + sriovVfTotalMsix, + } + + // Emit regular metrics (excluding power_state which is at index 4) + metricIndices := []int{0, 1, 2, 3, 5, 6, 7, 8, 9} // Skip power_state (4) and numa_node (10) + for i, val := range metrics { + ch <- c.descs[metricIndices[i]].mustNewConstMetric(val, device.Location.Strings()...) + } + + // Emit power state metrics with state labels only if power state is available + if hasPowerState { + powerStates := []string{"D0", "D1", "D2", "D3hot", "D3cold", "unknown", "error"} + deviceLabels := device.Location.Strings() + for _, state := range powerStates { + var value float64 + if state == currentPowerState { + value = 1 + } else { + value = 0 + } + stateLabels := append(deviceLabels, state) + ch <- c.descs[4].mustNewConstMetric(value, stateLabels...) + } + } + + // Only emit numa_node metric if the value is available (not -1) + if numaNode != -1 { + ch <- c.descs[10].mustNewConstMetric(numaNode, device.Location.Strings()...) } } return nil } + +// loadPCIIds loads PCI device information from pci.ids file +func (c *pcideviceCollector) loadPCIIds() { + var file *os.File + var err error + + c.pciVendors = make(map[string]string) + c.pciDevices = make(map[string]map[string]string) + c.pciSubsystems = make(map[string]map[string]string) + c.pciClasses = make(map[string]string) + c.pciSubclasses = make(map[string]string) + c.pciProgIfs = make(map[string]string) + + // Use custom pci.ids file if specified + if *pciIdsFile != "" { + file, err = os.Open(*pciIdsFile) + if err != nil { + c.logger.Debug("Failed to open PCI IDs file", "file", *pciIdsFile, "error", err) + return + } + c.logger.Debug("Loading PCI IDs from", "file", *pciIdsFile) + } else { + // Try each possible default path + for _, path := range pciIdsPaths { + file, err = os.Open(path) + if err == nil { + c.logger.Debug("Loading PCI IDs from default path", "path", path) + break + } + } + if err != nil { + c.logger.Debug("Failed to open any default PCI IDs file", "error", err) + return + } + } + defer file.Close() + + scanner := bufio.NewScanner(file) + var currentVendor, currentDevice, currentBaseClass, currentSubclass string + var inClassContext bool + + for scanner.Scan() { + line := scanner.Text() + if line == "" || strings.HasPrefix(line, "#") { + continue + } + + // Handle class lines (starts with 'C') + if strings.HasPrefix(line, "C ") { + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 { + classID := strings.TrimSpace(parts[0][1:]) // Remove 'C' prefix + className := strings.TrimSpace(parts[1]) + c.pciClasses[classID] = className + currentBaseClass = classID + inClassContext = true + } + continue + } + + // Handle subclass lines (single tab after class) + if strings.HasPrefix(line, "\t") && !strings.HasPrefix(line, "\t\t") && inClassContext { + line = strings.TrimPrefix(line, "\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentBaseClass != "" { + subclassID := strings.TrimSpace(parts[0]) + subclassName := strings.TrimSpace(parts[1]) + // Store as base class + subclass (e.g., "0100" for SCSI storage controller) + fullClassID := currentBaseClass + subclassID + c.pciSubclasses[fullClassID] = subclassName + currentSubclass = fullClassID + } + continue + } + + // Handle programming interface lines (double tab after subclass) + if strings.HasPrefix(line, "\t\t") && !strings.HasPrefix(line, "\t\t\t") && inClassContext { + line = strings.TrimPrefix(line, "\t\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentSubclass != "" { + progIfID := strings.TrimSpace(parts[0]) + progIfName := strings.TrimSpace(parts[1]) + // Store as base class + subclass + programming interface (e.g., "010802" for NVM Express) + fullClassID := currentSubclass + progIfID + c.pciProgIfs[fullClassID] = progIfName + } + continue + } + + // Handle vendor lines (no leading whitespace, not starting with 'C') + if !strings.HasPrefix(line, "\t") && !strings.HasPrefix(line, "C ") { + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 { + currentVendor = strings.TrimSpace(parts[0]) + c.pciVendors[currentVendor] = strings.TrimSpace(parts[1]) + currentDevice = "" + inClassContext = false + } + continue + } + + // Handle device lines (single tab) + if strings.HasPrefix(line, "\t") && !strings.HasPrefix(line, "\t\t") { + line = strings.TrimPrefix(line, "\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentVendor != "" { + currentDevice = strings.TrimSpace(parts[0]) + if c.pciDevices[currentVendor] == nil { + c.pciDevices[currentVendor] = make(map[string]string) + } + c.pciDevices[currentVendor][currentDevice] = strings.TrimSpace(parts[1]) + } + continue + } + + // Handle subsystem lines (double tab) + if strings.HasPrefix(line, "\t\t") { + line = strings.TrimPrefix(line, "\t\t") + parts := strings.SplitN(line, " ", 2) + if len(parts) >= 2 && currentVendor != "" && currentDevice != "" { + subsysID := strings.TrimSpace(parts[0]) + subsysName := strings.TrimSpace(parts[1]) + key := fmt.Sprintf("%s:%s", currentVendor, currentDevice) + if c.pciSubsystems[key] == nil { + c.pciSubsystems[key] = make(map[string]string) + } + // Convert subsystem ID from "vendor device" format to "vendor:device" format + subsysParts := strings.Fields(subsysID) + if len(subsysParts) == 2 { + subsysKey := fmt.Sprintf("%s:%s", subsysParts[0], subsysParts[1]) + c.pciSubsystems[key][subsysKey] = subsysName + } + } + } + } + + // Debug summary + totalDevices := 0 + for _, devices := range c.pciDevices { + totalDevices += len(devices) + } + totalSubsystems := 0 + for _, subsystems := range c.pciSubsystems { + totalSubsystems += len(subsystems) + } + + c.logger.Debug("Loaded PCI device data", + "vendors", len(c.pciVendors), + "devices", totalDevices, + "subsystems", totalSubsystems, + "classes", len(c.pciClasses), + "subclasses", len(c.pciSubclasses), + "progIfs", len(c.pciProgIfs), + ) +} + +// getPCIVendorName converts PCI vendor ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCIVendorName(vendorID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return vendorID + } + + // Remove "0x" prefix if present + vendorID = strings.TrimPrefix(vendorID, "0x") + vendorID = strings.ToLower(vendorID) + + if name, ok := c.pciVendors[vendorID]; ok { + return name + } + return vendorID // Return ID if name not found +} + +// getPCIDeviceName converts PCI device ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCIDeviceName(vendorID, deviceID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return deviceID + } + + // Remove "0x" prefix if present + vendorID = strings.TrimPrefix(vendorID, "0x") + deviceID = strings.TrimPrefix(deviceID, "0x") + vendorID = strings.ToLower(vendorID) + deviceID = strings.ToLower(deviceID) + + if devices, ok := c.pciDevices[vendorID]; ok { + if name, ok := devices[deviceID]; ok { + return name + } + } + return deviceID // Return ID if name not found +} + +// getPCISubsystemName converts PCI subsystem ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCISubsystemName(vendorID, deviceID, subsysVendorID, subsysDeviceID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return subsysDeviceID + } + + // Normalize all IDs + vendorID = strings.TrimPrefix(vendorID, "0x") + deviceID = strings.TrimPrefix(deviceID, "0x") + subsysVendorID = strings.TrimPrefix(subsysVendorID, "0x") + subsysDeviceID = strings.TrimPrefix(subsysDeviceID, "0x") + + key := fmt.Sprintf("%s:%s", vendorID, deviceID) + subsysKey := fmt.Sprintf("%s:%s", subsysVendorID, subsysDeviceID) + + if subsystems, ok := c.pciSubsystems[key]; ok { + if name, ok := subsystems[subsysKey]; ok { + return name + } + } + return subsysDeviceID +} + +// getPCIClassName converts PCI class ID to human-readable string using pci.ids +func (c *pcideviceCollector) getPCIClassName(classID string) string { + // Return original ID if name resolution is disabled + if !c.pciNames { + return classID + } + + // Remove "0x" prefix if present and normalize + classID = strings.TrimPrefix(classID, "0x") + classID = strings.ToLower(classID) + + // Try to find the programming interface first (6 digits: base class + subclass + programming interface) + if len(classID) >= 6 { + progIf := classID[:6] + if className, exists := c.pciProgIfs[progIf]; exists { + return className + } + } + + // Try to find the subclass (4 digits: base class + subclass) + if len(classID) >= 4 { + subclass := classID[:4] + if className, exists := c.pciSubclasses[subclass]; exists { + return className + } + } + + // If not found, try with just the base class (first 2 digits) + if len(classID) >= 2 { + baseClass := classID[:2] + if className, exists := c.pciClasses[baseClass]; exists { + return className + } + } + + // Return the original class ID if not found + return "Unknown class (" + classID + ")" +} diff --git a/collector/pcidevice_linux_test.go b/collector/pcidevice_linux_test.go new file mode 100644 index 00000000..097cc391 --- /dev/null +++ b/collector/pcidevice_linux_test.go @@ -0,0 +1,89 @@ +// Copyright 2024 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !nopcidevice +// +build !nopcidevice + +package collector + +import ( + "fmt" + "io" + "log/slog" + "os" + "strings" + "testing" + + "github.com/alecthomas/kingpin/v2" + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/testutil" +) + +func TestPCICollectorWithNameResolution(t *testing.T) { + // Test the PCI collector with name resolution enabled and compare against expected output + if _, err := kingpin.CommandLine.Parse([]string{ + "--path.sysfs", "fixtures/sys", + "--path.procfs", "fixtures/proc", + "--path.rootfs", "fixtures", + "--collector.pcidevice", + "--collector.pcidevice.names", + // "--collector.pcidevice.idsfile", "/usr/share/misc/pci.ids", + "--collector.pcidevice.idsfile", "fixtures/pci.ids", + }); err != nil { + t.Fatal(err) + } + + logger := slog.New(slog.NewTextHandler(io.Discard, nil)) + c, err := NewPcideviceCollector(logger) + if err != nil { + t.Fatal(err) + } + + reg := prometheus.NewRegistry() + reg.MustRegister(&testPCICollector{pc: c}) + + // Read expected output from fixture file + expectedOutput, err := os.ReadFile("fixtures/pcidevice-names-output.txt") + if err != nil { + t.Fatal(err) + } + + err = testutil.GatherAndCompare(reg, strings.NewReader(string(expectedOutput))) + if err != nil { + t.Fatal(err) + } +} + +// testPCICollector wraps the PCI collector for testing +type testPCICollector struct { + pc Collector +} + +func (tc *testPCICollector) Collect(ch chan<- prometheus.Metric) { + sink := make(chan prometheus.Metric) + go func() { + err := tc.pc.Update(sink) + if err != nil { + panic(fmt.Errorf("failed to update collector: %s", err)) + } + close(sink) + }() + + for m := range sink { + ch <- m + } +} + +func (tc *testPCICollector) Describe(ch chan<- *prometheus.Desc) { + // No-op for testing +} From 524b56c850088bbc91e8576f6b292d5910cf6b19 Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Wed, 22 Oct 2025 21:14:50 +0200 Subject: [PATCH 039/109] Update common Prometheus files (#3447) Signed-off-by: prombot --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 79891553..75f886d5 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - name: Install Go - uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0 + uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 with: go-version: 1.25.x - name: Install snmp_exporter/generator dependencies From b4a3d2d9221ae7d8dc919d4ab83591db24185779 Mon Sep 17 00:00:00 2001 From: Bouke van der Bijl Date: Wed, 22 Oct 2025 21:15:53 +0200 Subject: [PATCH 040/109] Add wifi packet received and transmitted metrics (#3382) Signed-off-by: Bouke van der Bijl --- collector/fixtures/e2e-64k-page-output.txt | 8 ++++ collector/fixtures/e2e-output.txt | 8 ++++ collector/wifi_linux.go | 52 +++++++++++++++++----- 3 files changed, 58 insertions(+), 10 deletions(-) diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index 207a1a07..280d888e 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -3412,6 +3412,10 @@ node_wifi_station_receive_bits_per_second{device="wlan0",mac_address="aa:bb:cc:d # TYPE node_wifi_station_receive_bytes_total counter node_wifi_station_receive_bytes_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 node_wifi_station_receive_bytes_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 +# HELP node_wifi_station_received_packets_total The total number of packets received by a station. +# TYPE node_wifi_station_received_packets_total counter +node_wifi_station_received_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_received_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_wifi_station_signal_dbm The current WiFi signal strength, in decibel-milliwatts (dBm). # TYPE node_wifi_station_signal_dbm gauge node_wifi_station_signal_dbm{device="wlan0",mac_address="01:02:03:04:05:06"} -26 @@ -3432,6 +3436,10 @@ node_wifi_station_transmit_failed_total{device="wlan0",mac_address="aa:bb:cc:dd: # TYPE node_wifi_station_transmit_retries_total counter node_wifi_station_transmit_retries_total{device="wlan0",mac_address="01:02:03:04:05:06"} 20 node_wifi_station_transmit_retries_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 10 +# HELP node_wifi_station_transmitted_packets_total The total number of packets transmitted by a station. +# TYPE node_wifi_station_transmitted_packets_total counter +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_xfrm_acquire_error_packets_total State hasn’t been fully acquired before use # TYPE node_xfrm_acquire_error_packets_total counter node_xfrm_acquire_error_packets_total 24532 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 997f3bf5..7e404e8e 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -3434,6 +3434,10 @@ node_wifi_station_receive_bits_per_second{device="wlan0",mac_address="aa:bb:cc:d # TYPE node_wifi_station_receive_bytes_total counter node_wifi_station_receive_bytes_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 node_wifi_station_receive_bytes_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 +# HELP node_wifi_station_received_packets_total The total number of packets received by a station. +# TYPE node_wifi_station_received_packets_total counter +node_wifi_station_received_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_received_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_wifi_station_signal_dbm The current WiFi signal strength, in decibel-milliwatts (dBm). # TYPE node_wifi_station_signal_dbm gauge node_wifi_station_signal_dbm{device="wlan0",mac_address="01:02:03:04:05:06"} -26 @@ -3454,6 +3458,10 @@ node_wifi_station_transmit_failed_total{device="wlan0",mac_address="aa:bb:cc:dd: # TYPE node_wifi_station_transmit_retries_total counter node_wifi_station_transmit_retries_total{device="wlan0",mac_address="01:02:03:04:05:06"} 20 node_wifi_station_transmit_retries_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 10 +# HELP node_wifi_station_transmitted_packets_total The total number of packets transmitted by a station. +# TYPE node_wifi_station_transmitted_packets_total counter +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="01:02:03:04:05:06"} 0 +node_wifi_station_transmitted_packets_total{device="wlan0",mac_address="aa:bb:cc:dd:ee:ff"} 0 # HELP node_xfrm_acquire_error_packets_total State hasn’t been fully acquired before use # TYPE node_xfrm_acquire_error_packets_total counter node_xfrm_acquire_error_packets_total 24532 diff --git a/collector/wifi_linux.go b/collector/wifi_linux.go index 0f651bce..17c11d29 100644 --- a/collector/wifi_linux.go +++ b/collector/wifi_linux.go @@ -33,16 +33,18 @@ type wifiCollector struct { interfaceFrequencyHertz *prometheus.Desc stationInfo *prometheus.Desc - stationConnectedSecondsTotal *prometheus.Desc - stationInactiveSeconds *prometheus.Desc - stationReceiveBitsPerSecond *prometheus.Desc - stationTransmitBitsPerSecond *prometheus.Desc - stationReceiveBytesTotal *prometheus.Desc - stationTransmitBytesTotal *prometheus.Desc - stationSignalDBM *prometheus.Desc - stationTransmitRetriesTotal *prometheus.Desc - stationTransmitFailedTotal *prometheus.Desc - stationBeaconLossTotal *prometheus.Desc + stationConnectedSecondsTotal *prometheus.Desc + stationInactiveSeconds *prometheus.Desc + stationReceiveBitsPerSecond *prometheus.Desc + stationTransmitBitsPerSecond *prometheus.Desc + stationReceiveBytesTotal *prometheus.Desc + stationTransmitBytesTotal *prometheus.Desc + stationSignalDBM *prometheus.Desc + stationTransmitRetriesTotal *prometheus.Desc + stationTransmitFailedTotal *prometheus.Desc + stationBeaconLossTotal *prometheus.Desc + stationTransmittedPacketsTotal *prometheus.Desc + stationReceivedPacketsTotal *prometheus.Desc logger *slog.Logger } @@ -159,6 +161,20 @@ func NewWifiCollector(logger *slog.Logger) (Collector, error) { labels, nil, ), + + stationTransmittedPacketsTotal: prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "station_transmitted_packets_total"), + "The total number of packets transmitted by a station.", + labels, + nil, + ), + + stationReceivedPacketsTotal: prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "station_received_packets_total"), + "The total number of packets received by a station.", + labels, + nil, + ), logger: logger, }, nil } @@ -325,6 +341,22 @@ func (c *wifiCollector) updateStationStats(ch chan<- prometheus.Metric, device s device, info.HardwareAddr.String(), ) + + ch <- prometheus.MustNewConstMetric( + c.stationTransmittedPacketsTotal, + prometheus.CounterValue, + float64(info.TransmittedPackets), + device, + info.HardwareAddr.String(), + ) + + ch <- prometheus.MustNewConstMetric( + c.stationReceivedPacketsTotal, + prometheus.CounterValue, + float64(info.ReceivedPackets), + device, + info.HardwareAddr.String(), + ) } func mHzToHz(mHz int) float64 { From 48352877430566262079c7a652fd9b329686733d Mon Sep 17 00:00:00 2001 From: hysyeah Date: Thu, 23 Oct 2025 03:17:53 +0800 Subject: [PATCH 041/109] fix: cpufreq collector enable (#3318) Signed-off-by: hys --- collector/cpu_linux.go | 2 +- collector/fixtures/e2e-output.txt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/collector/cpu_linux.go b/collector/cpu_linux.go index 671db8ba..31618f11 100644 --- a/collector/cpu_linux.go +++ b/collector/cpu_linux.go @@ -224,7 +224,7 @@ func (c *cpuCollector) updateInfo(ch chan<- prometheus.Metric) error { cpuFreqEnabled, ok := collectorState["cpufreq"] if !ok || cpuFreqEnabled == nil { c.logger.Debug("cpufreq key missing or nil value in collectorState map") - } else if !*cpuFreqEnabled { + } else if *cpuFreqEnabled { for _, cpu := range info { ch <- prometheus.MustNewConstMetric(c.cpuFrequencyHz, prometheus.GaugeValue, diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 7e404e8e..5255d366 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -311,6 +311,16 @@ node_cpu_flag_info{flag="aes"} 1 node_cpu_flag_info{flag="avx"} 1 node_cpu_flag_info{flag="avx2"} 1 node_cpu_flag_info{flag="constant_tsc"} 1 +# HELP node_cpu_frequency_hertz CPU frequency in hertz from /proc/cpuinfo. +# TYPE node_cpu_frequency_hertz gauge +node_cpu_frequency_hertz{core="0",cpu="0",package="0"} 7.99998e+08 +node_cpu_frequency_hertz{core="0",cpu="4",package="0"} 7.99989e+08 +node_cpu_frequency_hertz{core="1",cpu="1",package="0"} 8.00037e+08 +node_cpu_frequency_hertz{core="1",cpu="5",package="0"} 8.00083e+08 +node_cpu_frequency_hertz{core="2",cpu="2",package="0"} 8.0001e+08 +node_cpu_frequency_hertz{core="2",cpu="6",package="0"} 8.00017e+08 +node_cpu_frequency_hertz{core="3",cpu="3",package="0"} 8.00028e+08 +node_cpu_frequency_hertz{core="3",cpu="7",package="0"} 8.0003e+08 # HELP node_cpu_guest_seconds_total Seconds the CPUs spent in guests (VMs) for each mode. # TYPE node_cpu_guest_seconds_total counter node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0.01 From c16962b93c1a9ed26ce9dc79a09933f681b33c52 Mon Sep 17 00:00:00 2001 From: illustris Date: Thu, 23 Oct 2025 15:10:32 +0530 Subject: [PATCH 042/109] diskstats: add fallback to ID_SERIAL for virtio devices (#3398) Virtio devices don't have ID_SERIAL_SHORT but do have ID_SERIAL. This change adds a fallback to use ID_SERIAL when ID_SERIAL_SHORT is not available, allowing serial numbers to be properly exposed for virtio block devices. Also updates test expectations to reflect that devices with only ID_SERIAL (like mmcblk devices in fixtures) now report their serial numbers instead of empty strings. Signed-off-by: illustris --- collector/diskstats_linux.go | 6 ++++++ collector/diskstats_linux_test.go | 6 +++--- collector/fixtures/e2e-64k-page-output.txt | 6 +++--- collector/fixtures/e2e-output.txt | 6 +++--- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/collector/diskstats_linux.go b/collector/diskstats_linux.go index ad6ff3cb..c1ff5053 100644 --- a/collector/diskstats_linux.go +++ b/collector/diskstats_linux.go @@ -60,6 +60,7 @@ const ( udevIDModel = "ID_MODEL" udevIDPath = "ID_PATH" udevIDRevision = "ID_REVISION" + udevIDSerial = "ID_SERIAL" udevIDSerialShort = "ID_SERIAL_SHORT" udevIDWWN = "ID_WWN" udevSCSIIdentSerial = "SCSI_IDENT_SERIAL" @@ -294,6 +295,11 @@ func (c *diskstatsCollector) Update(ch chan<- prometheus.Metric) error { serial = info[udevIDSerialShort] } + // If still undefined, fallback to ID_SERIAL (used by virtio devices). + if serial == "" { + serial = info[udevIDSerial] + } + queueStats, err := c.fs.SysBlockDeviceQueueStats(dev) // Block Device Queue stats may not exist for all devices. if err != nil && !os.IsNotExist(err) { diff --git a/collector/diskstats_linux_test.go b/collector/diskstats_linux_test.go index fd90353f..a1c53ccd 100644 --- a/collector/diskstats_linux_test.go +++ b/collector/diskstats_linux_test.go @@ -119,9 +119,9 @@ node_disk_info{device="dm-2",major="252",minor="2",model="",path="",revision="", node_disk_info{device="dm-3",major="252",minor="3",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-4",major="252",minor="4",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-5",major="252",minor="5",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 +node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 node_disk_info{device="nvme0n1",major="259",minor="0",model="SAMSUNG EHFTF55LURSY-000Y9",path="pci-0000:02:00.0-nvme-1",revision="4NBTUY95",rotational="0",serial="S252B6CU1HG3M1",wwn="eui.p3vbbiejx5aae2r3"} 1 node_disk_info{device="sda",major="8",minor="0",model="TOSHIBA_KSDB4U86",path="pci-0000:3b:00.0-sas-phy7-lun-0",revision="0102",rotational="1",serial="2160A0D5FVGG",wwn="0x7c72382b8de36a64"} 1 node_disk_info{device="sdb",major="8",minor="16",model="SuperMicro_SSD",path="pci-0000:00:1f.2-ata-1",revision="0R",rotational="0",serial="SMC0E1B87ABBB16BD84E",wwn="0xe1b87abbb16bd84e"} 1 diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index 280d888e..522350cd 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -494,9 +494,9 @@ node_disk_info{device="dm-2",major="252",minor="2",model="",path="",revision="", node_disk_info{device="dm-3",major="252",minor="3",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-4",major="252",minor="4",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-5",major="252",minor="5",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 +node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 node_disk_info{device="nvme0n1",major="259",minor="0",model="SAMSUNG EHFTF55LURSY-000Y9",path="pci-0000:02:00.0-nvme-1",revision="4NBTUY95",rotational="0",serial="S252B6CU1HG3M1",wwn="eui.p3vbbiejx5aae2r3"} 1 node_disk_info{device="sda",major="8",minor="0",model="TOSHIBA_KSDB4U86",path="pci-0000:3b:00.0-sas-phy7-lun-0",revision="0102",rotational="1",serial="2160A0D5FVGG",wwn="0x7c72382b8de36a64"} 1 node_disk_info{device="sdb",major="8",minor="16",model="SuperMicro_SSD",path="pci-0000:00:1f.2-ata-1",revision="0R",rotational="0",serial="SMC0E1B87ABBB16BD84E",wwn="0xe1b87abbb16bd84e"} 1 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 5255d366..6f2b0376 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -526,9 +526,9 @@ node_disk_info{device="dm-2",major="252",minor="2",model="",path="",revision="", node_disk_info{device="dm-3",major="252",minor="3",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-4",major="252",minor="4",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 node_disk_info{device="dm-5",major="252",minor="5",model="",path="",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 -node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="",wwn=""} 1 +node_disk_info{device="mmcblk0",major="179",minor="0",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p1",major="179",minor="1",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 +node_disk_info{device="mmcblk0p2",major="179",minor="2",model="",path="platform-df2969f3.mmc",revision="",rotational="0",serial="0x83e36d93",wwn=""} 1 node_disk_info{device="nvme0n1",major="259",minor="0",model="SAMSUNG EHFTF55LURSY-000Y9",path="pci-0000:02:00.0-nvme-1",revision="4NBTUY95",rotational="0",serial="S252B6CU1HG3M1",wwn="eui.p3vbbiejx5aae2r3"} 1 node_disk_info{device="sda",major="8",minor="0",model="TOSHIBA_KSDB4U86",path="pci-0000:3b:00.0-sas-phy7-lun-0",revision="0102",rotational="1",serial="2160A0D5FVGG",wwn="0x7c72382b8de36a64"} 1 node_disk_info{device="sdb",major="8",minor="16",model="SuperMicro_SSD",path="pci-0000:00:1f.2-ata-1",revision="0R",rotational="0",serial="SMC0E1B87ABBB16BD84E",wwn="0xe1b87abbb16bd84e"} 1 From c97190330ef94be34f798b2c164b06f6b943f306 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Fri, 24 Oct 2025 13:18:15 +0200 Subject: [PATCH 043/109] Refactor typed metric descriptors (#3448) * Remove second implementation of typedDesc. * Refactor pcidevice Desc vars to be typedDesc. Signed-off-by: Ben Kochie --- collector/diskstats_linux.go | 29 ++---- collector/pcidevice_linux.go | 189 ++++++++++++++++++----------------- 2 files changed, 110 insertions(+), 108 deletions(-) diff --git a/collector/diskstats_linux.go b/collector/diskstats_linux.go index c1ff5053..534be69a 100644 --- a/collector/diskstats_linux.go +++ b/collector/diskstats_linux.go @@ -66,25 +66,16 @@ const ( udevSCSIIdentSerial = "SCSI_IDENT_SERIAL" ) -type typedFactorDesc struct { - desc *prometheus.Desc - valueType prometheus.ValueType -} - type udevInfo map[string]string -func (d *typedFactorDesc) mustNewConstMetric(value float64, labels ...string) prometheus.Metric { - return prometheus.MustNewConstMetric(d.desc, d.valueType, value, labels...) -} - type diskstatsCollector struct { deviceFilter deviceFilter fs blockdevice.FS - infoDesc typedFactorDesc - descs []typedFactorDesc - filesystemInfoDesc typedFactorDesc - deviceMapperInfoDesc typedFactorDesc - ataDescs map[string]typedFactorDesc + infoDesc typedDesc + descs []typedDesc + filesystemInfoDesc typedDesc + deviceMapperInfoDesc typedDesc + ataDescs map[string]typedDesc logger *slog.Logger getUdevDeviceProperties func(uint32, uint32) (udevInfo, error) } @@ -110,14 +101,14 @@ func NewDiskstatsCollector(logger *slog.Logger) (Collector, error) { collector := diskstatsCollector{ deviceFilter: deviceFilter, fs: fs, - infoDesc: typedFactorDesc{ + infoDesc: typedDesc{ desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "info"), "Info of /sys/block/.", []string{"device", "major", "minor", "path", "wwn", "model", "serial", "revision", "rotational"}, nil, ), valueType: prometheus.GaugeValue, }, - descs: []typedFactorDesc{ + descs: []typedDesc{ { desc: readsCompletedDesc, valueType: prometheus.CounterValue, }, @@ -220,21 +211,21 @@ func NewDiskstatsCollector(logger *slog.Logger) (Collector, error) { ), valueType: prometheus.CounterValue, }, }, - filesystemInfoDesc: typedFactorDesc{ + filesystemInfoDesc: typedDesc{ desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "filesystem_info"), "Info about disk filesystem.", []string{"device", "type", "usage", "uuid", "version"}, nil, ), valueType: prometheus.GaugeValue, }, - deviceMapperInfoDesc: typedFactorDesc{ + deviceMapperInfoDesc: typedDesc{ desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "device_mapper_info"), "Info about disk device mapper.", []string{"device", "name", "uuid", "vg_name", "lv_name", "lv_layer"}, nil, ), valueType: prometheus.GaugeValue, }, - ataDescs: map[string]typedFactorDesc{ + ataDescs: map[string]typedDesc{ udevIDATAWriteCache: { desc: prometheus.NewDesc(prometheus.BuildFQName(namespace, diskSubsystem, "ata_write_cache"), "ATA disk has a write cache.", diff --git a/collector/pcidevice_linux.go b/collector/pcidevice_linux.go index 1d276212..21047a40 100644 --- a/collector/pcidevice_linux.go +++ b/collector/pcidevice_linux.go @@ -43,75 +43,108 @@ var ( pcideviceLabelNames = []string{"segment", "bus", "device", "function"} - pcideviceMaxLinkTSDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_transfers_per_second"), - "Value of maximum link's transfers per second (T/s)", - pcideviceLabelNames, nil, - ) - pcideviceMaxLinkWidthDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_width"), - "Value of maximum link's width (number of lanes)", - pcideviceLabelNames, nil, - ) + pcideviceMaxLinkTSDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_transfers_per_second"), + "Value of maximum link's transfers per second (T/s)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceCurrentLinkTSDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_transfers_per_second"), - "Value of current link's transfers per second (T/s)", - pcideviceLabelNames, nil, - ) - pcideviceCurrentLinkWidthDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_width"), - "Value of current link's width (number of lanes)", - pcideviceLabelNames, nil, - ) + pcideviceMaxLinkWidthDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "max_link_width"), + "Value of maximum link's width (number of lanes)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcidevicePowerStateDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "power_state"), - "PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error.", - append(pcideviceLabelNames, "state"), nil, - ) + pcideviceCurrentLinkTSDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_transfers_per_second"), + "Value of current link's transfers per second (T/s)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + pcideviceCurrentLinkWidthDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "current_link_width"), + "Value of current link's width (number of lanes)", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceD3coldAllowedDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "d3cold_allowed"), - "Whether the PCIe device supports D3cold power state (0/1).", - pcideviceLabelNames, nil, - ) + pcidevicePowerStateDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "power_state"), + "PCIe device power state, one of: D0, D1, D2, D3hot, D3cold, unknown or error.", + append(pcideviceLabelNames, "state"), nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceSriovDriversAutoprobeDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_drivers_autoprobe"), - "Whether SR-IOV drivers autoprobe is enabled for the device (0/1).", - pcideviceLabelNames, nil, - ) + pcideviceD3coldAllowedDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "d3cold_allowed"), + "Whether the PCIe device supports D3cold power state (0/1).", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceSriovNumvfsDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_numvfs"), - "Number of Virtual Functions (VFs) currently enabled for SR-IOV.", - pcideviceLabelNames, nil, - ) + pcideviceSriovDriversAutoprobeDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_drivers_autoprobe"), + "Whether SR-IOV drivers autoprobe is enabled for the device (0/1).", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceSriovTotalvfsDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_totalvfs"), - "Total number of Virtual Functions (VFs) supported by the device.", - pcideviceLabelNames, nil, - ) + pcideviceSriovNumvfsDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_numvfs"), + "Number of Virtual Functions (VFs) currently enabled for SR-IOV.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceSriovVfTotalMsixDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_vf_total_msix"), - "Total number of MSI-X vectors for Virtual Functions.", - pcideviceLabelNames, nil, - ) + pcideviceSriovTotalvfsDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_totalvfs"), + "Total number of Virtual Functions (VFs) supported by the device.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } - pcideviceNumaNodeDesc = prometheus.NewDesc( - prometheus.BuildFQName(namespace, pcideviceSubsystem, "numa_node"), - "NUMA node number for the PCI device. -1 indicates unknown or not available.", - pcideviceLabelNames, nil, - ) + pcideviceSriovVfTotalMsixDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "sriov_vf_total_msix"), + "Total number of MSI-X vectors for Virtual Functions.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } + + pcideviceNumaNodeDesc = typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, pcideviceSubsystem, "numa_node"), + "NUMA node number for the PCI device. -1 indicates unknown or not available.", + pcideviceLabelNames, nil, + ), + valueType: prometheus.GaugeValue, + } ) type pcideviceCollector struct { fs sysfs.FS infoDesc typedDesc - descs []typedFactorDesc logger *slog.Logger pciVendors map[string]string pciDevices map[string]map[string]string @@ -161,20 +194,6 @@ func NewPcideviceCollector(logger *slog.Logger) (Collector, error) { valueType: prometheus.GaugeValue, } - c.descs = []typedFactorDesc{ - {desc: pcideviceMaxLinkTSDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceMaxLinkWidthDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceCurrentLinkTSDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceCurrentLinkWidthDesc, valueType: prometheus.GaugeValue}, - {desc: pcidevicePowerStateDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceD3coldAllowedDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceSriovDriversAutoprobeDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceSriovNumvfsDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceSriovTotalvfsDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceSriovVfTotalMsixDesc, valueType: prometheus.GaugeValue}, - {desc: pcideviceNumaNodeDesc, valueType: prometheus.GaugeValue}, - } - return c, nil } @@ -300,23 +319,15 @@ func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { } // Emit metrics for all fields except numa_node and power_state - metrics := []float64{ - maxLinkSpeedTS, - maxLinkWidth, - currentLinkSpeedTS, - currentLinkWidth, - d3coldAllowed, - sriovDriversAutoprobe, - sriovNumvfs, - sriovTotalvfs, - sriovVfTotalMsix, - } - - // Emit regular metrics (excluding power_state which is at index 4) - metricIndices := []int{0, 1, 2, 3, 5, 6, 7, 8, 9} // Skip power_state (4) and numa_node (10) - for i, val := range metrics { - ch <- c.descs[metricIndices[i]].mustNewConstMetric(val, device.Location.Strings()...) - } + ch <- pcideviceMaxLinkTSDesc.mustNewConstMetric(maxLinkSpeedTS, device.Location.Strings()...) + ch <- pcideviceMaxLinkWidthDesc.mustNewConstMetric(maxLinkWidth, device.Location.Strings()...) + ch <- pcideviceCurrentLinkTSDesc.mustNewConstMetric(currentLinkSpeedTS, device.Location.Strings()...) + ch <- pcideviceCurrentLinkWidthDesc.mustNewConstMetric(currentLinkWidth, device.Location.Strings()...) + ch <- pcideviceD3coldAllowedDesc.mustNewConstMetric(d3coldAllowed, device.Location.Strings()...) + ch <- pcideviceSriovDriversAutoprobeDesc.mustNewConstMetric(sriovDriversAutoprobe, device.Location.Strings()...) + ch <- pcideviceSriovNumvfsDesc.mustNewConstMetric(sriovNumvfs, device.Location.Strings()...) + ch <- pcideviceSriovTotalvfsDesc.mustNewConstMetric(sriovTotalvfs, device.Location.Strings()...) + ch <- pcideviceSriovVfTotalMsixDesc.mustNewConstMetric(sriovVfTotalMsix, device.Location.Strings()...) // Emit power state metrics with state labels only if power state is available if hasPowerState { @@ -330,13 +341,13 @@ func (c *pcideviceCollector) Update(ch chan<- prometheus.Metric) error { value = 0 } stateLabels := append(deviceLabels, state) - ch <- c.descs[4].mustNewConstMetric(value, stateLabels...) + ch <- pcidevicePowerStateDesc.mustNewConstMetric(value, stateLabels...) } } // Only emit numa_node metric if the value is available (not -1) if numaNode != -1 { - ch <- c.descs[10].mustNewConstMetric(numaNode, device.Location.Strings()...) + ch <- pcideviceNumaNodeDesc.mustNewConstMetric(numaNode, device.Location.Strings()...) } } From ead70c7ae49204df2f4d6a6320ca61787caeb8e4 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Fri, 24 Oct 2025 13:19:09 +0200 Subject: [PATCH 044/109] Release v1.10.0 (#3446) * [CHANGE] mdadm: Use sysfs for RAID metrics #3031 * [CHANGE] filesystem: Add erofs in default excluded fs #3313 * [CHANGE] tcpstat: Use std lib binary.NativeEndian #3386 * [FEATURE] pcidevice: Add new collector for PCIe devices #3339 * [FEATURE] AIX: Add more metrics #3338 * [FEATURE] systemd: Add Virtualization metrics #3254 * [FEATURE] swaps: Add new collector #3428 * [ENHANCEMENT] filesystem: Take super options into account for read-only #3387 * [ENHANCEMENT] perf: Add tlb_data metrics #3436 * [BUGFIX] interrupts: Fix OpenBSD interrupt device parsing #3288 * [BUGFIX] diskstats: Simplify condition #3290 * [BUGFIX] thermal: Sanitize darwin thermal strings #3294 * [BUGFIX] filesystem: Fix Darwin collector cgo memory leak #3315 * [BUGFIX] ethtool: Fix returning 0 for sanitized metrics #3335 * [BUGFIX] netdev: Fix Darwin netdev i/o bytes metric #3336 * [BUGFIX] systemd: Fix logging race #3364 * [BUGFIX] filesystem: Fix duplicate Darwin CGO import #3391 Signed-off-by: Ben Kochie --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ VERSION | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a39ddaa..fa4125f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,34 @@ * [ENHANCEMENT] * [BUGFIX] +## 1.10.0 / 2025-10-24 + +* [CHANGE] mdadm: Use sysfs for RAID metrics #3031 +* [CHANGE] filesystem: Add erofs in default excluded fs #3313 +* [CHANGE] tcpstat: Use std lib binary.NativeEndian #3386 +* [FEATURE] pcidevice: Add new collector for PCIe devices #3339 +* [FEATURE] AIX: Add more metrics #3338 +* [FEATURE] systemd: Add Virtualization metrics #3254 +* [FEATURE] swaps: Add new collector #3428 +* [ENHANCEMENT] wifi: Add packet received and transmitted metrics #3382 +* [ENHANCEMENT] filesystem: Take super options into account for read-only #3387 +* [ENHANCEMENT] pcidevice: Add additional metrics #3425 +* [ENHANCEMENT] perf: Add `tlb_data` metrics #3436 +* [BUGFIX] interrupts: Fix OpenBSD interrupt device parsing #3288 +* [BUGFIX] diskstats: Simplify condition #3290 +* [BUGFIX] thermal: Sanitize darwin thermal strings #3294 +* [BUGFIX] filesystem: Fix Darwin collector cgo memory leak #3315 +* [BUGFIX] cpufreq: Fix: collector enable #3318 +* [BUGFIX] ethtool: Fix returning 0 for sanitized metrics #3335 +* [BUGFIX] netdev: Fix Darwin netdev i/o bytes metric #3336 +* [BUGFIX] systemd: Fix logging race #3364 +* [BUGFIX] filesystem: Fix duplicate Darwin CGO import #3391 + +## 1.9.1 / 2025-04-01 + +* [BUGFIX] pressure: Fix missing IRQ on older kernels #3263 +* [BUGFIX] Fix Darwin memory leak #3277 + ## 1.9.0 / 2025-02-17 * [CHANGE] meminfo: Convert linux implementation to use procfs lib #3049 diff --git a/VERSION b/VERSION index f8e233b2..81c871de 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.0 +1.10.0 From ef5efb707bc304494d1fc03b19a6d10c55c3ac2f Mon Sep 17 00:00:00 2001 From: Markus <120221520+0xf09f95b4@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:31:52 +0200 Subject: [PATCH 045/109] Fix mount points being collected multiple times in filesystem_linux (#3376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Markus Sütter --- collector/filesystem_linux.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index c213d969..7903a046 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -128,6 +128,12 @@ func (c *filesystemCollector) processStat(labels filesystemLabels) filesystemSta } stuckMountsMtx.Unlock() + // Remove options from labels because options will not be used from this point forward + // and keeping them can lead to errors when the same device is mounted to the same mountpoint + // twice, with different options (metrics would be recorded multiple times). + labels.mountOptions = "" + labels.superOptions = "" + if err != nil { labels.deviceError = err.Error() c.logger.Debug("Error on statfs() system call", "rootfs", rootfsFilePath(labels.mountPoint), "err", err) From cc2212bb9bbedc21eed8173d6f51b05584d6e7de Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sat, 25 Oct 2025 15:44:58 +0200 Subject: [PATCH 046/109] meminfo: Add Zswap/Zswapped metrics (#3453) Add metrics for Zswap and Zswapped to the meminfo collector. Fixes: https://github.com/prometheus/node_exporter/issues/3449 Signed-off-by: Ben Kochie --- collector/meminfo_linux.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/collector/meminfo_linux.go b/collector/meminfo_linux.go index 4e67ac58..e8bcc948 100644 --- a/collector/meminfo_linux.go +++ b/collector/meminfo_linux.go @@ -184,6 +184,12 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) { if meminfo.WritebackTmpBytes != nil { metrics["WritebackTmp_bytes"] = float64(*meminfo.WritebackTmpBytes) } + if meminfo.ZswapBytes != nil { + metrics["Zswap_ytes"] = float64(*meminfo.ZswapBytes) + } + if meminfo.ZswappedBytes != nil { + metrics["Zswapped_bytes"] = float64(*meminfo.ZswappedBytes) + } // These fields are always in bytes and do not have `Bytes` // suffixed counterparts in the procfs.Meminfo struct, nor do From e1ae6ae65b778dfc516fb6d0415369169802663e Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sat, 25 Oct 2025 18:40:46 +0200 Subject: [PATCH 047/109] filesystem: Refactor mountinfo parsing (#3452) * filesystem: Refactor mountinfo parsing Migrate mountinfo parsing to procfs library. This fixes incorrect parsing introduced by PR #3387. Fixes: https://github.com/prometheus/node_exporter/issues/3450 Signed-off-by: Ben Kochie * Update fixtures for new infiniband procfs feature. Signed-off-by: Ben Kochie --------- Signed-off-by: Ben Kochie --- collector/filesystem_linux.go | 64 +++++++++++++++-------------- collector/filesystem_linux_test.go | 16 +++++--- collector/fixtures/proc/1/mountinfo | 1 + collector/fixtures/sys.ttar | 19 +++++++-- go.mod | 2 +- go.sum | 4 +- 6 files changed, 64 insertions(+), 42 deletions(-) diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index 7903a046..c3e6370b 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -17,10 +17,9 @@ package collector import ( - "bufio" + "bytes" "errors" "fmt" - "io" "log/slog" "os" "slices" @@ -31,6 +30,8 @@ import ( "github.com/alecthomas/kingpin/v2" "golang.org/x/sys/unix" + + "github.com/prometheus/procfs" ) const ( @@ -179,60 +180,51 @@ func stuckMountWatcher(mountPoint string, success chan struct{}, logger *slog.Lo } func mountPointDetails(logger *slog.Logger) ([]filesystemLabels, error) { - file, err := os.Open(procFilePath("1/mountinfo")) + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + mountInfo, err := fs.GetProcMounts(1) if errors.Is(err, os.ErrNotExist) { // Fallback to `/proc/self/mountinfo` if `/proc/1/mountinfo` is missing due hidepid. logger.Debug("Reading root mounts failed, falling back to self mounts", "err", err) - file, err = os.Open(procFilePath("self/mountinfo")) + mountInfo, err = fs.GetMounts() } if err != nil { return nil, err } - defer file.Close() - return parseFilesystemLabels(file) + return parseFilesystemLabels(mountInfo) } -func parseFilesystemLabels(r io.Reader) ([]filesystemLabels, error) { +func parseFilesystemLabels(mountInfo []*procfs.MountInfo) ([]filesystemLabels, error) { var filesystems []filesystemLabels - scanner := bufio.NewScanner(r) - for scanner.Scan() { - parts := strings.Fields(scanner.Text()) - - if len(parts) < 11 { - return nil, fmt.Errorf("malformed mount point information: %q", scanner.Text()) - } - + for _, mount := range mountInfo { major, minor := 0, 0 - _, err := fmt.Sscanf(parts[2], "%d:%d", &major, &minor) + _, err := fmt.Sscanf(mount.MajorMinorVer, "%d:%d", &major, &minor) if err != nil { - return nil, fmt.Errorf("malformed mount point information: %q", scanner.Text()) - } - - m := 5 - for parts[m+1] != "-" { - m++ + return nil, fmt.Errorf("malformed mount point MajorMinorVer: %q", mount.MajorMinorVer) } // Ensure we handle the translation of \040 and \011 // as per fstab(5). - parts[4] = strings.ReplaceAll(parts[4], "\\040", " ") - parts[4] = strings.ReplaceAll(parts[4], "\\011", "\t") + mount.MountPoint = strings.ReplaceAll(mount.MountPoint, "\\040", " ") + mount.MountPoint = strings.ReplaceAll(mount.MountPoint, "\\011", "\t") filesystems = append(filesystems, filesystemLabels{ - device: parts[m+3], - mountPoint: rootfsStripPrefix(parts[4]), - fsType: parts[m+2], - mountOptions: parts[5], - superOptions: parts[10], + device: mount.Source, + mountPoint: rootfsStripPrefix(mount.MountPoint), + fsType: mount.FSType, + mountOptions: mountOptionsString(mount.Options), + superOptions: mountOptionsString(mount.SuperOptions), major: strconv.Itoa(major), minor: strconv.Itoa(minor), deviceError: "", }) } - return filesystems, scanner.Err() + return filesystems, nil } // see https://github.com/prometheus/node_exporter/issues/3157#issuecomment-2422761187 @@ -244,3 +236,15 @@ func isFilesystemReadOnly(labels filesystemLabels) bool { return false } + +func mountOptionsString(m map[string]string) string { + b := new(bytes.Buffer) + for key, value := range m { + if value == "" { + fmt.Fprintf(b, "%s", key) + } else { + fmt.Fprintf(b, "%s=%s", key, value) + } + } + return b.String() +} diff --git a/collector/filesystem_linux_test.go b/collector/filesystem_linux_test.go index 7b3e22c4..58b4dc6b 100644 --- a/collector/filesystem_linux_test.go +++ b/collector/filesystem_linux_test.go @@ -19,26 +19,31 @@ package collector import ( "io" "log/slog" - "strings" "testing" "github.com/alecthomas/kingpin/v2" + + "github.com/prometheus/procfs" ) func Test_parseFilesystemLabelsError(t *testing.T) { tests := []struct { name string - in string + in []*procfs.MountInfo }{ { - name: "too few fields", - in: "hello world", + name: "malformed Major:Minor", + in: []*procfs.MountInfo{ + { + MajorMinorVer: "nope", + }, + }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if _, err := parseFilesystemLabels(strings.NewReader(tt.in)); err == nil { + if _, err := parseFilesystemLabels(tt.in); err == nil { t.Fatal("expected an error, but none occurred") } }) @@ -120,6 +125,7 @@ func TestMountPointDetails(t *testing.T) { "/run/user/1000/gvfs": "", "/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore] bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk": "", "/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore] bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk": "", + "/var/lib/containers/storage/overlay": "", } filesystems, err := mountPointDetails(slog.New(slog.NewTextHandler(io.Discard, nil))) diff --git a/collector/fixtures/proc/1/mountinfo b/collector/fixtures/proc/1/mountinfo index 11c50a6f..2a7deda8 100644 --- a/collector/fixtures/proc/1/mountinfo +++ b/collector/fixtures/proc/1/mountinfo @@ -29,3 +29,4 @@ 3147 3002 0:81 / /run/user/1000/gvfs rw,nosuid,nodev,relatime shared:1290 - fuse.gvfsd-fuse gvfsd-fuse rw,user_id=1000,group_id=1000 3148 3003 260:0 / /var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore]\040bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk rw,relatime shared:31 - ext4 /dev/sda rw,data=ordered 3149 3004 260:0 / /var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[vsanDatastore]\011bafb9e5a-8856-7e6c-699c-801844e77a4a/kubernetes-dynamic-pvc-3eba5bba-48a3-11e8-89ab-005056b92113.vmdk rw,relatime shared:32 - ext4 /dev/sda rw,data=ordered +1128 67 253:0 /var/lib/containers/storage/overlay /var/lib/containers/storage/overlay rw,relatime - xfs /dev/mapper/rhel-root rw,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota diff --git a/collector/fixtures/sys.ttar b/collector/fixtures/sys.ttar index 3cf4f13b..345cbcd2 100644 --- a/collector/fixtures/sys.ttar +++ b/collector/fixtures/sys.ttar @@ -1414,6 +1414,11 @@ Lines: 1 N/A (no PMA) Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/infiniband/i40iw0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/class/infiniband/i40iw0/ports/1/phys_state Lines: 1 5: LinkUp @@ -1579,6 +1584,11 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/infiniband/mlx4_0/ports/1/link_layer +Lines: 1 +InfiniBand +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/class/infiniband/mlx4_0/ports/1/phys_state Lines: 1 5: LinkUp @@ -1683,6 +1693,11 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/infiniband/mlx4_0/ports/2/link_layer +Lines: 1 +InfiniBand +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/class/infiniband/mlx4_0/ports/2/phys_state Lines: 1 5: LinkUp @@ -10297,7 +10312,3 @@ Lines: 1 20 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: sys/.unpacked -Lines: 0 -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/go.mod b/go.mod index c5d76440..c692eb92 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.1 github.com/prometheus/exporter-toolkit v0.14.1 - github.com/prometheus/procfs v0.18.0 + github.com/prometheus/procfs v0.19.0 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20250911091902-df9299821621 golang.org/x/sys v0.37.0 diff --git a/go.sum b/go.sum index 470b53a0..1e2bd012 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oE github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= github.com/prometheus/exporter-toolkit v0.14.1 h1:uKPE4ewweVRWFainwvAcHs3uw15pjw2dk3I7b+aNo9o= github.com/prometheus/exporter-toolkit v0.14.1/go.mod h1:di7yaAJiaMkcjcz48f/u4yRPwtyuxTU5Jr4EnM2mhtQ= -github.com/prometheus/procfs v0.18.0 h1:2QTA9cKdznfYJz7EDaa7IiJobHuV7E1WzeBwcrhk0ao= -github.com/prometheus/procfs v0.18.0/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/procfs v0.19.0 h1:2gU9KiEMZUhDokz1/0GToOjT7ljqxHi+GhEjk9UUMgU= +github.com/prometheus/procfs v0.19.0/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/safchain/ethtool v0.6.2 h1:O3ZPFAKEUEfbtE6J/feEe2Ft7dIJ2Sy8t4SdMRiIMHY= From fc328244fede80cde14dc0a8c5fc86f114525f29 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sat, 25 Oct 2025 19:59:00 +0200 Subject: [PATCH 048/109] Release v1.10.1 (#3454) * [BUGFIX] filesystem: Fix mount points being collected multiple times #3376 * [BUGFIX] filesystem: Refactor mountinfo parsing #3452 * [BUGFIX] meminfo: Add Zswap/Zswapped metrics #3453 Signed-off-by: Ben Kochie --- CHANGELOG.md | 6 ++++++ VERSION | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa4125f2..0409dca5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ * [ENHANCEMENT] * [BUGFIX] +## 1.10.1 / 2025-10-25 + +* [BUGFIX] filesystem: Fix mount points being collected multiple times #3376 +* [BUGFIX] filesystem: Refactor mountinfo parsing #3452 +* [BUGFIX] meminfo: Add Zswap/Zswapped metrics #3453 + ## 1.10.0 / 2025-10-24 * [CHANGE] mdadm: Use sysfs for RAID metrics #3031 diff --git a/VERSION b/VERSION index 81c871de..4dae2985 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.0 +1.10.1 From 654f19dee6a0c41de78a8d6d870e8c742cdb43b9 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sat, 25 Oct 2025 22:02:57 +0200 Subject: [PATCH 049/109] meminfo: Fix typo in Zswap metric name (#3455) Fix typo in Zswap metric name. Signed-off-by: Ben Kochie --- CHANGELOG.md | 4 ++++ VERSION | 2 +- collector/meminfo_linux.go | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0409dca5..e4e07db7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ * [ENHANCEMENT] * [BUGFIX] +## 1.10.2 / 2025-10-25 + +* [BUGFIX] meminfo: Fix typo in Zswap metric name #3455 + ## 1.10.1 / 2025-10-25 * [BUGFIX] filesystem: Fix mount points being collected multiple times #3376 diff --git a/VERSION b/VERSION index 4dae2985..5ad2491c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.1 +1.10.2 diff --git a/collector/meminfo_linux.go b/collector/meminfo_linux.go index e8bcc948..872689dd 100644 --- a/collector/meminfo_linux.go +++ b/collector/meminfo_linux.go @@ -185,7 +185,7 @@ func (c *meminfoCollector) getMemInfo() (map[string]float64, error) { metrics["WritebackTmp_bytes"] = float64(*meminfo.WritebackTmpBytes) } if meminfo.ZswapBytes != nil { - metrics["Zswap_ytes"] = float64(*meminfo.ZswapBytes) + metrics["Zswap_bytes"] = float64(*meminfo.ZswapBytes) } if meminfo.ZswappedBytes != nil { metrics["Zswapped_bytes"] = float64(*meminfo.ZswappedBytes) From 5a41bfd29845ce8f45a1db0d68dc751ac1c7f5b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 09:18:18 +0100 Subject: [PATCH 050/109] build(deps): bump github.com/prometheus/exporter-toolkit (#3461) Bumps [github.com/prometheus/exporter-toolkit](https://github.com/prometheus/exporter-toolkit) from 0.14.1 to 0.15.0. - [Release notes](https://github.com/prometheus/exporter-toolkit/releases) - [Commits](https://github.com/prometheus/exporter-toolkit/compare/v0.14.1...v0.15.0) --- updated-dependencies: - dependency-name: github.com/prometheus/exporter-toolkit dependency-version: 0.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 9 +++++---- go.sum | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index c692eb92..46ca6ff7 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.1 - github.com/prometheus/exporter-toolkit v0.14.1 + github.com/prometheus/exporter-toolkit v0.15.0 github.com/prometheus/procfs v0.19.0 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20250911091902-df9299821621 @@ -50,10 +50,11 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/net v0.44.0 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/net v0.45.0 // indirect golang.org/x/oauth2 v0.31.0 // indirect golang.org/x/sync v0.17.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect + golang.org/x/time v0.13.0 // indirect google.golang.org/protobuf v1.36.10 // indirect ) diff --git a/go.sum b/go.sum index 1e2bd012..b18880ba 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= -github.com/prometheus/exporter-toolkit v0.14.1 h1:uKPE4ewweVRWFainwvAcHs3uw15pjw2dk3I7b+aNo9o= -github.com/prometheus/exporter-toolkit v0.14.1/go.mod h1:di7yaAJiaMkcjcz48f/u4yRPwtyuxTU5Jr4EnM2mhtQ= +github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= +github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= github.com/prometheus/procfs v0.19.0 h1:2gU9KiEMZUhDokz1/0GToOjT7ljqxHi+GhEjk9UUMgU= github.com/prometheus/procfs v0.19.0/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= @@ -109,12 +109,12 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU= golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.45.0 h1:RLBg5JKixCy82FtLJpeNlVM0nrSqpCRYzVU1n8kj0tM= +golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= @@ -123,8 +123,10 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 79a8382b2a647a96eda7967f5fd3622a261612e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 09:31:10 +0100 Subject: [PATCH 051/109] build(deps): bump github.com/opencontainers/selinux (#3474) Bumps [github.com/opencontainers/selinux](https://github.com/opencontainers/selinux) from 1.12.0 to 1.13.0. - [Release notes](https://github.com/opencontainers/selinux/releases) - [Commits](https://github.com/opencontainers/selinux/compare/v1.12.0...v1.13.0) --- updated-dependencies: - dependency-name: github.com/opencontainers/selinux dependency-version: 1.13.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 +++- go.sum | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 46ca6ff7..9f9e5ab8 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/mdlayher/ethtool v0.5.0 github.com/mdlayher/netlink v1.8.0 github.com/mdlayher/wifi v0.6.0 - github.com/opencontainers/selinux v1.12.0 + github.com/opencontainers/selinux v1.13.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.23.2 @@ -33,9 +33,11 @@ require ( ) require ( + cyphar.com/go-pathrs v0.2.1 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cyphar/filepath-securejoin v0.6.0 // indirect github.com/dennwc/ioctl v1.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect diff --git a/go.sum b/go.sum index b18880ba..9627aa88 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +cyphar.com/go-pathrs v0.2.1 h1:9nx1vOgwVvX1mNBWDu93+vaceedpbsDqo+XuBGL40b8= +cyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= @@ -12,6 +14,8 @@ github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/cyphar/filepath-securejoin v0.6.0 h1:BtGB77njd6SVO6VztOHfPxKitJvd/VPT+OFBFMOi1Is= +github.com/cyphar/filepath-securejoin v0.6.0/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -64,8 +68,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/opencontainers/selinux v1.12.0 h1:6n5JV4Cf+4y0KNXW48TLj5DwfXpvWlxXplUkdTrmPb8= -github.com/opencontainers/selinux v1.12.0/go.mod h1:BTPX+bjVbWGXw7ZZWUbdENt8w0htPSrlgOOysQaU62U= +github.com/opencontainers/selinux v1.13.0 h1:Zza88GWezyT7RLql12URvoxsbLfjFx988+LGaWfbL84= +github.com/opencontainers/selinux v1.13.0/go.mod h1:XxWTed+A/s5NNq4GmYScVy+9jzXhGBVEOAyucdRUY8s= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= From 52f18bc90a334c2b48e445b960119b29975b94e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 10:16:06 +0100 Subject: [PATCH 052/109] build(deps): bump github.com/mdlayher/wifi from 0.6.0 to 0.7.0 (#3465) Bumps [github.com/mdlayher/wifi](https://github.com/mdlayher/wifi) from 0.6.0 to 0.7.0. - [Release notes](https://github.com/mdlayher/wifi/releases) - [Commits](https://github.com/mdlayher/wifi/compare/v0.6.0...v0.7.0) --- updated-dependencies: - dependency-name: github.com/mdlayher/wifi dependency-version: 0.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9f9e5ab8..8fedf1b5 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.5.0 github.com/mdlayher/netlink v1.8.0 - github.com/mdlayher/wifi v0.6.0 + github.com/mdlayher/wifi v0.7.0 github.com/opencontainers/selinux v1.13.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 diff --git a/go.sum b/go.sum index 9627aa88..422cfc85 100644 --- a/go.sum +++ b/go.sum @@ -62,8 +62,8 @@ github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= -github.com/mdlayher/wifi v0.6.0 h1:yBVPVgyCWcdyLkztUVM2Czd2XFKRJegHOoBm2gBWKG8= -github.com/mdlayher/wifi v0.6.0/go.mod h1:qwcTzRuC2bV+s4PFhGMzPi0sFHAr2jXkUSumSMIU6+4= +github.com/mdlayher/wifi v0.7.0 h1:0BvMO+gLu06pvOpINs+wVY9KgwBOyEm5TUpyLmy6yF8= +github.com/mdlayher/wifi v0.7.0/go.mod h1:Px0mNl8jXl5uiC2FWgoD6AAGWVhq19sMmppboqR59Gg= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= From 2370564b66b34a570eef230a07d1b455f31ced0b Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Sun, 9 Nov 2025 08:27:23 +0100 Subject: [PATCH 053/109] Fix Darwin/MacOS end-to-end test (#3475) Pass a filtered list of disks to test in the MacOS/Darwin end-to-end test to avoid CI runner changes from disturbing the output. Signed-off-by: Ben Kochie --- .github/workflows/bsd.yml | 4 ++-- Makefile | 3 ++- end-to-end-test.sh | 8 ++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 23a1df2a..41811e04 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -271,7 +271,7 @@ jobs: echo "::endgroup::" test_macos: - name: Run end-to-end tests on macOS + name: Run end-to-end tests on Darwin/MacOS runs-on: macos-latest steps: - name: Checkout the repository @@ -308,5 +308,5 @@ jobs: echo "::group::Run End-to-End Tests" git config --global --add safe.directory $(pwd) - make test-e2e + make test-e2e E2E_EXTRA_FLAGS='--collector.diskstats.device-include=disk[04]' echo "::endgroup::" diff --git a/Makefile b/Makefile index 0b2ff6f2..f280cfbb 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,7 @@ include Makefile.common PROMTOOL_VERSION ?= 2.30.0 PROMTOOL_URL ?= https://github.com/prometheus/prometheus/releases/download/v$(PROMTOOL_VERSION)/prometheus-$(PROMTOOL_VERSION).$(GO_BUILD_PLATFORM).tar.gz PROMTOOL ?= $(FIRST_GOPATH)/bin/promtool +E2E_EXTRA_FLAGS ?= DOCKER_IMAGE_NAME ?= node-exporter MACH ?= $(shell uname -m) @@ -121,7 +122,7 @@ tools: .PHONY: test-e2e test-e2e: build collector/fixtures/sys/.unpacked collector/fixtures/udev/.unpacked tools @echo ">> running end-to-end tests" - ./end-to-end-test.sh + ./end-to-end-test.sh -e "$(E2E_EXTRA_FLAGS)" .PHONY: skip-test-e2e skip-test-e2e: diff --git a/end-to-end-test.sh b/end-to-end-test.sh index ac786134..de490bff 100755 --- a/end-to-end-test.sh +++ b/end-to-end-test.sh @@ -127,10 +127,13 @@ case "${arch}" in ;; esac -keep=0; update=0; verbose=0 -while getopts 'hkuv' opt +extra_flags=""; keep=0; update=0; verbose=0 +while getopts 'e:hkuv' opt do case "$opt" in + e) + extra_flags="${OPTARG}" + ;; k) keep=1 ;; @@ -158,6 +161,7 @@ then fi collector_flags=$(cat << FLAGS + ${extra_flags} ${cpu_info_collector} --collector.arp.device-exclude=nope --collector.bcache.priorityStats From 48282f677839931e44e25ea264b164a97802e0a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 08:30:31 +0100 Subject: [PATCH 054/109] build(deps): bump github.com/prometheus/common from 0.67.1 to 0.67.2 (#3464) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.67.1 to 0.67.2. - [Release notes](https://github.com/prometheus/common/releases) - [Changelog](https://github.com/prometheus/common/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/common/compare/v0.67.1...v0.67.2) --- updated-dependencies: - dependency-name: github.com/prometheus/common dependency-version: 0.67.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 8fedf1b5..6206d4b8 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.67.1 + github.com/prometheus/common v0.67.2 github.com/prometheus/exporter-toolkit v0.15.0 github.com/prometheus/procfs v0.19.0 github.com/safchain/ethtool v0.6.2 @@ -53,8 +53,8 @@ require ( go.uber.org/multierr v1.6.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.45.0 // indirect - golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/net v0.46.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect diff --git a/go.sum b/go.sum index 422cfc85..83d459e0 100644 --- a/go.sum +++ b/go.sum @@ -80,8 +80,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= +github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= +github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= github.com/prometheus/procfs v0.19.0 h1:2gU9KiEMZUhDokz1/0GToOjT7ljqxHi+GhEjk9UUMgU= @@ -117,10 +117,10 @@ golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU= golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= -golang.org/x/net v0.45.0 h1:RLBg5JKixCy82FtLJpeNlVM0nrSqpCRYzVU1n8kj0tM= -golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= -golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= +golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= From 50744f6d503cf68ecda61f2495affc10e7ccbaa9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 09:09:51 +0100 Subject: [PATCH 055/109] build(deps): bump vmactions/openbsd-vm from 1.2.0 to 1.2.1 (#3466) * build(deps): bump vmactions/openbsd-vm from 1.2.0 to 1.2.1 Bumps [vmactions/openbsd-vm](https://github.com/vmactions/openbsd-vm) from 1.2.0 to 1.2.1. - [Release notes](https://github.com/vmactions/openbsd-vm/releases) - [Commits](https://github.com/vmactions/openbsd-vm/compare/1e7cc4fa7727646d3cf5921289b1f5c9d1a88f3c...bed57f753a75c9c49ab5c1880d274861b2103dd4) --- updated-dependencies: - dependency-name: vmactions/openbsd-vm dependency-version: 1.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update OpenBSD versions Update OpenBSD package versions to match new OpenBSD release. Signed-off-by: Ben Kochie --------- Signed-off-by: dependabot[bot] Signed-off-by: Ben Kochie Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Kochie --- .github/workflows/bsd.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 41811e04..667ed043 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -16,7 +16,7 @@ env: GO_VERSION_DRAGONFLY: "1.25.1" GO_VERSION_FREEBSD: "125" GO_VERSION_NETBSD: "1.25.1" - GO_VERSION_OPENBSD: "1.24.1" + GO_VERSION_OPENBSD: "1.25.1" GO_VERSION_SOLARIS: "1.25.1" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions @@ -76,7 +76,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/openbsd-vm@1e7cc4fa7727646d3cf5921289b1f5c9d1a88f3c # v1.2.0 + uses: vmactions/openbsd-vm@a254d784d6fad46e22ef73c6ecbb1dc310b04777 # v1.2.3 with: copyback: false envs: 'GO_VERSION_OPENBSD GNU_TAR_VERSION' @@ -90,7 +90,7 @@ jobs: gmake \ go-${GO_VERSION_OPENBSD} \ gsed \ - gtar-${GNU_TAR_VERSION}p0-static \ + gtar-${GNU_TAR_VERSION}p1-static \ python \ wget run: | From a1448ed711ea1098fc506531ce91e981db9a6d42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 09:10:40 +0100 Subject: [PATCH 056/109] build(deps): bump github.com/jsimonetti/rtnetlink/v2 from 2.0.5 to 2.1.0 (#3463) Bumps [github.com/jsimonetti/rtnetlink/v2](https://github.com/jsimonetti/rtnetlink) from 2.0.5 to 2.1.0. - [Release notes](https://github.com/jsimonetti/rtnetlink/releases) - [Commits](https://github.com/jsimonetti/rtnetlink/compare/v2.0.5...v2.1.0) --- updated-dependencies: - dependency-name: github.com/jsimonetti/rtnetlink/v2 dependency-version: 2.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6206d4b8..fe0c53dc 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/hashicorp/go-envparse v0.1.0 github.com/hodgesds/perf-utils v0.7.0 github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 - github.com/jsimonetti/rtnetlink/v2 v2.0.5 + github.com/jsimonetti/rtnetlink/v2 v2.1.0 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.5.0 diff --git a/go.sum b/go.sum index 83d459e0..eee96dbb 100644 --- a/go.sum +++ b/go.sum @@ -38,8 +38,8 @@ github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:PoK3ejP github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jsimonetti/rtnetlink/v2 v2.0.5 h1:l5S9iedrSW4thUfgiU+Hzsnk1cOR0upGD5ttt6mirHw= -github.com/jsimonetti/rtnetlink/v2 v2.0.5/go.mod h1:9yTlq3Ojr1rbmh/Y5L30/KIojpFhTRph2xKeZ+y+Pic= +github.com/jsimonetti/rtnetlink/v2 v2.1.0 h1:3sSPD0k+Qvia3wbv6kZXCN0Dlz6Swv7RHjvvonuOcKE= +github.com/jsimonetti/rtnetlink/v2 v2.1.0/go.mod h1:hPPUTE+ekH3HD+zCEGAGLxzFY9HrJCyD1aN7JJ3SHIY= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From c9f46cbb7c32abdf73c449a66d864439337ff4ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 09:10:56 +0100 Subject: [PATCH 057/109] build(deps): bump github.com/prometheus/procfs from 0.19.0 to 0.19.2 (#3462) Bumps [github.com/prometheus/procfs](https://github.com/prometheus/procfs) from 0.19.0 to 0.19.2. - [Release notes](https://github.com/prometheus/procfs/releases) - [Commits](https://github.com/prometheus/procfs/compare/v0.19.0...v0.19.2) --- updated-dependencies: - dependency-name: github.com/prometheus/procfs dependency-version: 0.19.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fe0c53dc..011c10a3 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.2 github.com/prometheus/exporter-toolkit v0.15.0 - github.com/prometheus/procfs v0.19.0 + github.com/prometheus/procfs v0.19.2 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20250911091902-df9299821621 golang.org/x/sys v0.37.0 diff --git a/go.sum b/go.sum index eee96dbb..907bffee 100644 --- a/go.sum +++ b/go.sum @@ -84,8 +84,8 @@ github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyA github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= -github.com/prometheus/procfs v0.19.0 h1:2gU9KiEMZUhDokz1/0GToOjT7ljqxHi+GhEjk9UUMgU= -github.com/prometheus/procfs v0.19.0/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= +github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/safchain/ethtool v0.6.2 h1:O3ZPFAKEUEfbtE6J/feEe2Ft7dIJ2Sy8t4SdMRiIMHY= From 55756f07a17881fc73c680c8332c1e7770869906 Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Sun, 9 Nov 2025 09:11:52 +0100 Subject: [PATCH 058/109] Synchronize common files from prometheus/prometheus (#3469) * Update common Prometheus files Signed-off-by: prombot * Fixup linting issues. Signed-off-by: Ben Kochie --------- Signed-off-by: prombot Signed-off-by: Ben Kochie Co-authored-by: Ben Kochie --- .golangci.yml | 12 ++++-------- Makefile.common | 2 +- collector/arp_linux.go | 1 - collector/bcache_linux.go | 1 - collector/bonding_linux.go | 1 - collector/bonding_linux_test.go | 1 - collector/boot_time_bsd.go | 2 -- collector/boot_time_solaris.go | 4 ++-- collector/btrfs_linux.go | 1 - collector/btrfs_linux_test.go | 1 - collector/buddyinfo.go | 1 - collector/cgroups_linux.go | 1 - collector/conntrack_linux.go | 1 - collector/cpu_aix.go | 1 - collector/cpu_common.go | 1 - collector/cpu_darwin.go | 1 - collector/cpu_dragonfly.go | 1 - collector/cpu_dragonfly_test.go | 1 - collector/cpu_freebsd.go | 1 - collector/cpu_linux.go | 1 - collector/cpu_linux_test.go | 1 - collector/cpu_netbsd.go | 1 - collector/cpu_netbsd_test.go | 1 - collector/cpu_openbsd.go | 1 - collector/cpu_solaris.go | 1 - collector/cpufreq_common.go | 1 - collector/cpufreq_linux.go | 1 - collector/cpufreq_solaris.go | 1 - collector/devstat_dragonfly.go | 1 - collector/devstat_freebsd.go | 1 - collector/diskstats_aix.go | 1 - collector/diskstats_common.go | 2 -- collector/diskstats_darwin.go | 1 - collector/diskstats_linux.go | 1 - collector/diskstats_linux_test.go | 1 - collector/diskstats_openbsd.go | 1 - collector/diskstats_openbsd_amd64.go | 1 - collector/dmi.go | 1 - collector/drbd_linux.go | 1 - collector/drm_linux.go | 1 - collector/edac_linux.go | 1 - collector/entropy_linux.go | 1 - collector/ethtool_linux.go | 1 - collector/ethtool_linux_test.go | 1 - collector/exec_bsd.go | 5 ++--- collector/fibrechannel_linux.go | 4 ++-- collector/filefd_linux.go | 1 - collector/filefd_linux_test.go | 1 - collector/filesystem_aix.go | 1 - collector/filesystem_bsd.go | 1 - collector/filesystem_common.go | 2 -- collector/filesystem_freebsd.go | 1 - collector/filesystem_linux.go | 1 - collector/filesystem_linux_test.go | 1 - collector/filesystem_macos.go | 1 - collector/filesystem_netbsd.go | 1 - collector/filesystem_openbsd.go | 1 - collector/hwmon_linux.go | 1 - collector/infiniband_linux.go | 1 - collector/interrupts_common.go | 2 -- collector/interrupts_linux.go | 1 - collector/interrupts_linux_test.go | 1 - collector/interrupts_openbsd.go | 1 - collector/interrupts_openbsd_amd64.go | 1 - collector/ipvs_linux.go | 1 - collector/ipvs_linux_test.go | 1 - collector/ksmd_linux.go | 1 - collector/kvm_bsd.go | 2 -- collector/lnstat_linux.go | 1 - collector/loadavg.go | 2 -- collector/loadavg_aix.go | 1 - collector/loadavg_bsd.go | 2 -- collector/loadavg_linux.go | 1 - collector/loadavg_linux_test.go | 1 - collector/loadavg_solaris.go | 1 - collector/logind_linux.go | 1 - collector/logind_linux_test.go | 1 - collector/mdadm_linux.go | 1 - collector/mdadm_linux_test.go | 1 - collector/meminfo.go | 2 -- collector/meminfo_aix.go | 1 - collector/meminfo_darwin.go | 1 - collector/meminfo_linux.go | 1 - collector/meminfo_linux_test.go | 1 - collector/meminfo_netbsd.go | 4 ++-- collector/meminfo_numa_linux.go | 1 - collector/meminfo_numa_linux_test.go | 1 - collector/meminfo_openbsd.go | 1 - collector/meminfo_openbsd_amd64.go | 1 - collector/memory_bsd.go | 2 -- collector/mountstats_linux.go | 1 - collector/netclass_linux.go | 1 - collector/netclass_rtnl_linux.go | 1 - collector/netdev_aix.go | 1 - collector/netdev_bsd.go | 2 -- collector/netdev_common.go | 2 -- collector/netdev_darwin.go | 1 - collector/netdev_linux.go | 1 - collector/netdev_linux_test.go | 1 - collector/netdev_openbsd.go | 1 - collector/netdev_openbsd_amd64.go | 1 - collector/netinterface_aix.go | 1 - collector/netisr_freebsd.go | 1 - collector/netstat_freebsd.go | 1 - collector/netstat_freebsd_test.go | 6 +++--- collector/netstat_linux.go | 1 - collector/netstat_linux_test.go | 1 - collector/network_route_linux.go | 1 - collector/nfs_linux.go | 1 - collector/nfsd_linux.go | 1 - collector/ntp.go | 1 - collector/nvme_linux.go | 1 - collector/os_release.go | 1 - collector/partition_aix.go | 1 - collector/pcidevice_linux.go | 1 - collector/pcidevice_linux_test.go | 1 - collector/perf_linux.go | 1 - collector/perf_linux_test.go | 1 - collector/powersupplyclass.go | 2 -- collector/powersupplyclass_darwin.go | 1 - collector/powersupplyclass_linux.go | 1 - collector/pressure_linux.go | 1 - collector/processes_linux.go | 1 - collector/processes_linux_test.go | 1 - collector/qdisc_linux.go | 1 - collector/rapl_linux.go | 1 - collector/runit.go | 1 - collector/schedstat_linux.go | 1 - collector/selinux_linux.go | 1 - collector/slabinfo_linux.go | 1 - collector/sockstat_linux.go | 1 - collector/softirqs_common.go | 1 - collector/softirqs_linux.go | 1 - collector/softnet_linux.go | 1 - collector/stat_linux.go | 1 - collector/supervisord.go | 1 - collector/swap_linux_test.go | 1 - collector/sysctl_bsd.go | 2 -- collector/sysctl_openbsd_amd64.go | 3 ++- collector/systemd_linux.go | 1 - collector/systemd_linux_test.go | 1 - collector/tapestats_linux.go | 1 - collector/tcpstat_linux.go | 1 - collector/tcpstat_linux_test.go | 1 - collector/textfile.go | 1 - collector/textfile_test.go | 1 - collector/thermal_darwin.go | 1 - collector/thermal_zone_linux.go | 1 - collector/time.go | 1 - collector/time_linux.go | 1 - collector/time_other.go | 1 - collector/timex.go | 1 - collector/udp_queues_linux.go | 1 - collector/uname.go | 2 -- collector/uname_bsd.go | 2 -- collector/uname_linux.go | 1 - collector/vmstat_linux.go | 1 - collector/watchdog.go | 1 - collector/watchdog_test.go | 1 - collector/wifi_linux.go | 1 - collector/xfrm.go | 1 - collector/xfrm_test.go | 1 - collector/xfs_linux.go | 1 - collector/zfs_common.go | 2 -- collector/zfs_freebsd.go | 4 ++-- collector/zfs_linux.go | 1 - collector/zfs_linux_test.go | 1 - collector/zfs_solaris.go | 1 - node_exporter.go | 1 + 169 files changed, 21 insertions(+), 199 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 26d1f5ad..16bec0de 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -33,16 +33,12 @@ linters: - linters: - errcheck path: _test.go - paths: - - third_party$ - - builtin$ - - examples$ formatters: enable: - goimports exclusions: generated: lax - paths: - - third_party$ - - builtin$ - - examples$ + settings: + goimports: + local-prefixes: + - github.com/prometheus/node_exporter diff --git a/Makefile.common b/Makefile.common index 6762d0f8..143bf03f 100644 --- a/Makefile.common +++ b/Makefile.common @@ -61,7 +61,7 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v2.4.0 +GOLANGCI_LINT_VERSION ?= v2.6.0 GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. diff --git a/collector/arp_linux.go b/collector/arp_linux.go index e1ba52c8..c3d47151 100644 --- a/collector/arp_linux.go +++ b/collector/arp_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noarp -// +build !noarp package collector diff --git a/collector/bcache_linux.go b/collector/bcache_linux.go index 97064e21..90366cc3 100644 --- a/collector/bcache_linux.go +++ b/collector/bcache_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobcache -// +build !nobcache package collector diff --git a/collector/bonding_linux.go b/collector/bonding_linux.go index 4e30cac5..a1e0a987 100644 --- a/collector/bonding_linux.go +++ b/collector/bonding_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobonding -// +build !nobonding package collector diff --git a/collector/bonding_linux_test.go b/collector/bonding_linux_test.go index 98af73fa..87481922 100644 --- a/collector/bonding_linux_test.go +++ b/collector/bonding_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobonding -// +build !nobonding package collector diff --git a/collector/boot_time_bsd.go b/collector/boot_time_bsd.go index 49b4145c..fe1ddcac 100644 --- a/collector/boot_time_bsd.go +++ b/collector/boot_time_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (freebsd || dragonfly || openbsd || netbsd || darwin) && !noboottime -// +build freebsd dragonfly openbsd netbsd darwin -// +build !noboottime package collector diff --git a/collector/boot_time_solaris.go b/collector/boot_time_solaris.go index 4c336fb3..4b2ef457 100644 --- a/collector/boot_time_solaris.go +++ b/collector/boot_time_solaris.go @@ -12,14 +12,14 @@ // limitations under the License. //go:build !noboottime -// +build !noboottime package collector import ( + "log/slog" + "github.com/illumos/go-kstat" "github.com/prometheus/client_golang/prometheus" - "log/slog" ) type bootTimeCollector struct { diff --git a/collector/btrfs_linux.go b/collector/btrfs_linux.go index acb7e64c..bc6fb604 100644 --- a/collector/btrfs_linux.go +++ b/collector/btrfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobtrfs -// +build !nobtrfs package collector diff --git a/collector/btrfs_linux_test.go b/collector/btrfs_linux_test.go index c2ed57e5..7be7bc39 100644 --- a/collector/btrfs_linux_test.go +++ b/collector/btrfs_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobtrfs -// +build !nobtrfs package collector diff --git a/collector/buddyinfo.go b/collector/buddyinfo.go index 62392b96..e0b54fb3 100644 --- a/collector/buddyinfo.go +++ b/collector/buddyinfo.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nobuddyinfo && !netbsd -// +build !nobuddyinfo,!netbsd package collector diff --git a/collector/cgroups_linux.go b/collector/cgroups_linux.go index 2a4e288e..f8da892e 100644 --- a/collector/cgroups_linux.go +++ b/collector/cgroups_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nostat -// +build !nostat package collector diff --git a/collector/conntrack_linux.go b/collector/conntrack_linux.go index 309857c7..376ab05a 100644 --- a/collector/conntrack_linux.go +++ b/collector/conntrack_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noconntrack -// +build !noconntrack package collector diff --git a/collector/cpu_aix.go b/collector/cpu_aix.go index 017e1a0c..1368f1b3 100644 --- a/collector/cpu_aix.go +++ b/collector/cpu_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_common.go b/collector/cpu_common.go index 6f644516..cb34facb 100644 --- a/collector/cpu_common.go +++ b/collector/cpu_common.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_darwin.go b/collector/cpu_darwin.go index 31b11702..e4e312ae 100644 --- a/collector/cpu_darwin.go +++ b/collector/cpu_darwin.go @@ -15,7 +15,6 @@ // BSD. See https://github.com/shirou/gopsutil/blob/master/LICENSE for details. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_dragonfly.go b/collector/cpu_dragonfly.go index c53aaef0..3571f436 100644 --- a/collector/cpu_dragonfly.go +++ b/collector/cpu_dragonfly.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_dragonfly_test.go b/collector/cpu_dragonfly_test.go index 31f55c2e..c5d006fa 100644 --- a/collector/cpu_dragonfly_test.go +++ b/collector/cpu_dragonfly_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_freebsd.go b/collector/cpu_freebsd.go index 39b01185..6532029e 100644 --- a/collector/cpu_freebsd.go +++ b/collector/cpu_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_linux.go b/collector/cpu_linux.go index 31618f11..1fef2890 100644 --- a/collector/cpu_linux.go +++ b/collector/cpu_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_linux_test.go b/collector/cpu_linux_test.go index 158ae8ff..6d4bc450 100644 --- a/collector/cpu_linux_test.go +++ b/collector/cpu_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_netbsd.go b/collector/cpu_netbsd.go index 459365d6..49051a6e 100644 --- a/collector/cpu_netbsd.go +++ b/collector/cpu_netbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_netbsd_test.go b/collector/cpu_netbsd_test.go index 08498d52..4a872bff 100644 --- a/collector/cpu_netbsd_test.go +++ b/collector/cpu_netbsd_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_openbsd.go b/collector/cpu_openbsd.go index 2d59f547..2c8ce9a8 100644 --- a/collector/cpu_openbsd.go +++ b/collector/cpu_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpu_solaris.go b/collector/cpu_solaris.go index 550ba374..471d29f0 100644 --- a/collector/cpu_solaris.go +++ b/collector/cpu_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpufreq_common.go b/collector/cpufreq_common.go index e1eda589..4cd17808 100644 --- a/collector/cpufreq_common.go +++ b/collector/cpufreq_common.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpufreq_linux.go b/collector/cpufreq_linux.go index dbeaa491..725e64e0 100644 --- a/collector/cpufreq_linux.go +++ b/collector/cpufreq_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/cpufreq_solaris.go b/collector/cpufreq_solaris.go index c13703e1..41826a99 100644 --- a/collector/cpufreq_solaris.go +++ b/collector/cpufreq_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nocpu -// +build !nocpu package collector diff --git a/collector/devstat_dragonfly.go b/collector/devstat_dragonfly.go index b1796860..28cc5228 100644 --- a/collector/devstat_dragonfly.go +++ b/collector/devstat_dragonfly.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodevstat -// +build !nodevstat package collector diff --git a/collector/devstat_freebsd.go b/collector/devstat_freebsd.go index a9d42720..0c8a11c9 100644 --- a/collector/devstat_freebsd.go +++ b/collector/devstat_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodevstat -// +build !nodevstat package collector diff --git a/collector/diskstats_aix.go b/collector/diskstats_aix.go index 4ad39ff3..f77eef06 100644 --- a/collector/diskstats_aix.go +++ b/collector/diskstats_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/diskstats_common.go b/collector/diskstats_common.go index 593d0558..c930ca48 100644 --- a/collector/diskstats_common.go +++ b/collector/diskstats_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nodiskstats && (openbsd || linux || darwin || aix) -// +build !nodiskstats -// +build openbsd linux darwin aix package collector diff --git a/collector/diskstats_darwin.go b/collector/diskstats_darwin.go index 98052fe7..abcf8540 100644 --- a/collector/diskstats_darwin.go +++ b/collector/diskstats_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/diskstats_linux.go b/collector/diskstats_linux.go index 534be69a..daca55d9 100644 --- a/collector/diskstats_linux.go +++ b/collector/diskstats_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/diskstats_linux_test.go b/collector/diskstats_linux_test.go index a1c53ccd..08a5024c 100644 --- a/collector/diskstats_linux_test.go +++ b/collector/diskstats_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/diskstats_openbsd.go b/collector/diskstats_openbsd.go index 49415c17..c642a7bf 100644 --- a/collector/diskstats_openbsd.go +++ b/collector/diskstats_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats && !amd64 -// +build !nodiskstats,!amd64 package collector diff --git a/collector/diskstats_openbsd_amd64.go b/collector/diskstats_openbsd_amd64.go index b290d889..bbb9e8b9 100644 --- a/collector/diskstats_openbsd_amd64.go +++ b/collector/diskstats_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodiskstats -// +build !nodiskstats package collector diff --git a/collector/dmi.go b/collector/dmi.go index 2282d7bd..575c3319 100644 --- a/collector/dmi.go +++ b/collector/dmi.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nodmi -// +build linux,!nodmi package collector diff --git a/collector/drbd_linux.go b/collector/drbd_linux.go index cbaf8161..f3102700 100644 --- a/collector/drbd_linux.go +++ b/collector/drbd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nodrbd -// +build !nodrbd package collector diff --git a/collector/drm_linux.go b/collector/drm_linux.go index 61bb59ac..80356ee8 100644 --- a/collector/drm_linux.go +++ b/collector/drm_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nogpu -// +build !nogpu package collector diff --git a/collector/edac_linux.go b/collector/edac_linux.go index c14c96c3..d3a2a07a 100644 --- a/collector/edac_linux.go +++ b/collector/edac_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noedac -// +build !noedac package collector diff --git a/collector/entropy_linux.go b/collector/entropy_linux.go index 6da61125..1373bf36 100644 --- a/collector/entropy_linux.go +++ b/collector/entropy_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noentropy -// +build !noentropy package collector diff --git a/collector/ethtool_linux.go b/collector/ethtool_linux.go index d9f66469..e4d86bcd 100644 --- a/collector/ethtool_linux.go +++ b/collector/ethtool_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noethtool -// +build !noethtool // The hard work of collecting data from the kernel via the ethtool interfaces is done by // https://github.com/safchain/ethtool/ diff --git a/collector/ethtool_linux_test.go b/collector/ethtool_linux_test.go index 3cd00809..84cca888 100644 --- a/collector/ethtool_linux_test.go +++ b/collector/ethtool_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noethtool -// +build !noethtool package collector diff --git a/collector/exec_bsd.go b/collector/exec_bsd.go index 07de879e..d3e5f70f 100644 --- a/collector/exec_bsd.go +++ b/collector/exec_bsd.go @@ -12,14 +12,13 @@ // limitations under the License. //go:build (freebsd || dragonfly) && !noexec -// +build freebsd dragonfly -// +build !noexec package collector import ( - "github.com/prometheus/client_golang/prometheus" "log/slog" + + "github.com/prometheus/client_golang/prometheus" ) type execCollector struct { diff --git a/collector/fibrechannel_linux.go b/collector/fibrechannel_linux.go index cb8be9db..a0528d16 100644 --- a/collector/fibrechannel_linux.go +++ b/collector/fibrechannel_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofibrechannel -// +build !nofibrechannel package collector @@ -22,8 +21,9 @@ import ( "os" "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/node_exporter/collector/utils" "github.com/prometheus/procfs/sysfs" + + "github.com/prometheus/node_exporter/collector/utils" ) const maxUint64 = ^uint64(0) diff --git a/collector/filefd_linux.go b/collector/filefd_linux.go index 39a72fcd..c24215c4 100644 --- a/collector/filefd_linux.go +++ b/collector/filefd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilefd -// +build !nofilefd package collector diff --git a/collector/filefd_linux_test.go b/collector/filefd_linux_test.go index f31a5c2c..b43c1ed2 100644 --- a/collector/filefd_linux_test.go +++ b/collector/filefd_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilefd -// +build !nofilefd package collector diff --git a/collector/filesystem_aix.go b/collector/filesystem_aix.go index 84bb8913..e4db6bce 100644 --- a/collector/filesystem_aix.go +++ b/collector/filesystem_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_bsd.go b/collector/filesystem_bsd.go index 2810a5a3..79dde087 100644 --- a/collector/filesystem_bsd.go +++ b/collector/filesystem_bsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build dragonfly && !nofilesystem -// +build dragonfly,!nofilesystem package collector diff --git a/collector/filesystem_common.go b/collector/filesystem_common.go index 1e61e8e7..efcd26a0 100644 --- a/collector/filesystem_common.go +++ b/collector/filesystem_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nofilesystem && (linux || freebsd || netbsd || openbsd || darwin || dragonfly || aix) -// +build !nofilesystem -// +build linux freebsd netbsd openbsd darwin dragonfly aix package collector diff --git a/collector/filesystem_freebsd.go b/collector/filesystem_freebsd.go index 502ae0a8..cbc99d9f 100644 --- a/collector/filesystem_freebsd.go +++ b/collector/filesystem_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_linux.go b/collector/filesystem_linux.go index c3e6370b..3739f0fe 100644 --- a/collector/filesystem_linux.go +++ b/collector/filesystem_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_linux_test.go b/collector/filesystem_linux_test.go index 58b4dc6b..a838e932 100644 --- a/collector/filesystem_linux_test.go +++ b/collector/filesystem_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_macos.go b/collector/filesystem_macos.go index ff06e8c6..be0a4906 100644 --- a/collector/filesystem_macos.go +++ b/collector/filesystem_macos.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build darwin && !nofilesystem -// +build darwin,!nofilesystem package collector diff --git a/collector/filesystem_netbsd.go b/collector/filesystem_netbsd.go index c7395893..21f73abb 100644 --- a/collector/filesystem_netbsd.go +++ b/collector/filesystem_netbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/filesystem_openbsd.go b/collector/filesystem_openbsd.go index fa9f8eb8..3ca929d8 100644 --- a/collector/filesystem_openbsd.go +++ b/collector/filesystem_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nofilesystem -// +build !nofilesystem package collector diff --git a/collector/hwmon_linux.go b/collector/hwmon_linux.go index 905a4336..fe4ac817 100644 --- a/collector/hwmon_linux.go +++ b/collector/hwmon_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nohwmon -// +build !nohwmon package collector diff --git a/collector/infiniband_linux.go b/collector/infiniband_linux.go index 7b1c4381..fa7ed91a 100644 --- a/collector/infiniband_linux.go +++ b/collector/infiniband_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noinfiniband -// +build !noinfiniband package collector diff --git a/collector/interrupts_common.go b/collector/interrupts_common.go index 80cd7171..4e4bad6f 100644 --- a/collector/interrupts_common.go +++ b/collector/interrupts_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (linux || openbsd) && !nointerrupts -// +build linux openbsd -// +build !nointerrupts package collector diff --git a/collector/interrupts_linux.go b/collector/interrupts_linux.go index 77caf423..d70b0e04 100644 --- a/collector/interrupts_linux.go +++ b/collector/interrupts_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts -// +build !nointerrupts package collector diff --git a/collector/interrupts_linux_test.go b/collector/interrupts_linux_test.go index 82e536e4..d9209165 100644 --- a/collector/interrupts_linux_test.go +++ b/collector/interrupts_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts -// +build !nointerrupts package collector diff --git a/collector/interrupts_openbsd.go b/collector/interrupts_openbsd.go index 60fcbf1d..b9ab0d90 100644 --- a/collector/interrupts_openbsd.go +++ b/collector/interrupts_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts && !amd64 -// +build !nointerrupts,!amd64 package collector diff --git a/collector/interrupts_openbsd_amd64.go b/collector/interrupts_openbsd_amd64.go index f52a1b81..5f404496 100644 --- a/collector/interrupts_openbsd_amd64.go +++ b/collector/interrupts_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nointerrupts -// +build !nointerrupts package collector diff --git a/collector/ipvs_linux.go b/collector/ipvs_linux.go index 7d7bae54..2ad30e07 100644 --- a/collector/ipvs_linux.go +++ b/collector/ipvs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noipvs -// +build !noipvs package collector diff --git a/collector/ipvs_linux_test.go b/collector/ipvs_linux_test.go index bc3e40f9..b6870d80 100644 --- a/collector/ipvs_linux_test.go +++ b/collector/ipvs_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noipvs -// +build !noipvs package collector diff --git a/collector/ksmd_linux.go b/collector/ksmd_linux.go index d504fe30..2a68f43f 100644 --- a/collector/ksmd_linux.go +++ b/collector/ksmd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noksmd -// +build !noksmd package collector diff --git a/collector/kvm_bsd.go b/collector/kvm_bsd.go index c4a4479a..feee6cc8 100644 --- a/collector/kvm_bsd.go +++ b/collector/kvm_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nokvm && (freebsd || dragonfly) -// +build !nokvm -// +build freebsd dragonfly package collector diff --git a/collector/lnstat_linux.go b/collector/lnstat_linux.go index 43bd7e05..232e5ce4 100644 --- a/collector/lnstat_linux.go +++ b/collector/lnstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nolnstat -// +build !nolnstat package collector diff --git a/collector/loadavg.go b/collector/loadavg.go index 09b1df3a..48c271d9 100644 --- a/collector/loadavg.go +++ b/collector/loadavg.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || aix) && !noloadavg -// +build darwin dragonfly freebsd linux netbsd openbsd solaris aix -// +build !noloadavg package collector diff --git a/collector/loadavg_aix.go b/collector/loadavg_aix.go index 0f3db0d9..8736dca8 100644 --- a/collector/loadavg_aix.go +++ b/collector/loadavg_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/loadavg_bsd.go b/collector/loadavg_bsd.go index a1f5ae66..23ab24a9 100644 --- a/collector/loadavg_bsd.go +++ b/collector/loadavg_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && !noloadavg -// +build darwin dragonfly freebsd netbsd openbsd -// +build !noloadavg package collector diff --git a/collector/loadavg_linux.go b/collector/loadavg_linux.go index aab11b18..f0d6c6e7 100644 --- a/collector/loadavg_linux.go +++ b/collector/loadavg_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/loadavg_linux_test.go b/collector/loadavg_linux_test.go index 2d56317d..271cc6b4 100644 --- a/collector/loadavg_linux_test.go +++ b/collector/loadavg_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/loadavg_solaris.go b/collector/loadavg_solaris.go index 316233fa..31b1105e 100644 --- a/collector/loadavg_solaris.go +++ b/collector/loadavg_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noloadavg -// +build !noloadavg package collector diff --git a/collector/logind_linux.go b/collector/logind_linux.go index 140a7b93..bd2c0484 100644 --- a/collector/logind_linux.go +++ b/collector/logind_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nologind -// +build !nologind package collector diff --git a/collector/logind_linux_test.go b/collector/logind_linux_test.go index 5cfedff4..b2592a74 100644 --- a/collector/logind_linux_test.go +++ b/collector/logind_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nologind -// +build !nologind package collector diff --git a/collector/mdadm_linux.go b/collector/mdadm_linux.go index 5f76db23..14dc2088 100644 --- a/collector/mdadm_linux.go +++ b/collector/mdadm_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomdadm -// +build !nomdadm package collector diff --git a/collector/mdadm_linux_test.go b/collector/mdadm_linux_test.go index f125d533..6aa21623 100644 --- a/collector/mdadm_linux_test.go +++ b/collector/mdadm_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomdadm -// +build !nomdadm package collector diff --git a/collector/meminfo.go b/collector/meminfo.go index 4eab27b1..cc69fe74 100644 --- a/collector/meminfo.go +++ b/collector/meminfo.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || linux || openbsd || netbsd || aix) && !nomeminfo -// +build darwin linux openbsd netbsd aix -// +build !nomeminfo package collector diff --git a/collector/meminfo_aix.go b/collector/meminfo_aix.go index f90b1fd8..52e84a1e 100644 --- a/collector/meminfo_aix.go +++ b/collector/meminfo_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/meminfo_darwin.go b/collector/meminfo_darwin.go index 26a6a1ac..947857f9 100644 --- a/collector/meminfo_darwin.go +++ b/collector/meminfo_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/meminfo_linux.go b/collector/meminfo_linux.go index 872689dd..88c18d76 100644 --- a/collector/meminfo_linux.go +++ b/collector/meminfo_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/meminfo_linux_test.go b/collector/meminfo_linux_test.go index 41a0133f..2ad7d505 100644 --- a/collector/meminfo_linux_test.go +++ b/collector/meminfo_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/meminfo_netbsd.go b/collector/meminfo_netbsd.go index 54d23a12..549cd6a5 100644 --- a/collector/meminfo_netbsd.go +++ b/collector/meminfo_netbsd.go @@ -12,13 +12,13 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector import ( - "golang.org/x/sys/unix" "log/slog" + + "golang.org/x/sys/unix" ) type meminfoCollector struct { diff --git a/collector/meminfo_numa_linux.go b/collector/meminfo_numa_linux.go index fc26eba4..cd494928 100644 --- a/collector/meminfo_numa_linux.go +++ b/collector/meminfo_numa_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo_numa -// +build !nomeminfo_numa package collector diff --git a/collector/meminfo_numa_linux_test.go b/collector/meminfo_numa_linux_test.go index 33bc362e..1d251fcf 100644 --- a/collector/meminfo_numa_linux_test.go +++ b/collector/meminfo_numa_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo_numa -// +build !nomeminfo_numa package collector diff --git a/collector/meminfo_openbsd.go b/collector/meminfo_openbsd.go index ca9f46ad..25090510 100644 --- a/collector/meminfo_openbsd.go +++ b/collector/meminfo_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo && !amd64 -// +build !nomeminfo,!amd64 package collector diff --git a/collector/meminfo_openbsd_amd64.go b/collector/meminfo_openbsd_amd64.go index 906a36e4..72950726 100644 --- a/collector/meminfo_openbsd_amd64.go +++ b/collector/meminfo_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomeminfo -// +build !nomeminfo package collector diff --git a/collector/memory_bsd.go b/collector/memory_bsd.go index 1c371052..5bec6155 100644 --- a/collector/memory_bsd.go +++ b/collector/memory_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (freebsd || dragonfly) && !nomeminfo -// +build freebsd dragonfly -// +build !nomeminfo package collector diff --git a/collector/mountstats_linux.go b/collector/mountstats_linux.go index 03f1a9b6..319b8914 100644 --- a/collector/mountstats_linux.go +++ b/collector/mountstats_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nomountstats -// +build !nomountstats package collector diff --git a/collector/netclass_linux.go b/collector/netclass_linux.go index 87763c3b..7f8373df 100644 --- a/collector/netclass_linux.go +++ b/collector/netclass_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetclass && linux -// +build !nonetclass,linux package collector diff --git a/collector/netclass_rtnl_linux.go b/collector/netclass_rtnl_linux.go index 44d89f8f..6df34756 100644 --- a/collector/netclass_rtnl_linux.go +++ b/collector/netclass_rtnl_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetclass && linux -// +build !nonetclass,linux package collector diff --git a/collector/netdev_aix.go b/collector/netdev_aix.go index e29371b1..6c48600f 100644 --- a/collector/netdev_aix.go +++ b/collector/netdev_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_bsd.go b/collector/netdev_bsd.go index e1a947e7..7ec6ad57 100644 --- a/collector/netdev_bsd.go +++ b/collector/netdev_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nonetdev && (freebsd || dragonfly) -// +build !nonetdev -// +build freebsd dragonfly package collector diff --git a/collector/netdev_common.go b/collector/netdev_common.go index c19e5df5..091f3464 100644 --- a/collector/netdev_common.go +++ b/collector/netdev_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nonetdev && (linux || freebsd || openbsd || dragonfly || darwin || aix) -// +build !nonetdev -// +build linux freebsd openbsd dragonfly darwin aix package collector diff --git a/collector/netdev_darwin.go b/collector/netdev_darwin.go index 42835594..7b70a0d0 100644 --- a/collector/netdev_darwin.go +++ b/collector/netdev_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_linux.go b/collector/netdev_linux.go index 58ac4af5..8f694c2c 100644 --- a/collector/netdev_linux.go +++ b/collector/netdev_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_linux_test.go b/collector/netdev_linux_test.go index 06700fd8..3f0515b3 100644 --- a/collector/netdev_linux_test.go +++ b/collector/netdev_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netdev_openbsd.go b/collector/netdev_openbsd.go index 31c2640b..85df6801 100644 --- a/collector/netdev_openbsd.go +++ b/collector/netdev_openbsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev && !amd64 -// +build !nonetdev,!amd64 package collector diff --git a/collector/netdev_openbsd_amd64.go b/collector/netdev_openbsd_amd64.go index e9857164..62b706d0 100644 --- a/collector/netdev_openbsd_amd64.go +++ b/collector/netdev_openbsd_amd64.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetdev -// +build !nonetdev package collector diff --git a/collector/netinterface_aix.go b/collector/netinterface_aix.go index 9a5b7668..913963e7 100644 --- a/collector/netinterface_aix.go +++ b/collector/netinterface_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetinterface -// +build !nonetinterface package collector diff --git a/collector/netisr_freebsd.go b/collector/netisr_freebsd.go index b3a4451c..608adbbf 100644 --- a/collector/netisr_freebsd.go +++ b/collector/netisr_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetisr -// +build !nonetisr package collector diff --git a/collector/netstat_freebsd.go b/collector/netstat_freebsd.go index 3c34d8b3..3688abca 100644 --- a/collector/netstat_freebsd.go +++ b/collector/netstat_freebsd.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build freebsd -// +build freebsd package collector diff --git a/collector/netstat_freebsd_test.go b/collector/netstat_freebsd_test.go index 3b3f8523..2b3e0575 100644 --- a/collector/netstat_freebsd_test.go +++ b/collector/netstat_freebsd_test.go @@ -12,15 +12,15 @@ // limitations under the License. //go:build freebsd -// +build freebsd package collector import ( - "github.com/prometheus/client_golang/prometheus" - "golang.org/x/sys/unix" "testing" "unsafe" + + "github.com/prometheus/client_golang/prometheus" + "golang.org/x/sys/unix" ) func TestNetStatCollectorDescribe(t *testing.T) { diff --git a/collector/netstat_linux.go b/collector/netstat_linux.go index c59183d7..5065a19a 100644 --- a/collector/netstat_linux.go +++ b/collector/netstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetstat -// +build !nonetstat package collector diff --git a/collector/netstat_linux_test.go b/collector/netstat_linux_test.go index ec430bc3..a30f44a2 100644 --- a/collector/netstat_linux_test.go +++ b/collector/netstat_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetstat -// +build !nonetstat package collector diff --git a/collector/network_route_linux.go b/collector/network_route_linux.go index 5a5c34d2..d290b202 100644 --- a/collector/network_route_linux.go +++ b/collector/network_route_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonetworkroute -// +build !nonetworkroute package collector diff --git a/collector/nfs_linux.go b/collector/nfs_linux.go index ea2a1b52..7815dd06 100644 --- a/collector/nfs_linux.go +++ b/collector/nfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonfs -// +build !nonfs package collector diff --git a/collector/nfsd_linux.go b/collector/nfsd_linux.go index 7f1bc240..866be828 100644 --- a/collector/nfsd_linux.go +++ b/collector/nfsd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonfsd -// +build !nonfsd package collector diff --git a/collector/ntp.go b/collector/ntp.go index 406920e3..e1465f54 100644 --- a/collector/ntp.go +++ b/collector/ntp.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nontp -// +build !nontp package collector diff --git a/collector/nvme_linux.go b/collector/nvme_linux.go index d1a9a87b..6de1b936 100644 --- a/collector/nvme_linux.go +++ b/collector/nvme_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nonvme -// +build !nonvme package collector diff --git a/collector/os_release.go b/collector/os_release.go index e589c4ff..6acf9bed 100644 --- a/collector/os_release.go +++ b/collector/os_release.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noosrelease && !aix -// +build !noosrelease,!aix package collector diff --git a/collector/partition_aix.go b/collector/partition_aix.go index 3c54e0f4..a6d94941 100644 --- a/collector/partition_aix.go +++ b/collector/partition_aix.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopartition -// +build !nopartition package collector diff --git a/collector/pcidevice_linux.go b/collector/pcidevice_linux.go index 21047a40..6f33db93 100644 --- a/collector/pcidevice_linux.go +++ b/collector/pcidevice_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopcidevice -// +build !nopcidevice package collector diff --git a/collector/pcidevice_linux_test.go b/collector/pcidevice_linux_test.go index 097cc391..aedc7c5f 100644 --- a/collector/pcidevice_linux_test.go +++ b/collector/pcidevice_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopcidevice -// +build !nopcidevice package collector diff --git a/collector/perf_linux.go b/collector/perf_linux.go index 2fc1676d..8b68205a 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noperf -// +build !noperf package collector diff --git a/collector/perf_linux_test.go b/collector/perf_linux_test.go index 1d39e8a9..3176e7d2 100644 --- a/collector/perf_linux_test.go +++ b/collector/perf_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noperf -// +build !noperf package collector diff --git a/collector/powersupplyclass.go b/collector/powersupplyclass.go index a5e648c0..33142617 100644 --- a/collector/powersupplyclass.go +++ b/collector/powersupplyclass.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nopowersupplyclass && (linux || darwin) -// +build !nopowersupplyclass -// +build linux darwin package collector diff --git a/collector/powersupplyclass_darwin.go b/collector/powersupplyclass_darwin.go index 01d7f184..be3d778c 100644 --- a/collector/powersupplyclass_darwin.go +++ b/collector/powersupplyclass_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopowersupplyclass -// +build !nopowersupplyclass package collector diff --git a/collector/powersupplyclass_linux.go b/collector/powersupplyclass_linux.go index 86e81fb6..b4fbf351 100644 --- a/collector/powersupplyclass_linux.go +++ b/collector/powersupplyclass_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopowersupplyclass -// +build !nopowersupplyclass package collector diff --git a/collector/pressure_linux.go b/collector/pressure_linux.go index 63b32d2a..659c4b37 100644 --- a/collector/pressure_linux.go +++ b/collector/pressure_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nopressure -// +build !nopressure package collector diff --git a/collector/processes_linux.go b/collector/processes_linux.go index add7f0df..eff5cf06 100644 --- a/collector/processes_linux.go +++ b/collector/processes_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noprocesses -// +build !noprocesses package collector diff --git a/collector/processes_linux_test.go b/collector/processes_linux_test.go index f89ad12f..4b20ef8d 100644 --- a/collector/processes_linux_test.go +++ b/collector/processes_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noprocesses -// +build !noprocesses package collector diff --git a/collector/qdisc_linux.go b/collector/qdisc_linux.go index 93a78e3b..9062da12 100644 --- a/collector/qdisc_linux.go +++ b/collector/qdisc_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noqdisc -// +build !noqdisc package collector diff --git a/collector/rapl_linux.go b/collector/rapl_linux.go index 25d78f29..92c402d5 100644 --- a/collector/rapl_linux.go +++ b/collector/rapl_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !norapl -// +build !norapl package collector diff --git a/collector/runit.go b/collector/runit.go index 2813bfd0..9fabd3ff 100644 --- a/collector/runit.go +++ b/collector/runit.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !norunit -// +build !norunit package collector diff --git a/collector/schedstat_linux.go b/collector/schedstat_linux.go index 59b2bd8e..14882bda 100644 --- a/collector/schedstat_linux.go +++ b/collector/schedstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noshedstat -// +build !noshedstat package collector diff --git a/collector/selinux_linux.go b/collector/selinux_linux.go index f10b43fa..b0e7fac6 100644 --- a/collector/selinux_linux.go +++ b/collector/selinux_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noselinux -// +build !noselinux package collector diff --git a/collector/slabinfo_linux.go b/collector/slabinfo_linux.go index aa871548..48bbf2ab 100644 --- a/collector/slabinfo_linux.go +++ b/collector/slabinfo_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noslabinfo -// +build !noslabinfo package collector diff --git a/collector/sockstat_linux.go b/collector/sockstat_linux.go index 73a3bf68..0ec782bc 100644 --- a/collector/sockstat_linux.go +++ b/collector/sockstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosockstat -// +build !nosockstat package collector diff --git a/collector/softirqs_common.go b/collector/softirqs_common.go index 73a9f7be..2022a4b5 100644 --- a/collector/softirqs_common.go +++ b/collector/softirqs_common.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nosoftirqs -// +build linux,!nosoftirqs package collector diff --git a/collector/softirqs_linux.go b/collector/softirqs_linux.go index 702f34bb..0c647510 100644 --- a/collector/softirqs_linux.go +++ b/collector/softirqs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosoftirqs -// +build !nosoftirqs package collector diff --git a/collector/softnet_linux.go b/collector/softnet_linux.go index 296e5875..2644bbf9 100644 --- a/collector/softnet_linux.go +++ b/collector/softnet_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosoftnet -// +build !nosoftnet package collector diff --git a/collector/stat_linux.go b/collector/stat_linux.go index 0b99cc32..19939062 100644 --- a/collector/stat_linux.go +++ b/collector/stat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nostat -// +build !nostat package collector diff --git a/collector/supervisord.go b/collector/supervisord.go index ae5e2297..b3c4c3f6 100644 --- a/collector/supervisord.go +++ b/collector/supervisord.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosupervisord -// +build !nosupervisord package collector diff --git a/collector/swap_linux_test.go b/collector/swap_linux_test.go index bd9e44eb..f4e49c50 100644 --- a/collector/swap_linux_test.go +++ b/collector/swap_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noswap -// +build !noswap package collector diff --git a/collector/sysctl_bsd.go b/collector/sysctl_bsd.go index 2ab248ed..e3c8dc5c 100644 --- a/collector/sysctl_bsd.go +++ b/collector/sysctl_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (freebsd || dragonfly || openbsd || netbsd || darwin) && cgo -// +build freebsd dragonfly openbsd netbsd darwin -// +build cgo package collector diff --git a/collector/sysctl_openbsd_amd64.go b/collector/sysctl_openbsd_amd64.go index 3d805109..2b298893 100644 --- a/collector/sysctl_openbsd_amd64.go +++ b/collector/sysctl_openbsd_amd64.go @@ -14,9 +14,10 @@ package collector import ( - "golang.org/x/sys/unix" "syscall" "unsafe" + + "golang.org/x/sys/unix" ) func int8ToString(a []int8) string { diff --git a/collector/systemd_linux.go b/collector/systemd_linux.go index b8378ee3..51b82c01 100644 --- a/collector/systemd_linux.go +++ b/collector/systemd_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosystemd -// +build !nosystemd package collector diff --git a/collector/systemd_linux_test.go b/collector/systemd_linux_test.go index f12b6ef8..98668ed6 100644 --- a/collector/systemd_linux_test.go +++ b/collector/systemd_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nosystemd -// +build !nosystemd package collector diff --git a/collector/tapestats_linux.go b/collector/tapestats_linux.go index c74c11d0..e195ce1c 100644 --- a/collector/tapestats_linux.go +++ b/collector/tapestats_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notapestats -// +build !notapestats package collector diff --git a/collector/tcpstat_linux.go b/collector/tcpstat_linux.go index 476a9b47..555e46e9 100644 --- a/collector/tcpstat_linux.go +++ b/collector/tcpstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notcpstat -// +build !notcpstat package collector diff --git a/collector/tcpstat_linux_test.go b/collector/tcpstat_linux_test.go index 5f3c4aad..8a56af9c 100644 --- a/collector/tcpstat_linux_test.go +++ b/collector/tcpstat_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notcpstat -// +build !notcpstat package collector diff --git a/collector/textfile.go b/collector/textfile.go index c61a6a62..17e4a60d 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notextfile -// +build !notextfile package collector diff --git a/collector/textfile_test.go b/collector/textfile_test.go index ece70b3a..2fb31fac 100644 --- a/collector/textfile_test.go +++ b/collector/textfile_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notextfile -// +build !notextfile package collector diff --git a/collector/thermal_darwin.go b/collector/thermal_darwin.go index 9a74fdbd..b51f1822 100644 --- a/collector/thermal_darwin.go +++ b/collector/thermal_darwin.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notherm -// +build !notherm package collector diff --git a/collector/thermal_zone_linux.go b/collector/thermal_zone_linux.go index 95db2723..a50278e9 100644 --- a/collector/thermal_zone_linux.go +++ b/collector/thermal_zone_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nothermalzone -// +build !nothermalzone package collector diff --git a/collector/time.go b/collector/time.go index a4a81687..1851ba1a 100644 --- a/collector/time.go +++ b/collector/time.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notime -// +build !notime package collector diff --git a/collector/time_linux.go b/collector/time_linux.go index 212ba228..afd7208e 100644 --- a/collector/time_linux.go +++ b/collector/time_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !notime -// +build !notime package collector diff --git a/collector/time_other.go b/collector/time_other.go index 8227435b..5658fe48 100644 --- a/collector/time_other.go +++ b/collector/time_other.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !linux && !notime -// +build !linux,!notime package collector diff --git a/collector/timex.go b/collector/timex.go index eb21f7c3..6494726e 100644 --- a/collector/timex.go +++ b/collector/timex.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !notimex -// +build linux,!notimex package collector diff --git a/collector/udp_queues_linux.go b/collector/udp_queues_linux.go index 2923936e..0ebd9300 100644 --- a/collector/udp_queues_linux.go +++ b/collector/udp_queues_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noudp_queues -// +build !noudp_queues package collector diff --git a/collector/uname.go b/collector/uname.go index 32ca08c4..737a5a87 100644 --- a/collector/uname.go +++ b/collector/uname.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || freebsd || openbsd || netbsd || linux || aix) && !nouname -// +build darwin freebsd openbsd netbsd linux aix -// +build !nouname package collector diff --git a/collector/uname_bsd.go b/collector/uname_bsd.go index fa565a1c..07f7aca0 100644 --- a/collector/uname_bsd.go +++ b/collector/uname_bsd.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build (darwin || freebsd || openbsd || netbsd || aix) && !nouname -// +build darwin freebsd openbsd netbsd aix -// +build !nouname package collector diff --git a/collector/uname_linux.go b/collector/uname_linux.go index 4f8bac33..d3c4b5ae 100644 --- a/collector/uname_linux.go +++ b/collector/uname_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nouname -// +build !nouname package collector diff --git a/collector/vmstat_linux.go b/collector/vmstat_linux.go index e31be0f7..987aebe9 100644 --- a/collector/vmstat_linux.go +++ b/collector/vmstat_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !novmstat -// +build !novmstat package collector diff --git a/collector/watchdog.go b/collector/watchdog.go index 77fb792e..d3e041d5 100644 --- a/collector/watchdog.go +++ b/collector/watchdog.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nowatchdog -// +build linux,!nowatchdog package collector diff --git a/collector/watchdog_test.go b/collector/watchdog_test.go index baf08995..4fbcff7d 100644 --- a/collector/watchdog_test.go +++ b/collector/watchdog_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build linux && !nowatchdog -// +build linux,!nowatchdog package collector diff --git a/collector/wifi_linux.go b/collector/wifi_linux.go index 17c11d29..0d2a6b08 100644 --- a/collector/wifi_linux.go +++ b/collector/wifi_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nowifi -// +build !nowifi package collector diff --git a/collector/xfrm.go b/collector/xfrm.go index d96ee8aa..f69d362c 100644 --- a/collector/xfrm.go +++ b/collector/xfrm.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noxfrm -// +build !noxfrm package collector diff --git a/collector/xfrm_test.go b/collector/xfrm_test.go index e009fc40..9598e113 100644 --- a/collector/xfrm_test.go +++ b/collector/xfrm_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noxfrm -// +build !noxfrm package collector diff --git a/collector/xfs_linux.go b/collector/xfs_linux.go index 3eac1d0e..b5157849 100644 --- a/collector/xfs_linux.go +++ b/collector/xfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !noxfs -// +build !noxfs package collector diff --git a/collector/zfs_common.go b/collector/zfs_common.go index 7934ec5a..f939ae99 100644 --- a/collector/zfs_common.go +++ b/collector/zfs_common.go @@ -12,8 +12,6 @@ // limitations under the License. //go:build !nozfs && (freebsd || linux || solaris) -// +build !nozfs -// +build freebsd linux solaris package collector diff --git a/collector/zfs_freebsd.go b/collector/zfs_freebsd.go index d888c3a7..9354c96d 100644 --- a/collector/zfs_freebsd.go +++ b/collector/zfs_freebsd.go @@ -12,13 +12,13 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector import ( - "github.com/prometheus/client_golang/prometheus" "log/slog" + + "github.com/prometheus/client_golang/prometheus" ) type zfsCollector struct { diff --git a/collector/zfs_linux.go b/collector/zfs_linux.go index b714a18b..9e968f73 100644 --- a/collector/zfs_linux.go +++ b/collector/zfs_linux.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector diff --git a/collector/zfs_linux_test.go b/collector/zfs_linux_test.go index 0b77a522..182a3240 100644 --- a/collector/zfs_linux_test.go +++ b/collector/zfs_linux_test.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector diff --git a/collector/zfs_solaris.go b/collector/zfs_solaris.go index 1f10ee01..0f858ad9 100644 --- a/collector/zfs_solaris.go +++ b/collector/zfs_solaris.go @@ -12,7 +12,6 @@ // limitations under the License. //go:build !nozfs -// +build !nozfs package collector diff --git a/node_exporter.go b/node_exporter.go index 22939cbc..2c0e12cc 100644 --- a/node_exporter.go +++ b/node_exporter.go @@ -35,6 +35,7 @@ import ( "github.com/prometheus/common/version" "github.com/prometheus/exporter-toolkit/web" "github.com/prometheus/exporter-toolkit/web/kingpinflag" + "github.com/prometheus/node_exporter/collector" ) From e62d5975cb13d21f7b6ce982323c0e47316f22b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 09:37:45 +0100 Subject: [PATCH 059/109] build(deps): bump golang.org/x/sys from 0.37.0 to 0.38.0 (#3476) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.37.0 to 0.38.0. - [Commits](https://github.com/golang/sys/compare/v0.37.0...v0.38.0) --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-version: 0.38.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 011c10a3..2582e6f1 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/prometheus/procfs v0.19.2 github.com/safchain/ethtool v0.6.2 golang.org/x/exp v0.0.0-20250911091902-df9299821621 - golang.org/x/sys v0.37.0 + golang.org/x/sys v0.38.0 howett.net/plist v1.0.1 ) diff --git a/go.sum b/go.sum index 907bffee..1dd89c93 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= From f3154c977634ee1c1093fab521c6f24cb8514c8b Mon Sep 17 00:00:00 2001 From: dongjiang Date: Wed, 12 Nov 2025 20:29:46 +0800 Subject: [PATCH 060/109] Add hw_counters metrics for infiniband device. (#2827) * add hwcounters for infiniband --------- Signed-off-by: dongjiang1989 --- collector/infiniband_linux.go | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/collector/infiniband_linux.go b/collector/infiniband_linux.go index fa7ed91a..078047a0 100644 --- a/collector/infiniband_linux.go +++ b/collector/infiniband_linux.go @@ -83,6 +83,38 @@ func NewInfiniBandCollector(logger *slog.Logger) (Collector, error) { "port_receive_switch_relay_errors_total": "Number of packets that could not be forwarded by the switch.", "symbol_error_total": "Number of minor link errors detected on one or more physical lanes.", "vl15_dropped_total": "Number of incoming VL15 packets dropped due to resource limitations.", + + // https://enterprise-support.nvidia.com/s/article/understanding-mlx5-linux-counters-and-status-parameters + "duplicate_requests_packets_total": "The number of received packets. A duplicate request is a request that had been previously executed.", + "implied_nak_seq_errors_total": "The number of time the requested decided an ACK. with a PSN larger than the expected PSN for an RDMA read or response.", + "lifespan_seconds": "The maximum period in ms which defines the aging of the counter reads. Two consecutive reads within this period might return the same values.", + "local_ack_timeout_errors_total": "The number of times QP's ack timer expired for RC, XRC, DCT QPs at the sender side. The QP retry limit was not exceed, therefore it is still recoverable error.", + "np_cnp_packets_sent_total": "The number of CNP packets sent by the Notification Point when it noticed congestion experienced in the RoCEv2 IP header (ECN bits). The counters was added in MLNX_OFED 4.1", + "np_ecn_marked_roce_packets_received_total": "The number of RoCEv2 packets received by the notification point which were marked for experiencing the congestion (ECN bits where '11' on the ingress RoCE traffic) . The counters was added in MLNX_OFED 4.1", + "out_of_buffer_drops_total": "The number of drops occurred due to lack of WQE for the associated QPs.", + "out_of_sequence_packets_received_total": "The number of out of sequence packets received.", + "packet_sequence_errors_total": "The number of received NAK sequence error packets. The QP retry limit was not exceeded.", + "req_cqes_errors_total": "The number of times requester detected CQEs completed with errors. The counters was added in MLNX_OFED 4.1", + "req_cqes_flush_errors_total": "The number of times requester detected CQEs completed with flushed errors. The counters was added in MLNX_OFED 4.1", + "req_remote_access_errors_total": "The number of times requester detected remote access errors. The counters was added in MLNX_OFED 4.1", + "req_remote_invalid_request_errors_total": "The number of times requester detected remote invalid request errors. The counters was added in MLNX_OFED 4.1", + "resp_cqes_errors_total": "The number of times responder detected CQEs completed with errors. The counters was added in MLNX_OFED 4.1", + "resp_cqes_flush_errors_total": "The number of times responder detected CQEs completed with flushed errors. The counters was added in MLNX_OFED 4.1", + "resp_local_length_errors_total": "The number of times responder detected local length errors. The counters was added in MLNX_OFED 4.1", + "resp_remote_access_errors_total": "The number of times responder detected remote access errors. The counters was added in MLNX_OFED 4.1", + "rnr_nak_retry_packets_received_total": "The number of received RNR NAK packets. The QP retry limit was not exceeded.", + "roce_adp_retransmits_total": "The number of adaptive retransmissions for RoCE traffic. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_adp_retransmits_timeout_total": "The number of times RoCE traffic reached timeout due to adaptive retransmission. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_slow_restart_used_total": "The number of times RoCE slow restart was used. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_slow_restart_cnps_total": "The number of times RoCE slow restart generated CNP packets. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "roce_slow_restart_total": "The number of times RoCE slow restart changed state to slow restart. The counter was added in MLNX_OFED rev 5.0-1.0.0.0 and kernel v5.6.0", + "rp_cnp_packets_handled_total": "The number of CNP packets handled by the Reaction Point HCA to throttle the transmission rate. The counters was added in MLNX_OFED 4.1", + "rp_cnp_ignored_packets_received_total": "The number of CNP packets received and ignored by the Reaction Point HCA. This counter should not raise if RoCE Congestion Control was enabled in the network. If this counter raise, verify that ECN was enabled on the adapter.", + "rx_atomic_requests_total": "The number of received ATOMIC request for the associated QPs.", + "rx_dct_connect_requests_total": "The number of received connection requests for the associated DCTs.", + "rx_read_requests_total": "The number of received READ requests for the associated QPs.", + "rx_write_requests_total": "The number of received WRITE requests for the associated QPs.", + "rx_icrc_encapsulated_errors_total": "The number of RoCE packets with ICRC errors. This counter was added in MLNX_OFED 4.4 and kernel 4.19", } i.metricDescs = make(map[string]*prometheus.Desc) @@ -167,6 +199,41 @@ func (c *infinibandCollector) Update(ch chan<- prometheus.Metric) error { c.pushCounter(ch, "port_receive_switch_relay_errors_total", port.Counters.PortRcvSwitchRelayErrors, port.Name, portStr) c.pushCounter(ch, "symbol_error_total", port.Counters.SymbolError, port.Name, portStr) c.pushCounter(ch, "vl15_dropped_total", port.Counters.VL15Dropped, port.Name, portStr) + + // port.HwCounters + if port.HwCounters.Lifespan != nil { + c.pushMetric(ch, "lifespan_seconds", *(port.HwCounters.Lifespan)/1000, port.Name, portStr, prometheus.GaugeValue) + } + + c.pushCounter(ch, "duplicate_requests_packets_total", port.HwCounters.DuplicateRequest, port.Name, portStr) + c.pushCounter(ch, "implied_nak_seq_errors_total", port.HwCounters.ImpliedNakSeqErr, port.Name, portStr) + c.pushCounter(ch, "local_ack_timeout_errors_total", port.HwCounters.LocalAckTimeoutErr, port.Name, portStr) + c.pushCounter(ch, "np_cnp_packets_sent_total", port.HwCounters.NpCnpSent, port.Name, portStr) + c.pushCounter(ch, "np_ecn_marked_roce_packets_received_total", port.HwCounters.NpEcnMarkedRocePackets, port.Name, portStr) + c.pushCounter(ch, "out_of_buffer_drops_total", port.HwCounters.OutOfBuffer, port.Name, portStr) + c.pushCounter(ch, "out_of_sequence_packets_received_total", port.HwCounters.OutOfSequence, port.Name, portStr) + c.pushCounter(ch, "packet_sequence_errors_total", port.HwCounters.PacketSeqErr, port.Name, portStr) + c.pushCounter(ch, "req_cqes_errors_total", port.HwCounters.ReqCqeError, port.Name, portStr) + c.pushCounter(ch, "req_cqes_flush_errors_total", port.HwCounters.ReqCqeFlushError, port.Name, portStr) + c.pushCounter(ch, "req_remote_access_errors_total", port.HwCounters.ReqRemoteAccessErrors, port.Name, portStr) + c.pushCounter(ch, "req_remote_invalid_request_errors_total", port.HwCounters.ReqRemoteInvalidRequest, port.Name, portStr) + c.pushCounter(ch, "resp_cqes_errors_total", port.HwCounters.RespCqeError, port.Name, portStr) + c.pushCounter(ch, "resp_cqes_flush_errors_total", port.HwCounters.RespCqeFlushError, port.Name, portStr) + c.pushCounter(ch, "resp_local_length_errors_total", port.HwCounters.RespLocalLengthError, port.Name, portStr) + c.pushCounter(ch, "resp_remote_access_errors_total", port.HwCounters.RespRemoteAccessErrors, port.Name, portStr) + c.pushCounter(ch, "rnr_nak_retry_packets_received_total", port.HwCounters.RnrNakRetryErr, port.Name, portStr) + c.pushCounter(ch, "roce_adp_retransmits_total", port.HwCounters.RoceAdpRetrans, port.Name, portStr) + c.pushCounter(ch, "roce_adp_retransmits_timeout_total", port.HwCounters.RoceAdpRetransTo, port.Name, portStr) + c.pushCounter(ch, "roce_slow_restart_used_total", port.HwCounters.RoceSlowRestart, port.Name, portStr) + c.pushCounter(ch, "roce_slow_restart_cnps_total", port.HwCounters.RoceSlowRestartCnps, port.Name, portStr) + c.pushCounter(ch, "roce_slow_restart_total", port.HwCounters.RoceSlowRestartTrans, port.Name, portStr) + c.pushCounter(ch, "rp_cnp_packets_handled_total", port.HwCounters.RpCnpHandled, port.Name, portStr) + c.pushCounter(ch, "rp_cnp_ignored_packets_received_total", port.HwCounters.RpCnpIgnored, port.Name, portStr) + c.pushCounter(ch, "rx_atomic_requests_total", port.HwCounters.RxAtomicRequests, port.Name, portStr) + c.pushCounter(ch, "rx_dct_connect_requests_total", port.HwCounters.RxDctConnect, port.Name, portStr) + c.pushCounter(ch, "rx_read_requests_total", port.HwCounters.RxReadRequests, port.Name, portStr) + c.pushCounter(ch, "rx_write_requests_total", port.HwCounters.RxWriteRequests, port.Name, portStr) + c.pushCounter(ch, "rx_icrc_encapsulated_errors_total", port.HwCounters.RxIcrcEncapsulated, port.Name, portStr) } } From 819c3705973b179c03896c2ab4d9af0bd7c35575 Mon Sep 17 00:00:00 2001 From: ScarletBlizzard <61126210+ScarletBlizzard@users.noreply.github.com> Date: Thu, 13 Nov 2025 14:18:53 +0300 Subject: [PATCH 061/109] Add collector for hung_task_detect_count (#3470) * Add collector for hung_task_detect_count --------- Signed-off-by: ScarletBlizzard --- README.md | 1 + collector/kernel_hung_linux.go | 63 ++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 collector/kernel_hung_linux.go diff --git a/README.md b/README.md index 3761bcc9..ec5adbf7 100644 --- a/README.md +++ b/README.md @@ -195,6 +195,7 @@ drm | Expose GPU metrics using sysfs / DRM, `amdgpu` is the only driver which ex drbd | Exposes Distributed Replicated Block Device statistics (to version 8.4) | Linux ethtool | Exposes network interface information and network driver statistics equivalent to `ethtool`, `ethtool -S`, and `ethtool -i`. | Linux interrupts | Exposes detailed interrupts statistics. | Linux, OpenBSD +kernel_hung | Exposes number of tasks that have been detected as hung from `/proc/sys/kernel/hung_task_detect_count`. | Linux ksmd | Exposes kernel and system statistics from `/sys/kernel/mm/ksm`. | Linux lnstat | Exposes stats from `/proc/net/stat/`. | Linux logind | Exposes session counts from [logind](http://www.freedesktop.org/wiki/Software/systemd/logind/). | Linux diff --git a/collector/kernel_hung_linux.go b/collector/kernel_hung_linux.go new file mode 100644 index 00000000..cf842d0b --- /dev/null +++ b/collector/kernel_hung_linux.go @@ -0,0 +1,63 @@ +// Copyright 2018 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !noprocesses + +package collector + +import ( + "fmt" + "log/slog" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs" +) + +type kernelHungCollector struct { + fs procfs.FS + logger *slog.Logger +} + +func init() { + registerCollector("kernel_hung", defaultDisabled, NewKernelHungCollector) +} + +func NewKernelHungCollector(logger *slog.Logger) (Collector, error) { + fs, err := procfs.NewFS(*procPath) + if err != nil { + return nil, fmt.Errorf("failed to open procfs: %w", err) + } + return &kernelHungCollector{ + fs: fs, + logger: logger, + }, nil +} + +var ( + taskDetectCount = prometheus.NewDesc( + prometheus.BuildFQName(namespace, "kernel_hung", "task_detect_count"), + "Total number of interrupts serviced.", + nil, nil, + ) +) + +func (c *kernelHungCollector) Update(ch chan<- prometheus.Metric) error { + kernelHung, err := c.fs.KernelHung() + if err != nil { + return err + } + + ch <- prometheus.MustNewConstMetric(taskDetectCount, prometheus.CounterValue, float64(*kernelHung.HungTaskDetectCount)) + + return nil +} From b306b639e1c81dfd6e142d5415a85b37c9f1c195 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 14:18:49 +0100 Subject: [PATCH 062/109] build(deps): bump golang.org/x/crypto from 0.43.0 to 0.45.0 (#3481) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.43.0 to 0.45.0. - [Commits](https://github.com/golang/crypto/compare/v0.43.0...v0.45.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.45.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 2582e6f1..3aef9ce1 100644 --- a/go.mod +++ b/go.mod @@ -52,11 +52,11 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/crypto v0.45.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/protobuf v1.36.10 // indirect ) diff --git a/go.sum b/go.sum index 1dd89c93..1c0d0dad 100644 --- a/go.sum +++ b/go.sum @@ -113,22 +113,22 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU= golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= From b644734d06e311a5ba71a999103aa2def0776f17 Mon Sep 17 00:00:00 2001 From: RockWolf Date: Thu, 29 May 2025 13:35:47 +0200 Subject: [PATCH 063/109] fix(netdev): respect deviceFilter for node_network_address_info metric Signed-off-by: RockWolf --- collector/netdev_common.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/collector/netdev_common.go b/collector/netdev_common.go index 091f3464..f37a7085 100644 --- a/collector/netdev_common.go +++ b/collector/netdev_common.go @@ -146,7 +146,7 @@ func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error { "info"), "node network address by device", []string{"device", "address", "netmask", "scope"}, nil) - for _, addr := range getAddrsInfo(interfaces) { + for _, addr := range getAddrsInfo(interfaces, &c.deviceFilter, c.logger) { ch <- prometheus.MustNewConstMetric(desc, prometheus.GaugeValue, 1, addr.device, addr.addr, addr.netmask, addr.scope) } @@ -178,10 +178,14 @@ func scope(ip net.IP) string { } // getAddrsInfo returns interface name, address, scope and netmask for all interfaces. -func getAddrsInfo(interfaces []net.Interface) []addrInfo { +func getAddrsInfo(interfaces []net.Interface, filter *deviceFilter, logger *slog.Logger) []addrInfo { var res []addrInfo for _, ifs := range interfaces { + if filter.ignored(ifs.Name) { + logger.Debug("Ignoring device", "device", ifs.Name) + continue + } addrs, _ := ifs.Addrs() for _, addr := range addrs { ip, ipNet, err := net.ParseCIDR(addr.String()) From 53186b30e387b2c692862eb4f01c0faf1a6766de Mon Sep 17 00:00:00 2001 From: Markus Boehme Date: Fri, 26 Dec 2025 21:52:17 +0100 Subject: [PATCH 064/109] Fix kernel_hung metric description Fix the description of the kernel_hung metric to actually describe the number of hung tasks, not the number of interrupts serviced. Signed-off-by: Markus Boehme --- collector/kernel_hung_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collector/kernel_hung_linux.go b/collector/kernel_hung_linux.go index cf842d0b..fe8a07ba 100644 --- a/collector/kernel_hung_linux.go +++ b/collector/kernel_hung_linux.go @@ -46,7 +46,7 @@ func NewKernelHungCollector(logger *slog.Logger) (Collector, error) { var ( taskDetectCount = prometheus.NewDesc( prometheus.BuildFQName(namespace, "kernel_hung", "task_detect_count"), - "Total number of interrupts serviced.", + "Total number of tasks that have been detected as hung since the system booted.", nil, nil, ) ) From f09a706b76e86b219e748e9ca07103196f9755d5 Mon Sep 17 00:00:00 2001 From: Willian Paixao Date: Mon, 22 Dec 2025 22:36:29 +0100 Subject: [PATCH 065/109] feat(mixin): add "All" option to cluster variable in dashboards Enable the cluster variable to support an "All" option in Grafana dashboards, allowing users to view metrics across all clusters or in environments where the cluster label may be missing. Changes: - Add includeAll with allValue=".*" to cluster variable definitions - Change all PromQL queries from exact matching (cluster="$cluster") to regex matching (cluster=~"$cluster") Affected dashboards: - Node Exporter / Nodes (Linux, Darwin, AIX) - USE Method / Node - USE Method / Cluster Signed-off-by: Willian Paixao --- docs/node-mixin/dashboards/use.libsonnet | 66 +++++++++--------- docs/node-mixin/lib/prom-mixin.libsonnet | 89 ++++++++++++------------ 2 files changed, 78 insertions(+), 77 deletions(-) diff --git a/docs/node-mixin/dashboards/use.libsonnet b/docs/node-mixin/dashboards/use.libsonnet index cfdaf416..fd98cd8d 100644 --- a/docs/node-mixin/dashboards/use.libsonnet +++ b/docs/node-mixin/dashboards/use.libsonnet @@ -112,7 +112,7 @@ local diskSpaceUtilisation = ) + (if $._config.showMultiCluster then variable.query.generalOptions.showOnDashboard.withLabelAndValue() else variable.query.generalOptions.showOnDashboard.withNothing()) + variable.query.refresh.onTime() - + variable.query.selectionOptions.withIncludeAll(false) + + variable.query.selectionOptions.withIncludeAll(true, '.*') + variable.query.withSort(asc=true), grafanaDashboards+:: { @@ -133,7 +133,7 @@ local diskSpaceUtilisation = + variable.query.withDatasourceFromVariable(datasource) + variable.query.queryTypes.withLabelValues( 'instance', - 'node_exporter_build_info{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"}' % $._config, + 'node_exporter_build_info{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"}' % $._config, ) + variable.query.refresh.onTime() + variable.query.withSort(asc=true), @@ -142,29 +142,29 @@ local diskSpaceUtilisation = grafana.util.grid.makeGrid([ row.new('CPU') + row.withPanels([ - CPUUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), - CPUSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Saturation')]), + CPUUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), + CPUSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Saturation')]), ]), row.new('Memory') + row.withPanels([ - memoryUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), - memorySaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Major page Faults')]), + memoryUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Utilisation')]), + memorySaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Major page Faults')]), ]), row.new('Network') + row.withPanels([ networkUtilisation + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), - prometheus.new('$datasource', 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), + prometheus.new('$datasource', 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), + prometheus.new('$datasource', 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), ]), networkSaturation + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), - prometheus.new('$datasource', 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), + prometheus.new('$datasource', 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), + prometheus.new('$datasource', 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), ]), ]), row.new('Disk IO') + row.withPanels([ - diskIOUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), - diskIOSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), + diskIOUtilisation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), + diskIOSaturation + tsQueryOptions.withTargets([prometheus.new('$datasource', 'instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('{{device}}')]), ]), ], panelWidth=12, panelHeight=7) + grafana.util.grid.makeGrid([ @@ -176,9 +176,9 @@ local diskSpaceUtilisation = ||| sort_desc(1 - ( - max without (mountpoint, fstype) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s="$cluster"}) + max without (mountpoint, fstype) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s=~"$cluster"}) / - max without (mountpoint, fstype) (node_filesystem_size_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s="$cluster"}) + max without (mountpoint, fstype) (node_filesystem_size_bytes{%(nodeExporterSelector)s, fstype!="", instance="$instance", %(clusterLabel)s=~"$cluster"}) ) != 0 ) ||| % $._config @@ -210,11 +210,11 @@ local diskSpaceUtilisation = '$datasource', ||| (( - instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} + instance:node_cpu_utilisation:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} * - instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} + instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} ) != 0 ) - / scalar(sum(instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + / scalar(sum(instance:node_num_cpu:sum{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), ]), @@ -223,8 +223,8 @@ local diskSpaceUtilisation = '$datasource', ||| ( - instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance:node_load1_per_cpu:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ) != 0 ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), @@ -237,8 +237,8 @@ local diskSpaceUtilisation = '$datasource', ||| ( - instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance:node_memory_utilisation:ratio{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ) != 0 ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), @@ -246,7 +246,7 @@ local diskSpaceUtilisation = memorySaturation + tsQueryOptions.withTargets([ prometheus.new( '$datasource', - 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"}' % $._config + 'instance:node_vmstat_pgmajfault:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"}' % $._config ) + prometheus.withLegendFormat('{{ instance }}'), ]), ]), @@ -255,21 +255,21 @@ local diskSpaceUtilisation = networkUtilisation + tsQueryOptions.withTargets([ prometheus.new( '$datasource', - 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Receive'), prometheus.new( '$datasource', - 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Transmit'), ]), networkSaturation + tsQueryOptions.withTargets([ prometheus.new( '$datasource', - 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Receive'), prometheus.new( '$datasource', - 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} != 0' % $._config + 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} != 0' % $._config ) + prometheus.withLegendFormat('{{ instance }} Transmit'), ]), ]), @@ -279,16 +279,16 @@ local diskSpaceUtilisation = prometheus.new( '$datasource', ||| - instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance_device:node_disk_io_time_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }} {{device}}'), ]), diskIOSaturation + tsQueryOptions.withTargets([prometheus.new( '$datasource', ||| - instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"} - / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster"})) + instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"} + / scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate%(rateInterval)s{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster"})) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }} {{device}}')]), ]), @@ -302,12 +302,12 @@ local diskSpaceUtilisation = ||| sum without (device) ( max without (fstype, mountpoint) (( - node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s="$cluster"} + node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s=~"$cluster"} - - node_filesystem_avail_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s="$cluster"} + node_filesystem_avail_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s=~"$cluster"} ) != 0) ) - / scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s="$cluster"}))) + / scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, %(fsSelector)s, %(fsMountpointSelector)s, %(clusterLabel)s=~"$cluster"}))) ||| % $._config ) + prometheus.withLegendFormat('{{ instance }}'), ]), diff --git a/docs/node-mixin/lib/prom-mixin.libsonnet b/docs/node-mixin/lib/prom-mixin.libsonnet index f18c273c..980baf5b 100644 --- a/docs/node-mixin/lib/prom-mixin.libsonnet +++ b/docs/node-mixin/lib/prom-mixin.libsonnet @@ -31,7 +31,8 @@ local tableTransformation = table.queryOptions.transformation; + variable.query.withDatasourceFromVariable(prometheusDatasourceVariable) + (if config.showMultiCluster then variable.query.generalOptions.showOnDashboard.withLabelAndValue() else variable.query.generalOptions.showOnDashboard.withNothing()) + variable.query.refresh.onTime() - + variable.query.generalOptions.withLabel('Cluster'), + + variable.query.generalOptions.withLabel('Cluster') + + variable.query.selectionOptions.withIncludeAll(true, '.*'), local clusterVariable = if platform == 'Darwin' then @@ -58,13 +59,13 @@ local tableTransformation = table.queryOptions.transformation; instanceVariablePrototype + variable.query.queryTypes.withLabelValues( 'instance', - 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster", sysname="Darwin"}' % config, + 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster", sysname="Darwin"}' % config, ) else instanceVariablePrototype + variable.query.queryTypes.withLabelValues( 'instance', - 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s="$cluster", sysname!="Darwin"}' % config, + 'node_uname_info{%(nodeExporterSelector)s, %(clusterLabel)s=~"$cluster", sysname!="Darwin"}' % config, ), local idleCPU = @@ -82,9 +83,9 @@ local tableTransformation = table.queryOptions.transformation; '$datasource', ||| ( - (1 - sum without (mode) (rate(node_cpu_seconds_total{%(nodeExporterSelector)s, mode=~"idle|iowait|steal", instance="$instance", %(clusterLabel)s="$cluster"}[$__rate_interval]))) + (1 - sum without (mode) (rate(node_cpu_seconds_total{%(nodeExporterSelector)s, mode=~"idle|iowait|steal", instance="$instance", %(clusterLabel)s=~"$cluster"}[$__rate_interval]))) / ignoring(cpu) group_left - count without (cpu, mode) (node_cpu_seconds_total{%(nodeExporterSelector)s, mode="idle", instance="$instance", %(clusterLabel)s="$cluster"}) + count without (cpu, mode) (node_cpu_seconds_total{%(nodeExporterSelector)s, mode="idle", instance="$instance", %(clusterLabel)s=~"$cluster"}) ) ||| % config, ) @@ -101,10 +102,10 @@ local tableTransformation = table.queryOptions.transformation; + tsCustom.withShowPoints('never') + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'node_load1{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('1m load average'), - prometheus.new('$datasource', 'node_load5{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('5m load average'), - prometheus.new('$datasource', 'node_load15{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('15m load average'), - prometheus.new('$datasource', 'count(node_cpu_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", mode="idle"})' % config) + prometheus.withLegendFormat('logical cores'), + prometheus.new('$datasource', 'node_load1{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('1m load average'), + prometheus.new('$datasource', 'node_load5{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('5m load average'), + prometheus.new('$datasource', 'node_load15{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('15m load average'), + prometheus.new('$datasource', 'count(node_cpu_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", mode="idle"})' % config) + prometheus.withLegendFormat('logical cores'), ]), local memoryGraphPanelPrototype = @@ -125,34 +126,34 @@ local tableTransformation = table.queryOptions.transformation; '$datasource', ||| ( - node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - - node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - - node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - - node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config, ) + prometheus.withLegendFormat('memory used'), - prometheus.new('$datasource', 'node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('memory buffers'), - prometheus.new('$datasource', 'node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('memory cached'), - prometheus.new('$datasource', 'node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('memory free'), + prometheus.new('$datasource', 'node_memory_Buffers_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('memory buffers'), + prometheus.new('$datasource', 'node_memory_Cached_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('memory cached'), + prometheus.new('$datasource', 'node_memory_MemFree_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('memory free'), ]) else if platform == 'Darwin' then // not useful to stack memoryGraphPanelPrototype + tsCustom.stacking.withMode('none') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), + prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), prometheus.new( '$datasource', ||| ( - node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} - - node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + - node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + - node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - + node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} + + node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} + + node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config ) + prometheus.withLegendFormat( @@ -162,28 +163,28 @@ local tableTransformation = table.queryOptions.transformation; '$datasource', ||| ( - node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} - - node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - + node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config ) + prometheus.withLegendFormat( 'App Memory' ), - prometheus.new('$datasource', 'node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Wired Memory'), - prometheus.new('$datasource', 'node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Compressed'), + prometheus.new('$datasource', 'node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Wired Memory'), + prometheus.new('$datasource', 'node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Compressed'), ]) else if platform == 'AIX' then memoryGraphPanelPrototype + tsCustom.stacking.withMode('none') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), + prometheus.new('$datasource', 'node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}' % config) + prometheus.withLegendFormat('Physical Memory'), prometheus.new( '$datasource', ||| ( - node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} - - node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"} + node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} - + node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} ) ||| % config ) + prometheus.withLegendFormat('Memory Used'), @@ -212,8 +213,8 @@ local tableTransformation = table.queryOptions.transformation; ||| 100 - ( - avg(node_memory_MemAvailable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) / - avg(node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_MemAvailable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) / + avg(node_memory_MemTotal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) * 100 ) ||| % config, @@ -228,12 +229,12 @@ local tableTransformation = table.queryOptions.transformation; ||| ( ( - avg(node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) - - avg(node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + - avg(node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + - avg(node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_internal_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) - + avg(node_memory_purgeable_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) + + avg(node_memory_wired_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) + + avg(node_memory_compressed_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) ) / - avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) ) * 100 @@ -249,8 +250,8 @@ local tableTransformation = table.queryOptions.transformation; ||| 100 - ( - avg(node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) / - avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster"}) + avg(node_memory_available_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) / + avg(node_memory_total_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"}) * 100 ) ||| % config @@ -267,13 +268,13 @@ local tableTransformation = table.queryOptions.transformation; + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ // TODO: Does it make sense to have those three in the same panel? - prometheus.new('$datasource', 'rate(node_disk_read_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.new('$datasource', 'rate(node_disk_read_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.withLegendFormat('{{device}} read') + prometheus.withIntervalFactor(1), - prometheus.new('$datasource', 'rate(node_disk_written_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.new('$datasource', 'rate(node_disk_written_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.withLegendFormat('{{device}} written') + prometheus.withIntervalFactor(1), - prometheus.new('$datasource', 'rate(node_disk_io_time_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.new('$datasource', 'rate(node_disk_io_time_seconds_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(diskDeviceSelector)s}[$__rate_interval])' % config) + prometheus.withLegendFormat('{{device}} io time') + prometheus.withIntervalFactor(1), ]) @@ -303,7 +304,7 @@ local tableTransformation = table.queryOptions.transformation; prometheus.new( '$datasource', ||| - max by (mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) + max by (mountpoint) (node_filesystem_size_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) ||| % config ) + prometheus.withLegendFormat('') @@ -312,7 +313,7 @@ local tableTransformation = table.queryOptions.transformation; prometheus.new( '$datasource', ||| - max by (mountpoint) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) + max by (mountpoint) (node_filesystem_avail_bytes{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", %(fsSelector)s, %(fsMountpointSelector)s}) ||| % config ) + prometheus.withLegendFormat('') @@ -431,7 +432,7 @@ local tableTransformation = table.queryOptions.transformation; + tsCustom.withShowPoints('never') + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'rate(node_network_receive_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.new('$datasource', 'rate(node_network_receive_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.withLegendFormat('{{device}}') + prometheus.withIntervalFactor(1), ]), @@ -445,7 +446,7 @@ local tableTransformation = table.queryOptions.transformation; + tsCustom.withFillOpacity(0) + tsOptions.tooltip.withMode('multi') + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'rate(node_network_transmit_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s="$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.new('$datasource', 'rate(node_network_transmit_bytes_total{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster", device!="lo"}[$__rate_interval]) * 8' % config) + prometheus.withLegendFormat('{{device}}') + prometheus.withIntervalFactor(1), ]), From f2409bd4657ee6da330059dbf37e56d1ea60982f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:57:46 +0100 Subject: [PATCH 066/109] build(deps): bump vmactions/freebsd-vm from 1.2.4 to 1.2.8 (#3486) Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.2.4 to 1.2.8. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](https://github.com/vmactions/freebsd-vm/compare/487ce35b96fae3e60d45b521735f5aa436ecfade...0cd283ca698d48b59cda444a9948f48a30709627) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.2.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 667ed043..99575ddf 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/freebsd-vm@487ce35b96fae3e60d45b521735f5aa436ecfade # v1.2.4 + uses: vmactions/freebsd-vm@0cd283ca698d48b59cda444a9948f48a30709627 # v1.2.8 with: release: "14.3" copyback: false From f903be5638d4eea1c6b13477e6b0f01ba6942bb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:58:05 +0100 Subject: [PATCH 067/109] build(deps): bump vmactions/netbsd-vm from 1.2.0 to 1.2.3 (#3487) Bumps [vmactions/netbsd-vm](https://github.com/vmactions/netbsd-vm) from 1.2.0 to 1.2.3. - [Release notes](https://github.com/vmactions/netbsd-vm/releases) - [Commits](https://github.com/vmactions/netbsd-vm/compare/7aea50f9eb16df034be5d71eb81fea9804505c28...b24ed5f7a605362ab1226e73df291c8b01990c85) --- updated-dependencies: - dependency-name: vmactions/netbsd-vm dependency-version: 1.2.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 99575ddf..48a6f0e4 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -122,7 +122,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/netbsd-vm@7aea50f9eb16df034be5d71eb81fea9804505c28 # v1.2.0 + uses: vmactions/netbsd-vm@b24ed5f7a605362ab1226e73df291c8b01990c85 # v1.2.3 with: copyback: false envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' From fbbe0ec382ff6afe999c9ca42429a451b499ae53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:58:18 +0100 Subject: [PATCH 068/109] build(deps): bump vmactions/dragonflybsd-vm from 1.1.1 to 1.1.4 (#3488) Bumps [vmactions/dragonflybsd-vm](https://github.com/vmactions/dragonflybsd-vm) from 1.1.1 to 1.1.4. - [Release notes](https://github.com/vmactions/dragonflybsd-vm/releases) - [Commits](https://github.com/vmactions/dragonflybsd-vm/compare/ff1f01c32b9e82f2ba388d0ff270442bcd6ceddc...4ffb90652b45abc8156f89ede453c85f7ea257bb) --- updated-dependencies: - dependency-name: vmactions/dragonflybsd-vm dependency-version: 1.1.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 48a6f0e4..e24c22fa 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -169,7 +169,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/dragonflybsd-vm@ff1f01c32b9e82f2ba388d0ff270442bcd6ceddc # v1.1.1 + uses: vmactions/dragonflybsd-vm@4ffb90652b45abc8156f89ede453c85f7ea257bb # v1.1.4 with: copyback: false envs: 'GO_VERSION_DRAGONFLY' From 627fc9333987a27afc1e1d24dcc5a831f1337da6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:59:39 +0100 Subject: [PATCH 069/109] build(deps): bump github.com/godbus/dbus/v5 from 5.1.0 to 5.2.0 (#3495) Bumps [github.com/godbus/dbus/v5](https://github.com/godbus/dbus) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/godbus/dbus/releases) - [Commits](https://github.com/godbus/dbus/compare/v5.1.0...v5.2.0) --- updated-dependencies: - dependency-name: github.com/godbus/dbus/v5 dependency-version: 5.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3aef9ce1..b2e5d652 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.6.0 github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 github.com/ema/qdisc v1.0.0 - github.com/godbus/dbus/v5 v5.1.0 + github.com/godbus/dbus/v5 v5.2.0 github.com/hashicorp/go-envparse v0.1.0 github.com/hodgesds/perf-utils v0.7.0 github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 diff --git a/go.sum b/go.sum index 1c0d0dad..d9c56b2d 100644 --- a/go.sum +++ b/go.sum @@ -25,8 +25,8 @@ github.com/dennwc/ioctl v1.0.0 h1:DsWAAjIxRqNcLn9x6mwfuf2pet3iB7aK90K4tF16rLg= github.com/dennwc/ioctl v1.0.0/go.mod h1:ellh2YB5ldny99SBU/VX7Nq0xiZbHphf1DrtHxxjMk0= github.com/ema/qdisc v1.0.0 h1:EHLG08FVRbWLg8uRICa3xzC9Zm0m7HyMHfXobWFnXYg= github.com/ema/qdisc v1.0.0/go.mod h1:FhIc0fLYi7f+lK5maMsesDqwYojIOh3VfRs8EVd5YJQ= -github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= -github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.2.0 h1:3WexO+U+yg9T70v9FdHr9kCxYlazaAXUhx2VMkbfax8= +github.com/godbus/dbus/v5 v5.2.0/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/hashicorp/go-envparse v0.1.0 h1:bE++6bhIsNCPLvgDZkYqo3nA+/PFI51pkrHdmPSDFPY= From 880c3e43afc7babaf1b1760b166dc6f487c51432 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 09:59:54 +0100 Subject: [PATCH 070/109] build(deps): bump github.com/safchain/ethtool from 0.6.2 to 0.7.0 (#3493) Bumps [github.com/safchain/ethtool](https://github.com/safchain/ethtool) from 0.6.2 to 0.7.0. - [Release notes](https://github.com/safchain/ethtool/releases) - [Commits](https://github.com/safchain/ethtool/compare/v0.6.2...v0.7.0) --- updated-dependencies: - dependency-name: github.com/safchain/ethtool dependency-version: 0.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b2e5d652..ffc0465f 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/prometheus/common v0.67.2 github.com/prometheus/exporter-toolkit v0.15.0 github.com/prometheus/procfs v0.19.2 - github.com/safchain/ethtool v0.6.2 + github.com/safchain/ethtool v0.7.0 golang.org/x/exp v0.0.0-20250911091902-df9299821621 golang.org/x/sys v0.38.0 howett.net/plist v1.0.1 diff --git a/go.sum b/go.sum index d9c56b2d..ba45965b 100644 --- a/go.sum +++ b/go.sum @@ -88,8 +88,8 @@ github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4 github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/safchain/ethtool v0.6.2 h1:O3ZPFAKEUEfbtE6J/feEe2Ft7dIJ2Sy8t4SdMRiIMHY= -github.com/safchain/ethtool v0.6.2/go.mod h1:VS7cn+bP3Px3rIq55xImBiZGHVLNyBh5dqG6dDQy8+I= +github.com/safchain/ethtool v0.7.0 h1:rlJzfDetsVvT61uz8x1YIcFn12akMfuPulHtZjtb7Is= +github.com/safchain/ethtool v0.7.0/go.mod h1:MenQKEjXdfkjD3mp2QdCk8B/hwvkrlOTm/FD4gTpFxQ= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973 h1:GfSdC6wKfTGcgCS7BtzF5694Amne1pGCSTY252WhlEY= github.com/siebenmann/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:G81aIFAMS9ECrwBYR9YxhlPjWgrItd+Kje78O6+uqm8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From c54d81a4ecc7f34f03c26966abfc95cfb7a4f9a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:00:28 +0100 Subject: [PATCH 071/109] build(deps): bump vmactions/openbsd-vm from 1.2.3 to 1.2.4 (#3490) Bumps [vmactions/openbsd-vm](https://github.com/vmactions/openbsd-vm) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/vmactions/openbsd-vm/releases) - [Commits](https://github.com/vmactions/openbsd-vm/compare/a254d784d6fad46e22ef73c6ecbb1dc310b04777...7fd5a3e251db9d8bdff2f34aae11a43b6be5ad60) --- updated-dependencies: - dependency-name: vmactions/openbsd-vm dependency-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index e24c22fa..59b24632 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -76,7 +76,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/openbsd-vm@a254d784d6fad46e22ef73c6ecbb1dc310b04777 # v1.2.3 + uses: vmactions/openbsd-vm@7fd5a3e251db9d8bdff2f34aae11a43b6be5ad60 # v1.2.4 with: copyback: false envs: 'GO_VERSION_OPENBSD GNU_TAR_VERSION' From 48c5b1e08502bbdc1e219302f386d278d86a7650 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:00:43 +0100 Subject: [PATCH 072/109] build(deps): bump github.com/mdlayher/wifi from 0.7.0 to 0.7.1 (#3491) Bumps [github.com/mdlayher/wifi](https://github.com/mdlayher/wifi) from 0.7.0 to 0.7.1. - [Release notes](https://github.com/mdlayher/wifi/releases) - [Commits](https://github.com/mdlayher/wifi/compare/v0.7.0...v0.7.1) --- updated-dependencies: - dependency-name: github.com/mdlayher/wifi dependency-version: 0.7.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ffc0465f..0e3eb904 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.5.0 github.com/mdlayher/netlink v1.8.0 - github.com/mdlayher/wifi v0.7.0 + github.com/mdlayher/wifi v0.7.1 github.com/opencontainers/selinux v1.13.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 diff --git a/go.sum b/go.sum index ba45965b..68916365 100644 --- a/go.sum +++ b/go.sum @@ -62,8 +62,8 @@ github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= -github.com/mdlayher/wifi v0.7.0 h1:0BvMO+gLu06pvOpINs+wVY9KgwBOyEm5TUpyLmy6yF8= -github.com/mdlayher/wifi v0.7.0/go.mod h1:Px0mNl8jXl5uiC2FWgoD6AAGWVhq19sMmppboqR59Gg= +github.com/mdlayher/wifi v0.7.1 h1:YmnDtiVC53nird8qKEUCkVzkhE+jM3rtJATUt+KjhWA= +github.com/mdlayher/wifi v0.7.1/go.mod h1:L4W/35f78XpeM6fuf/BvLx3NjfM9B/l3xBfnYNnD6KY= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= From ecb200e7163da0e3ce8b9698200854f6300a1050 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Thu, 22 Jan 2026 16:37:59 +0100 Subject: [PATCH 073/109] Bump freebsd action (#3520) Update `vmactions/freebsd-vm` and update to FreeBSD 15.0. Signed-off-by: Ben Kochie --- .github/workflows/bsd.yml | 4 ++-- collector/fixtures/e2e-output-freebsd.txt | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 59b24632..bad2bcbd 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -28,9 +28,9 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/freebsd-vm@0cd283ca698d48b59cda444a9948f48a30709627 # v1.2.8 + uses: vmactions/freebsd-vm@a9c0dcaf5ed572d89ea1a59fe2217d3b3da4fd23 # v1.3.7 with: - release: "14.3" + release: "15.0" copyback: false envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' usesh: true diff --git a/collector/fixtures/e2e-output-freebsd.txt b/collector/fixtures/e2e-output-freebsd.txt index fad76e6f..84239652 100644 --- a/collector/fixtures/e2e-output-freebsd.txt +++ b/collector/fixtures/e2e-output-freebsd.txt @@ -261,6 +261,18 @@ node_xfrm_out_state_proto_error_packets_total 4542 # HELP node_xfrm_out_state_seq_error_packets_total Sequence error i.e. Sequence number overflow # TYPE node_xfrm_out_state_seq_error_packets_total counter node_xfrm_out_state_seq_error_packets_total 543 +# HELP node_zfs_arcstats_c_min_bytes ZFS ARC minimum size +# TYPE node_zfs_arcstats_c_min_bytes gauge +node_zfs_arcstats_c_min_bytes 1.99743232e+08 +# HELP node_zfs_arcstats_mfu_ghost_size ZFS ARC MFU ghost size +# TYPE node_zfs_arcstats_mfu_ghost_size gauge +node_zfs_arcstats_mfu_ghost_size 0 +# HELP node_zfs_arcstats_mru_ghost_hits_total ZFS ARC MRU ghost hits +# TYPE node_zfs_arcstats_mru_ghost_hits_total counter +node_zfs_arcstats_mru_ghost_hits_total 0 +# HELP node_zfs_arcstats_pm_bytes ZFS ARC meta MRU target frac +# TYPE node_zfs_arcstats_pm_bytes gauge +node_zfs_arcstats_pm_bytes 2.147483648e+09 # HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler. # TYPE promhttp_metric_handler_errors_total counter promhttp_metric_handler_errors_total{cause="encoding"} 0 From acc08379f23841cebf0a3b5c6dda5a6861ac1e8b Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Thu, 22 Jan 2026 22:24:38 +0100 Subject: [PATCH 074/109] Update common Prometheus files (#3521) Signed-off-by: prombot --- .github/workflows/container_description.yml | 4 +- .github/workflows/golangci-lint.yml | 6 +- Makefile.common | 139 +++++++++++++++++--- 3 files changed, 129 insertions(+), 20 deletions(-) diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index 7de8bb8d..7b46e953 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Set docker hub repo name @@ -42,7 +42,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Set quay.io org name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 75f886d5..ae5fdc80 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -24,11 +24,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Install Go - uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0 + uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 with: go-version: 1.25.x - name: Install snmp_exporter/generator dependencies @@ -38,7 +38,7 @@ jobs: id: golangci-lint-version run: echo "version=$(make print-golangci-lint-version)" >> $GITHUB_OUTPUT - name: Lint - uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 # v8.0.0 + uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0 with: args: --verbose version: ${{ steps.golangci-lint-version.outputs.version }} diff --git a/Makefile.common b/Makefile.common index 143bf03f..b8c9b384 100644 --- a/Makefile.common +++ b/Makefile.common @@ -1,4 +1,4 @@ -# Copyright 2018 The Prometheus Authors +# Copyright The Prometheus Authors # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -61,7 +61,7 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_ SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v2.6.0 +GOLANGCI_LINT_VERSION ?= v2.7.2 GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. @@ -82,11 +82,32 @@ endif PREFIX ?= $(shell pwd) BIN_DIR ?= $(shell pwd) DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) -DOCKERFILE_PATH ?= ./Dockerfile DOCKERBUILD_CONTEXT ?= ./ DOCKER_REPO ?= prom +# Check if deprecated DOCKERFILE_PATH is set +ifdef DOCKERFILE_PATH +$(error DOCKERFILE_PATH is deprecated. Use DOCKERFILE_VARIANTS ?= $(DOCKERFILE_PATH) in the Makefile) +endif + DOCKER_ARCHS ?= amd64 +DOCKERFILE_VARIANTS ?= Dockerfile $(wildcard Dockerfile.*) + +# Function to extract variant from Dockerfile label. +# Returns the variant name from io.prometheus.image.variant label, or "default" if not found. +define dockerfile_variant +$(strip $(or $(shell sed -n 's/.*io\.prometheus\.image\.variant="\([^"]*\)".*/\1/p' $(1)),default)) +endef + +# Check for duplicate variant names (including default for Dockerfiles without labels). +DOCKERFILE_VARIANT_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df))) +DOCKERFILE_VARIANT_NAMES_SORTED := $(sort $(DOCKERFILE_VARIANT_NAMES)) +ifneq ($(words $(DOCKERFILE_VARIANT_NAMES)),$(words $(DOCKERFILE_VARIANT_NAMES_SORTED))) +$(error Duplicate variant names found. Each Dockerfile must have a unique io.prometheus.image.variant label, and only one can be without a label (default)) +endif + +# Build variant:dockerfile pairs for shell iteration. +DOCKERFILE_VARIANTS_WITH_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df)):$(df)) BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS)) PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS)) @@ -112,7 +133,7 @@ common-all: precheck style check_license lint yamllint unused build test .PHONY: common-style common-style: @echo ">> checking code style" - @fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \ + @fmtRes=$$($(GOFMT) -d $$(git ls-files '*.go' ':!:vendor/*' || find . -path ./vendor -prune -o -name '*.go' -print)); \ if [ -n "$${fmtRes}" ]; then \ echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \ echo "Please ensure you are using $$($(GO) version) for formatting code."; \ @@ -122,13 +143,19 @@ common-style: .PHONY: common-check_license common-check_license: @echo ">> checking license header" - @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \ + @licRes=$$(for file in $$(git ls-files '*.go' ':!:vendor/*' || find . -path ./vendor -prune -o -type f -iname '*.go' -print) ; do \ awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \ done); \ if [ -n "$${licRes}" ]; then \ echo "license header checking failed:"; echo "$${licRes}"; \ exit 1; \ fi + @echo ">> checking for copyright years 2026 or later" + @futureYearRes=$$(git grep -E 'Copyright (202[6-9]|20[3-9][0-9])' -- '*.go' ':!:vendor/*' || true); \ + if [ -n "$${futureYearRes}" ]; then \ + echo "Files with copyright year 2026 or later found (should use 'Copyright The Prometheus Authors'):"; echo "$${futureYearRes}"; \ + exit 1; \ + fi .PHONY: common-deps common-deps: @@ -220,28 +247,110 @@ common-docker-repo-name: .PHONY: common-docker $(BUILD_DOCKER_ARCHS) common-docker: $(BUILD_DOCKER_ARCHS) $(BUILD_DOCKER_ARCHS): common-docker-%: - docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" \ - -f $(DOCKERFILE_PATH) \ - --build-arg ARCH="$*" \ - --build-arg OS="linux" \ - $(DOCKERBUILD_CONTEXT) + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + distroless_arch="$*"; \ + if [ "$*" = "armv7" ]; then \ + distroless_arch="arm"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Building default variant ($$variant_name) for linux-$* using $$dockerfile"; \ + docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" \ + -f $$dockerfile \ + --build-arg ARCH="$*" \ + --build-arg OS="linux" \ + --build-arg DISTROLESS_ARCH="$$distroless_arch" \ + $(DOCKERBUILD_CONTEXT); \ + if [ "$$variant_name" != "default" ]; then \ + echo "Tagging default variant with $$variant_name suffix"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" \ + "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + fi; \ + else \ + echo "Building $$variant_name variant for linux-$* using $$dockerfile"; \ + docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" \ + -f $$dockerfile \ + --build-arg ARCH="$*" \ + --build-arg OS="linux" \ + --build-arg DISTROLESS_ARCH="$$distroless_arch" \ + $(DOCKERBUILD_CONTEXT); \ + fi; \ + done .PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) common-docker-publish: $(PUBLISH_DOCKER_ARCHS) $(PUBLISH_DOCKER_ARCHS): common-docker-publish-%: - docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Pushing $$variant_name variant for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Pushing default variant ($$variant_name) for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)"; \ + fi; \ + if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Pushing $$variant_name variant version tags for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Pushing default variant version tag for linux-$*"; \ + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"; \ + fi; \ + fi; \ + done DOCKER_MAJOR_VERSION_TAG = $(firstword $(subst ., ,$(shell cat VERSION))) .PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS) common-docker-tag-latest: $(TAG_DOCKER_ARCHS) $(TAG_DOCKER_ARCHS): common-docker-tag-latest-%: - docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest" - docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)" + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Tagging $$variant_name variant for linux-$* as latest"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest-$$variant_name"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Tagging default variant ($$variant_name) for linux-$* as latest"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest"; \ + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"; \ + fi; \ + done .PHONY: common-docker-manifest common-docker-manifest: - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)) - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" + @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ + dockerfile=$${variant#*:}; \ + variant_name=$${variant%%:*}; \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Creating manifest for $$variant_name variant"; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name); \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Creating default variant ($$variant_name) manifest"; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)); \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)"; \ + fi; \ + if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \ + if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ + echo "Creating manifest for $$variant_name variant version tag"; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name); \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + fi; \ + if [ "$$dockerfile" = "Dockerfile" ]; then \ + echo "Creating default variant version tag manifest"; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):v$(DOCKER_MAJOR_VERSION_TAG)); \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)"; \ + fi; \ + fi; \ + done .PHONY: promu promu: $(PROMU) From 6a3051acd634b013e2c3b1220f23e4ef4ad4ac8e Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Fri, 23 Jan 2026 08:26:50 +0100 Subject: [PATCH 075/109] Update Go modules (#3519) * Update deps for selinux library, they don't keep things up-to-date. * Update cpu collector to use standard library `maps`. Signed-off-by: Ben Kochie --- collector/cpu_linux.go | 5 ++--- go.mod | 9 ++++----- go.sum | 18 ++++++++---------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/collector/cpu_linux.go b/collector/cpu_linux.go index 1fef2890..30fe305a 100644 --- a/collector/cpu_linux.go +++ b/collector/cpu_linux.go @@ -19,6 +19,7 @@ import ( "errors" "fmt" "log/slog" + "maps" "os" "path/filepath" "regexp" @@ -26,8 +27,6 @@ import ( "strconv" "sync" - "golang.org/x/exp/maps" - "github.com/alecthomas/kingpin/v2" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/procfs" @@ -488,7 +487,7 @@ func (c *cpuCollector) updateCPUStats(newStats map[int64]procfs.CPUStat) { // Remove offline CPUs. if len(newStats) != len(c.cpuStats) { - onlineCPUIds := maps.Keys(newStats) + onlineCPUIds := slices.Collect(maps.Keys(newStats)) maps.DeleteFunc(c.cpuStats, func(key int64, item procfs.CPUStat) bool { return !slices.Contains(onlineCPUIds, key) }) diff --git a/go.mod b/go.mod index 0e3eb904..72621624 100644 --- a/go.mod +++ b/go.mod @@ -27,17 +27,16 @@ require ( github.com/prometheus/exporter-toolkit v0.15.0 github.com/prometheus/procfs v0.19.2 github.com/safchain/ethtool v0.7.0 - golang.org/x/exp v0.0.0-20250911091902-df9299821621 - golang.org/x/sys v0.38.0 + golang.org/x/sys v0.40.0 howett.net/plist v1.0.1 ) require ( - cyphar.com/go-pathrs v0.2.1 // indirect + cyphar.com/go-pathrs v0.2.2 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cyphar/filepath-securejoin v0.6.0 // indirect + github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/dennwc/ioctl v1.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect @@ -55,7 +54,7 @@ require ( golang.org/x/crypto v0.45.0 // indirect golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.18.0 // indirect + golang.org/x/sync v0.19.0 // indirect golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/go.sum b/go.sum index 68916365..e9d987a5 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cyphar.com/go-pathrs v0.2.1 h1:9nx1vOgwVvX1mNBWDu93+vaceedpbsDqo+XuBGL40b8= -cyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= +cyphar.com/go-pathrs v0.2.2 h1:y9w7hxbkr3zEL78Fjzeg4HEhs2xNy+fbwHiHGJJY2Xo= +cyphar.com/go-pathrs v0.2.2/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= @@ -14,8 +14,8 @@ github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= -github.com/cyphar/filepath-securejoin v0.6.0 h1:BtGB77njd6SVO6VztOHfPxKitJvd/VPT+OFBFMOi1Is= -github.com/cyphar/filepath-securejoin v0.6.0/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= +github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= +github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -115,18 +115,16 @@ go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= -golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU= -golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= From b167b7de0cf389d265b440f1b154e85a59d70fad Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Fri, 30 Jan 2026 14:31:48 +0100 Subject: [PATCH 076/109] Update common Prometheus files (#3529) Signed-off-by: prombot --- .yamllint | 1 + 1 file changed, 1 insertion(+) diff --git a/.yamllint b/.yamllint index 8d09c375..b329f464 100644 --- a/.yamllint +++ b/.yamllint @@ -2,6 +2,7 @@ extends: default ignore: | **/node_modules + web/api/v1/testdata/openapi_*_golden.yaml rules: braces: From c8695b426aeb823ea47b75ba6dba8b2e15901bc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:39:38 +0100 Subject: [PATCH 077/109] build(deps): bump github.com/prometheus/common from 0.67.2 to 0.67.5 (#3532) Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.67.2 to 0.67.5. - [Release notes](https://github.com/prometheus/common/releases) - [Changelog](https://github.com/prometheus/common/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/common/compare/v0.67.2...v0.67.5) --- updated-dependencies: - dependency-name: github.com/prometheus/common dependency-version: 0.67.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 ++++++++------ go.sum | 28 ++++++++++++++++------------ 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index 72621624..7813bc22 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/prometheus/common v0.67.2 + github.com/prometheus/common v0.67.5 github.com/prometheus/exporter-toolkit v0.15.0 github.com/prometheus/procfs v0.19.2 github.com/safchain/ethtool v0.7.0 @@ -38,7 +38,9 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cyphar/filepath-securejoin v0.6.1 // indirect github.com/dennwc/ioctl v1.0.0 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/google/go-cmp v0.7.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mdlayher/genetlink v1.3.2 // indirect @@ -51,11 +53,11 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.45.0 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/oauth2 v0.32.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/oauth2 v0.34.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/text v0.32.0 // indirect golang.org/x/time v0.13.0 // indirect - google.golang.org/protobuf v1.36.10 // indirect + google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/go.sum b/go.sum index e9d987a5..623af9dc 100644 --- a/go.sum +++ b/go.sum @@ -27,8 +27,12 @@ github.com/ema/qdisc v1.0.0 h1:EHLG08FVRbWLg8uRICa3xzC9Zm0m7HyMHfXobWFnXYg= github.com/ema/qdisc v1.0.0/go.mod h1:FhIc0fLYi7f+lK5maMsesDqwYojIOh3VfRs8EVd5YJQ= github.com/godbus/dbus/v5 v5.2.0 h1:3WexO+U+yg9T70v9FdHr9kCxYlazaAXUhx2VMkbfax8= github.com/godbus/dbus/v5 v5.2.0/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-envparse v0.1.0 h1:bE++6bhIsNCPLvgDZkYqo3nA+/PFI51pkrHdmPSDFPY= github.com/hashicorp/go-envparse v0.1.0/go.mod h1:OHheN1GoygLlAkTlXLXvAdnXdZxy8JUweQ1rAXx1xnc= github.com/hodgesds/perf-utils v0.7.0 h1:7KlHGMuig4FRH5fNw68PV6xLmgTe7jKs9hgAcEAbioU= @@ -80,8 +84,8 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.67.2 h1:PcBAckGFTIHt2+L3I33uNRTlKTplNzFctXcWhPyAEN8= -github.com/prometheus/common v0.67.2/go.mod h1:63W3KZb1JOKgcjlIr64WW/LvFGAqKPj0atm+knVGEko= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= @@ -113,24 +117,24 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= -golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= +golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= From 788aed134e53fab0a360dc6402c675c2cbb8cbb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:40:05 +0100 Subject: [PATCH 078/109] build(deps): bump vmactions/freebsd-vm from 1.3.7 to 1.3.8 (#3538) Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.3.7 to 1.3.8. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](https://github.com/vmactions/freebsd-vm/compare/a9c0dcaf5ed572d89ea1a59fe2217d3b3da4fd23...ba6bedee4a4884da2b782a41a64329a1c8e42ffb) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.3.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index bad2bcbd..65561ff2 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/freebsd-vm@a9c0dcaf5ed572d89ea1a59fe2217d3b3da4fd23 # v1.3.7 + uses: vmactions/freebsd-vm@ba6bedee4a4884da2b782a41a64329a1c8e42ffb # v1.3.8 with: release: "15.0" copyback: false From 8e50d13e3d4e4265a629f5a8147910b4675ed465 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:40:17 +0100 Subject: [PATCH 079/109] build(deps): bump vmactions/dragonflybsd-vm from 1.1.4 to 1.2.2 (#3536) Bumps [vmactions/dragonflybsd-vm](https://github.com/vmactions/dragonflybsd-vm) from 1.1.4 to 1.2.2. - [Release notes](https://github.com/vmactions/dragonflybsd-vm/releases) - [Commits](https://github.com/vmactions/dragonflybsd-vm/compare/4ffb90652b45abc8156f89ede453c85f7ea257bb...00c5014f559e3d4dc2aca8c69d3d7e550db8bc36) --- updated-dependencies: - dependency-name: vmactions/dragonflybsd-vm dependency-version: 1.2.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 65561ff2..18102029 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -169,7 +169,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/dragonflybsd-vm@4ffb90652b45abc8156f89ede453c85f7ea257bb # v1.1.4 + uses: vmactions/dragonflybsd-vm@00c5014f559e3d4dc2aca8c69d3d7e550db8bc36 # v1.2.2 with: copyback: false envs: 'GO_VERSION_DRAGONFLY' From b2dcdfb26cfbe5bef22efb0451bb7137e7ec8d60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:40:46 +0100 Subject: [PATCH 080/109] build(deps): bump vmactions/solaris-vm from 1.1.5 to 1.2.7 (#3535) Bumps [vmactions/solaris-vm](https://github.com/vmactions/solaris-vm) from 1.1.5 to 1.2.7. - [Release notes](https://github.com/vmactions/solaris-vm/releases) - [Commits](https://github.com/vmactions/solaris-vm/compare/58cbd70c6e051860f9b8f65908cc582938fbbdba...37d40b6627e80434541454b42841caa4cc77d0cf) --- updated-dependencies: - dependency-name: vmactions/solaris-vm dependency-version: 1.2.7 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 18102029..c2ed50e4 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -219,7 +219,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: test-e2e - uses: vmactions/solaris-vm@58cbd70c6e051860f9b8f65908cc582938fbbdba # v1.1.5 + uses: vmactions/solaris-vm@37d40b6627e80434541454b42841caa4cc77d0cf # v1.2.7 with: copyback: false envs: 'GO_VERSION_SOLARIS' From 31af41aa69553c71b6619fbe6a0cbd3d18c9c67d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:41:53 +0100 Subject: [PATCH 081/109] build(deps): bump actions/setup-go from 6.1.0 to 6.2.0 (#3539) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/4dc6199c7b1a012772edbd06daecab0f50c9053c...7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index ae5fdc80..16467b89 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - name: Install Go - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: go-version: 1.25.x - name: Install snmp_exporter/generator dependencies From 368a4794d88efc3fc0c0811ebedcc2b517efbd5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:42:28 +0100 Subject: [PATCH 082/109] build(deps): bump github.com/coreos/go-systemd/v22 from 22.6.0 to 22.7.0 (#3533) Bumps [github.com/coreos/go-systemd/v22](https://github.com/coreos/go-systemd) from 22.6.0 to 22.7.0. - [Release notes](https://github.com/coreos/go-systemd/releases) - [Commits](https://github.com/coreos/go-systemd/compare/v22.6.0...v22.7.0) --- updated-dependencies: - dependency-name: github.com/coreos/go-systemd/v22 dependency-version: 22.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7813bc22..5ad7bd14 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 github.com/beevik/ntp v1.5.0 - github.com/coreos/go-systemd/v22 v22.6.0 + github.com/coreos/go-systemd/v22 v22.7.0 github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 github.com/ema/qdisc v1.0.0 github.com/godbus/dbus/v5 v5.2.0 diff --git a/go.sum b/go.sum index 623af9dc..6951ee25 100644 --- a/go.sum +++ b/go.sum @@ -12,8 +12,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= -github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo= -github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From aff1d10c4b5088e0b30f1e0975cce26851971483 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:49:36 +0100 Subject: [PATCH 083/109] build(deps): bump actions/checkout from 5.0.0 to 6.0.2 (#3537) Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...de0fac2e4500dabe0009e67214ff5f5447ce83dd) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 12 ++++++------ .github/workflows/container_description.yml | 4 ++-- .github/workflows/golangci-lint.yml | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index c2ed50e4..4b2b5c31 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e uses: vmactions/freebsd-vm@ba6bedee4a4884da2b782a41a64329a1c8e42ffb # v1.3.8 with: @@ -74,7 +74,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e uses: vmactions/openbsd-vm@7fd5a3e251db9d8bdff2f34aae11a43b6be5ad60 # v1.2.4 with: @@ -120,7 +120,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e uses: vmactions/netbsd-vm@b24ed5f7a605362ab1226e73df291c8b01990c85 # v1.2.3 with: @@ -167,7 +167,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e uses: vmactions/dragonflybsd-vm@00c5014f559e3d4dc2aca8c69d3d7e550db8bc36 # v1.2.2 with: @@ -217,7 +217,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e uses: vmactions/solaris-vm@37d40b6627e80434541454b42841caa4cc77d0cf # v1.2.7 with: @@ -275,7 +275,7 @@ jobs: runs-on: macos-latest steps: - name: Checkout the repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Install dependencies run: | brew install \ diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index 7b46e953..d7b879f9 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set docker hub repo name @@ -42,7 +42,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set quay.io org name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 16467b89..db74a38c 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install Go From f15c1e84f1ab382597d73b0737069cba72f5fd73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:56:33 +0100 Subject: [PATCH 084/109] build(deps): bump github.com/mdlayher/wifi from 0.7.1 to 0.7.2 (#3534) Bumps [github.com/mdlayher/wifi](https://github.com/mdlayher/wifi) from 0.7.1 to 0.7.2. - [Release notes](https://github.com/mdlayher/wifi/releases) - [Commits](https://github.com/mdlayher/wifi/compare/v0.7.1...v0.7.2) --- updated-dependencies: - dependency-name: github.com/mdlayher/wifi dependency-version: 0.7.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5ad7bd14..e8731a96 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.5.0 github.com/mdlayher/netlink v1.8.0 - github.com/mdlayher/wifi v0.7.1 + github.com/mdlayher/wifi v0.7.2 github.com/opencontainers/selinux v1.13.0 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 diff --git a/go.sum b/go.sum index 6951ee25..256280ec 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= -github.com/mdlayher/wifi v0.7.1 h1:YmnDtiVC53nird8qKEUCkVzkhE+jM3rtJATUt+KjhWA= -github.com/mdlayher/wifi v0.7.1/go.mod h1:L4W/35f78XpeM6fuf/BvLx3NjfM9B/l3xBfnYNnD6KY= +github.com/mdlayher/wifi v0.7.2 h1:5yBq4nTm2HIYarKpJHrHU8q2BuxlX/BEfPa8kVKeOYU= +github.com/mdlayher/wifi v0.7.2/go.mod h1:zJM6S0QpUxpUgf915rgAQHE4/e1YzRRkhK3M26NPakI= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= From 6ba05bfe57013f6651e7009e650012b8a7ff15a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:57:08 +0100 Subject: [PATCH 085/109] build(deps): bump github.com/godbus/dbus/v5 from 5.2.0 to 5.2.2 (#3531) Bumps [github.com/godbus/dbus/v5](https://github.com/godbus/dbus) from 5.2.0 to 5.2.2. - [Release notes](https://github.com/godbus/dbus/releases) - [Commits](https://github.com/godbus/dbus/compare/v5.2.0...v5.2.2) --- updated-dependencies: - dependency-name: github.com/godbus/dbus/v5 dependency-version: 5.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e8731a96..d9632c77 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 github.com/dennwc/btrfs v0.0.0-20241002142654-12ae127e0bf6 github.com/ema/qdisc v1.0.0 - github.com/godbus/dbus/v5 v5.2.0 + github.com/godbus/dbus/v5 v5.2.2 github.com/hashicorp/go-envparse v0.1.0 github.com/hodgesds/perf-utils v0.7.0 github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 diff --git a/go.sum b/go.sum index 256280ec..dee4541c 100644 --- a/go.sum +++ b/go.sum @@ -25,8 +25,8 @@ github.com/dennwc/ioctl v1.0.0 h1:DsWAAjIxRqNcLn9x6mwfuf2pet3iB7aK90K4tF16rLg= github.com/dennwc/ioctl v1.0.0/go.mod h1:ellh2YB5ldny99SBU/VX7Nq0xiZbHphf1DrtHxxjMk0= github.com/ema/qdisc v1.0.0 h1:EHLG08FVRbWLg8uRICa3xzC9Zm0m7HyMHfXobWFnXYg= github.com/ema/qdisc v1.0.0/go.mod h1:FhIc0fLYi7f+lK5maMsesDqwYojIOh3VfRs8EVd5YJQ= -github.com/godbus/dbus/v5 v5.2.0 h1:3WexO+U+yg9T70v9FdHr9kCxYlazaAXUhx2VMkbfax8= -github.com/godbus/dbus/v5 v5.2.0/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c= +github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ= +github.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c= github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= From 07a60db981e5aae05f5c85bf7d6bd51f3740c7b1 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Tue, 10 Feb 2026 22:29:14 +0100 Subject: [PATCH 086/109] Bump BSD actions (#3548) Bump BSD Go versions and `vmactions/netbsd-vm`. Signed-off-by: Ben Kochie --- .github/workflows/bsd.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 4b2b5c31..6c5d3e58 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -13,11 +13,11 @@ permissions: env: GNU_TAR_VERSION: "1.35" - GO_VERSION_DRAGONFLY: "1.25.1" + GO_VERSION_DRAGONFLY: "1.25.7" GO_VERSION_FREEBSD: "125" - GO_VERSION_NETBSD: "1.25.1" + GO_VERSION_NETBSD: "1.25.7" GO_VERSION_OPENBSD: "1.25.1" - GO_VERSION_SOLARIS: "1.25.1" + GO_VERSION_SOLARIS: "1.25.7" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions jobs: @@ -122,7 +122,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/netbsd-vm@b24ed5f7a605362ab1226e73df291c8b01990c85 # v1.2.3 + uses: vmactions/netbsd-vm@88a20b128e1d7fa463bb361afe4167733c55b86a # v1.3.5 with: copyback: false envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' From 45e770fe5eb9238b06454bb8062fb0a4d53c6d08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 22:39:51 +0100 Subject: [PATCH 087/109] build(deps): bump github.com/opencontainers/selinux (#3492) Bumps [github.com/opencontainers/selinux](https://github.com/opencontainers/selinux) from 1.13.0 to 1.13.1. - [Release notes](https://github.com/opencontainers/selinux/releases) - [Commits](https://github.com/opencontainers/selinux/compare/v1.13.0...v1.13.1) --- updated-dependencies: - dependency-name: github.com/opencontainers/selinux dependency-version: 1.13.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d9632c77..056a3400 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/mdlayher/ethtool v0.5.0 github.com/mdlayher/netlink v1.8.0 github.com/mdlayher/wifi v0.7.2 - github.com/opencontainers/selinux v1.13.0 + github.com/opencontainers/selinux v1.13.1 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 github.com/prometheus-community/go-runit v0.1.0 github.com/prometheus/client_golang v1.23.2 diff --git a/go.sum b/go.sum index dee4541c..1ef3b5a9 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/opencontainers/selinux v1.13.0 h1:Zza88GWezyT7RLql12URvoxsbLfjFx988+LGaWfbL84= -github.com/opencontainers/selinux v1.13.0/go.mod h1:XxWTed+A/s5NNq4GmYScVy+9jzXhGBVEOAyucdRUY8s= +github.com/opencontainers/selinux v1.13.1 h1:A8nNeceYngH9Ow++M+VVEwJVpdFmrlxsN22F+ISDCJE= +github.com/opencontainers/selinux v1.13.1/go.mod h1:S10WXZ/osk2kWOYKy1x2f/eXF5ZHJoUs8UU/2caNRbg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= From e8812553ac19526e4753e1972020c9f3e55ddb17 Mon Sep 17 00:00:00 2001 From: Anvesh Jaggapatruni Date: Thu, 12 Feb 2026 00:41:54 +0530 Subject: [PATCH 088/109] netlink: add node_network_altnames metric (#3541) Signed-off-by: Anvesh J --- collector/netclass_rtnl_linux.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/collector/netclass_rtnl_linux.go b/collector/netclass_rtnl_linux.go index 6df34756..d3dde4c0 100644 --- a/collector/netclass_rtnl_linux.go +++ b/collector/netclass_rtnl_linux.go @@ -20,6 +20,7 @@ import ( "fmt" "io/fs" "path/filepath" + "strings" "github.com/alecthomas/kingpin/v2" "github.com/jsimonetti/rtnetlink/v2" @@ -96,6 +97,12 @@ func (c *netClassCollector) netClassRTNLUpdate(ch chan<- prometheus.Metric) erro []string{"device", "address", "broadcast", "duplex", "operstate", "ifalias"}, nil, ) + altnameDesc := prometheus.NewDesc( + prometheus.BuildFQName(namespace, c.subsystem, "altnames_info"), + "Non-numeric data of altname, value is always 1.", + []string{"altname", "device"}, + nil, + ) infoValue := 1.0 var ifalias = "" @@ -113,6 +120,14 @@ func (c *netClassCollector) netClassRTNLUpdate(ch chan<- prometheus.Metric) erro ch <- prometheus.MustNewConstMetric(infoDesc, prometheus.GaugeValue, infoValue, msg.Attributes.Name, msg.Attributes.Address.String(), msg.Attributes.Broadcast.String(), duplex, operstateStr[int(msg.Attributes.OperationalState)], ifalias) + if len(msg.Attributes.AltNames) > 0 { + for _, altname := range msg.Attributes.AltNames { + if altname == "" { + continue + } + ch <- prometheus.MustNewConstMetric(altnameDesc, prometheus.GaugeValue, infoValue, strings.ToValidUTF8(altname, "\uFFFD"), msg.Attributes.Name) + } + } pushMetric(ch, c.getFieldDesc("address_assign_type"), "address_assign_type", ifaceInfo.AddrAssignType, prometheus.GaugeValue, msg.Attributes.Name) pushMetric(ch, c.getFieldDesc("carrier"), "carrier", msg.Attributes.Carrier, prometheus.GaugeValue, msg.Attributes.Name) pushMetric(ch, c.getFieldDesc("carrier_changes_total"), "carrier_changes_total", msg.Attributes.CarrierChanges, prometheus.CounterValue, msg.Attributes.Name) From 29f6ec0a66ebc62db5f1c0ad289a5d5fde32fafe Mon Sep 17 00:00:00 2001 From: Sagi Grimberg Date: Tue, 17 Feb 2026 16:39:28 +0200 Subject: [PATCH 089/109] mountstats/linux: fix multiple transports statistics labeling (#3358) When mounting nfs with nconnect, mountstats will show multiple transports. Currently the mountstats exporter fails to create metrics from this information due to repeated entries. Fix this by adding transport metrics a "transport" label enumerating their order in the mountstats output. Signed-off-by: Sagi Grimberg --- collector/fixtures/e2e-64k-page-output.txt | 40 +++++++++--------- collector/fixtures/e2e-output.txt | 40 +++++++++--------- collector/mountstats_linux.go | 48 ++++++++++++---------- 3 files changed, 66 insertions(+), 62 deletions(-) diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index 522350cd..db384df6 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -2267,44 +2267,44 @@ node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mount node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 # HELP node_mountstats_nfs_transport_backlog_queue_total Total number of items added to the RPC backlog queue. # TYPE node_mountstats_nfs_transport_backlog_queue_total counter -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bad_transaction_ids_total Number of times the NFS server sent a response with a transaction ID unknown to this client. # TYPE node_mountstats_nfs_transport_bad_transaction_ids_total counter -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bind_total Number of times the client has had to establish a connection from scratch to the NFS server. # TYPE node_mountstats_nfs_transport_bind_total counter -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_connect_total Number of times the client has made a TCP connection to the NFS server. # TYPE node_mountstats_nfs_transport_connect_total counter -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 1 -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 1 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_idle_time_seconds Duration since the NFS mount last saw any RPC traffic, in seconds. # TYPE node_mountstats_nfs_transport_idle_time_seconds gauge -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 11 -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 11 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_maximum_rpc_slots Maximum number of simultaneously active RPC requests ever used. # TYPE node_mountstats_nfs_transport_maximum_rpc_slots gauge -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 24 -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 24 # HELP node_mountstats_nfs_transport_pending_queue_total Total number of items added to the RPC transmission pending queue. # TYPE node_mountstats_nfs_transport_pending_queue_total counter -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 5726 -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 5726 # HELP node_mountstats_nfs_transport_receives_total Number of RPC responses for this mount received from the NFS server. # TYPE node_mountstats_nfs_transport_receives_total counter -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_transport_sending_queue_total Total number of items added to the RPC transmission sending queue. # TYPE node_mountstats_nfs_transport_sending_queue_total counter -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 26 -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 26 # HELP node_mountstats_nfs_transport_sends_total Number of RPC requests for this mount sent to the NFS server. # TYPE node_mountstats_nfs_transport_sends_total counter -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_write_bytes_total Number of bytes written using the write() syscall. # TYPE node_mountstats_nfs_write_bytes_total counter node_mountstats_nfs_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 6f2b0376..9d59cab3 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -2299,44 +2299,44 @@ node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mount node_mountstats_nfs_total_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 # HELP node_mountstats_nfs_transport_backlog_queue_total Total number of items added to the RPC backlog queue. # TYPE node_mountstats_nfs_transport_backlog_queue_total counter -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_backlog_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bad_transaction_ids_total Number of times the NFS server sent a response with a transaction ID unknown to this client. # TYPE node_mountstats_nfs_transport_bad_transaction_ids_total counter -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bad_transaction_ids_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_bind_total Number of times the client has had to establish a connection from scratch to the NFS server. # TYPE node_mountstats_nfs_transport_bind_total counter -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 -node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 0 +node_mountstats_nfs_transport_bind_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_connect_total Number of times the client has made a TCP connection to the NFS server. # TYPE node_mountstats_nfs_transport_connect_total counter -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 1 -node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 1 +node_mountstats_nfs_transport_connect_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_idle_time_seconds Duration since the NFS mount last saw any RPC traffic, in seconds. # TYPE node_mountstats_nfs_transport_idle_time_seconds gauge -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 11 -node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 0 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 11 +node_mountstats_nfs_transport_idle_time_seconds{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 0 # HELP node_mountstats_nfs_transport_maximum_rpc_slots Maximum number of simultaneously active RPC requests ever used. # TYPE node_mountstats_nfs_transport_maximum_rpc_slots gauge -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 24 -node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 24 +node_mountstats_nfs_transport_maximum_rpc_slots{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 24 # HELP node_mountstats_nfs_transport_pending_queue_total Total number of items added to the RPC transmission pending queue. # TYPE node_mountstats_nfs_transport_pending_queue_total counter -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 5726 -node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 5726 +node_mountstats_nfs_transport_pending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 5726 # HELP node_mountstats_nfs_transport_receives_total Number of RPC responses for this mount received from the NFS server. # TYPE node_mountstats_nfs_transport_receives_total counter -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_receives_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_transport_sending_queue_total Total number of items added to the RPC transmission sending queue. # TYPE node_mountstats_nfs_transport_sending_queue_total counter -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 26 -node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 26 +node_mountstats_nfs_transport_sending_queue_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 26 # HELP node_mountstats_nfs_transport_sends_total Number of RPC requests for this mount sent to the NFS server. # TYPE node_mountstats_nfs_transport_sends_total counter -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 6428 -node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp",transport="0"} 6428 +node_mountstats_nfs_transport_sends_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="udp",transport="0"} 6428 # HELP node_mountstats_nfs_write_bytes_total Number of bytes written using the write() syscall. # TYPE node_mountstats_nfs_write_bytes_total counter node_mountstats_nfs_write_bytes_total{export="192.168.1.1:/srv/test",mountaddr="192.168.1.1",protocol="tcp"} 0 diff --git a/collector/mountstats_linux.go b/collector/mountstats_linux.go index 319b8914..1c3b9a99 100644 --- a/collector/mountstats_linux.go +++ b/collector/mountstats_linux.go @@ -18,6 +18,7 @@ package collector import ( "fmt" "log/slog" + "strconv" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/procfs" @@ -126,8 +127,9 @@ func NewMountStatsCollector(logger *slog.Logger) (Collector, error) { ) var ( - labels = []string{"export", "protocol", "mountaddr"} - opLabels = []string{"export", "protocol", "mountaddr", "operation"} + labels = []string{"export", "protocol", "mountaddr"} + opLabels = []string{"export", "protocol", "mountaddr", "operation"} + translabels = []string{"export", "protocol", "mountaddr", "transport"} ) return &mountStatsCollector{ @@ -197,70 +199,70 @@ func NewMountStatsCollector(logger *slog.Logger) (Collector, error) { NFSTransportBindTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_bind_total"), "Number of times the client has had to establish a connection from scratch to the NFS server.", - labels, + translabels, nil, ), NFSTransportConnectTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_connect_total"), "Number of times the client has made a TCP connection to the NFS server.", - labels, + translabels, nil, ), NFSTransportIdleTimeSeconds: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_idle_time_seconds"), "Duration since the NFS mount last saw any RPC traffic, in seconds.", - labels, + translabels, nil, ), NFSTransportSendsTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_sends_total"), "Number of RPC requests for this mount sent to the NFS server.", - labels, + translabels, nil, ), NFSTransportReceivesTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_receives_total"), "Number of RPC responses for this mount received from the NFS server.", - labels, + translabels, nil, ), NFSTransportBadTransactionIDsTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_bad_transaction_ids_total"), "Number of times the NFS server sent a response with a transaction ID unknown to this client.", - labels, + translabels, nil, ), NFSTransportBacklogQueueTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_backlog_queue_total"), "Total number of items added to the RPC backlog queue.", - labels, + translabels, nil, ), NFSTransportMaximumRPCSlots: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_maximum_rpc_slots"), "Maximum number of simultaneously active RPC requests ever used.", - labels, + translabels, nil, ), NFSTransportSendingQueueTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_sending_queue_total"), "Total number of items added to the RPC transmission sending queue.", - labels, + translabels, nil, ), NFSTransportPendingQueueTotal: prometheus.NewDesc( prometheus.BuildFQName(namespace, subsystem, "transport_pending_queue_total"), "Total number of items added to the RPC transmission pending queue.", - labels, + translabels, nil, ), @@ -617,74 +619,76 @@ func (c *mountStatsCollector) updateNFSStats(ch chan<- prometheus.Metric, s *pro ) for i := range s.Transport { + translabelValues := []string{export, protocol, mountAddress, strconv.Itoa(i)} + ch <- prometheus.MustNewConstMetric( c.NFSTransportBindTotal, prometheus.CounterValue, float64(s.Transport[i].Bind), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportConnectTotal, prometheus.CounterValue, float64(s.Transport[i].Connect), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportIdleTimeSeconds, prometheus.GaugeValue, float64(s.Transport[i].IdleTimeSeconds%float64Mantissa), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportSendsTotal, prometheus.CounterValue, float64(s.Transport[i].Sends), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportReceivesTotal, prometheus.CounterValue, float64(s.Transport[i].Receives), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportBadTransactionIDsTotal, prometheus.CounterValue, float64(s.Transport[i].BadTransactionIDs), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportBacklogQueueTotal, prometheus.CounterValue, float64(s.Transport[i].CumulativeBacklog), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportMaximumRPCSlots, prometheus.GaugeValue, float64(s.Transport[i].MaximumRPCSlotsUsed), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportSendingQueueTotal, prometheus.CounterValue, float64(s.Transport[i].CumulativeSendingQueue), - labelValues..., + translabelValues..., ) ch <- prometheus.MustNewConstMetric( c.NFSTransportPendingQueueTotal, prometheus.CounterValue, float64(s.Transport[i].CumulativePendingQueue), - labelValues..., + translabelValues..., ) } From b5966ca70e8c9c99afd819ce7ab75e054681673a Mon Sep 17 00:00:00 2001 From: Ingmar Stein <490610+IngmarStein@users.noreply.github.com> Date: Wed, 18 Feb 2026 07:51:06 +0100 Subject: [PATCH 090/109] feat: add support for CPU temperature metrics on Apple Silicon (#3547) Signed-off-by: Ingmar Stein <490610+IngmarStein@users.noreply.github.com> --- collector/thermal_darwin.go | 13 ++- collector/thermal_darwin_amd64.go | 22 +++++ collector/thermal_darwin_arm64.go | 154 ++++++++++++++++++++++++++++++ 3 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 collector/thermal_darwin_amd64.go create mode 100644 collector/thermal_darwin_arm64.go diff --git a/collector/thermal_darwin.go b/collector/thermal_darwin.go index b51f1822..75be7c42 100644 --- a/collector/thermal_darwin.go +++ b/collector/thermal_darwin.go @@ -58,6 +58,7 @@ type thermCollector struct { cpuSchedulerLimit typedDesc cpuAvailableCPU typedDesc cpuSpeedLimit typedDesc + temperature typedDesc logger *slog.Logger } @@ -96,6 +97,15 @@ func NewThermCollector(logger *slog.Logger) (Collector, error) { ), valueType: prometheus.GaugeValue, }, + temperature: typedDesc{ + desc: prometheus.NewDesc( + prometheus.BuildFQName(namespace, thermal, "temperature_celsius"), + "Temperature of the thermal sensor in Celsius.", + []string{"sensor"}, + nil, + ), + valueType: prometheus.GaugeValue, + }, logger: logger, }, nil } @@ -114,7 +124,8 @@ func (c *thermCollector) Update(ch chan<- prometheus.Metric) error { if value, ok := cpuPowerStatus[(string(C.kIOPMCPUPowerLimitProcessorSpeedKey))]; ok { ch <- c.cpuSpeedLimit.mustNewConstMetric(float64(value) / 100.0) } - return nil + + return c.updateTemperatures(ch) } func fetchCPUPowerStatus() (map[string]int, error) { diff --git a/collector/thermal_darwin_amd64.go b/collector/thermal_darwin_amd64.go new file mode 100644 index 00000000..e49b65d2 --- /dev/null +++ b/collector/thermal_darwin_amd64.go @@ -0,0 +1,22 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !notherm && darwin && amd64 && cgo + +package collector + +import "github.com/prometheus/client_golang/prometheus" + +func (c *thermCollector) updateTemperatures(ch chan<- prometheus.Metric) error { + return nil +} diff --git a/collector/thermal_darwin_arm64.go b/collector/thermal_darwin_arm64.go new file mode 100644 index 00000000..5f9461a8 --- /dev/null +++ b/collector/thermal_darwin_arm64.go @@ -0,0 +1,154 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !notherm && darwin && arm64 + +package collector + +/* +#cgo LDFLAGS: -framework IOKit -framework CoreFoundation +#include +#include +#include + +typedef struct __IOHIDEventSystemClient * IOHIDEventSystemClientRef; +typedef struct __IOHIDServiceClient * IOHIDServiceClientRef; +typedef struct __IOHIDEvent * IOHIDEventRef; + +#define kIOHIDEventTypeTemperature 15 +#define IOHIDEventFieldBase(type) (type << 16) + +int32_t GetIOHIDEventFieldBase(int32_t type) { + return IOHIDEventFieldBase(type); +} + +// External functions +IOHIDEventSystemClientRef IOHIDEventSystemClientCreate(CFAllocatorRef allocator); +void IOHIDEventSystemClientSetMatching(IOHIDEventSystemClientRef client, CFDictionaryRef match); +CFArrayRef IOHIDEventSystemClientCopyServices(IOHIDEventSystemClientRef client); +IOHIDEventRef IOHIDServiceClientCopyEvent(IOHIDServiceClientRef service, int64_t type, int32_t options, int64_t timestamp); +double IOHIDEventGetFloatValue(IOHIDEventRef event, int32_t field); +CFTypeRef IOHIDServiceClientCopyProperty(IOHIDServiceClientRef service, CFStringRef key); +*/ +import "C" + +import ( + "unsafe" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/node_exporter/collector/utils" +) + +const absoluteZeroCelsius = -273.15 + +func (c *thermCollector) updateTemperatures(ch chan<- prometheus.Metric) error { + client := C.IOHIDEventSystemClientCreate(C.kCFAllocatorDefault) + if client == nil { + return nil + } + defer C.CFRelease(C.CFTypeRef(unsafe.Pointer(client))) + + page := 0xff00 + usage := 5 + + pageNum := C.CFNumberCreate(C.kCFAllocatorDefault, C.kCFNumberIntType, unsafe.Pointer(&page)) + defer C.CFRelease(C.CFTypeRef(pageNum)) + usageNum := C.CFNumberCreate(C.kCFAllocatorDefault, C.kCFNumberIntType, unsafe.Pointer(&usage)) + defer C.CFRelease(C.CFTypeRef(usageNum)) + + keyPage := C.CString("PrimaryUsagePage") + defer C.free(unsafe.Pointer(keyPage)) + keyUsage := C.CString("PrimaryUsage") + defer C.free(unsafe.Pointer(keyUsage)) + + cfKeyPage := C.CFStringCreateWithCString(C.kCFAllocatorDefault, keyPage, C.kCFStringEncodingUTF8) + defer C.CFRelease(C.CFTypeRef(cfKeyPage)) + cfKeyUsage := C.CFStringCreateWithCString(C.kCFAllocatorDefault, keyUsage, C.kCFStringEncodingUTF8) + defer C.CFRelease(C.CFTypeRef(cfKeyUsage)) + + keys := []C.CFTypeRef{C.CFTypeRef(cfKeyPage), C.CFTypeRef(cfKeyUsage)} + values := []C.CFTypeRef{C.CFTypeRef(pageNum), C.CFTypeRef(usageNum)} + + matching := C.CFDictionaryCreate(C.kCFAllocatorDefault, + (*unsafe.Pointer)(unsafe.Pointer(&keys[0])), + (*unsafe.Pointer)(unsafe.Pointer(&values[0])), + 2, + &C.kCFTypeDictionaryKeyCallBacks, + &C.kCFTypeDictionaryValueCallBacks) + defer C.CFRelease(C.CFTypeRef(matching)) + + C.IOHIDEventSystemClientSetMatching(client, matching) + + services := C.IOHIDEventSystemClientCopyServices(client) + if services == 0 { + return nil + } + defer C.CFRelease(C.CFTypeRef(services)) + + count := C.CFArrayGetCount(services) + + prodKey := C.CString("Product") + defer C.free(unsafe.Pointer(prodKey)) + cfProdKey := C.CFStringCreateWithCString(C.kCFAllocatorDefault, prodKey, C.kCFStringEncodingUTF8) + defer C.CFRelease(C.CFTypeRef(cfProdKey)) + + for i := 0; i < int(count); i++ { + service := C.CFArrayGetValueAtIndex(services, C.CFIndex(i)) + + event := C.IOHIDServiceClientCopyEvent((C.IOHIDServiceClientRef)(service), C.kIOHIDEventTypeTemperature, 0, 0) + if event == nil { + continue + } + + temp := C.IOHIDEventGetFloatValue(event, C.GetIOHIDEventFieldBase(C.kIOHIDEventTypeTemperature)) + C.CFRelease(C.CFTypeRef(unsafe.Pointer(event))) + + // Observed invalid values on some Apple Silicon devices are around -9200. + // Filter out physically impossible temperatures. + if temp < absoluteZeroCelsius { + continue + } + + nameRef := C.IOHIDServiceClientCopyProperty((C.IOHIDServiceClientRef)(service), cfProdKey) + name := "Unknown" + if nameRef != 0 { + name = cfStringToString((C.CFStringRef)(nameRef)) + C.CFRelease(C.CFTypeRef(nameRef)) + } + + ch <- c.temperature.mustNewConstMetric(float64(temp), name) + } + return nil +} + +func cfStringToString(s C.CFStringRef) string { + p := C.CFStringGetCStringPtr(s, C.kCFStringEncodingUTF8) + if p != nil { + return C.GoString(p) + } + length := C.CFStringGetLength(s) + if length <= 0 { + return "" + } + maxBufLen := C.CFStringGetMaximumSizeForEncoding(length, C.kCFStringEncodingUTF8) + if maxBufLen <= 0 { + return "" + } + if maxBufLen > 4096 { + maxBufLen = 4096 + } + buf := make([]byte, maxBufLen) + var usedBufLen C.CFIndex + _ = C.CFStringGetBytes(s, C.CFRange{0, length}, C.kCFStringEncodingUTF8, C.UInt8(0), C.false, (*C.UInt8)(&buf[0]), maxBufLen, &usedBufLen) + return utils.SafeBytesToString(buf[:usedBufLen]) +} From 32a71803d29d8dcc41ab02d6eb0a900b6d844846 Mon Sep 17 00:00:00 2001 From: prombot Date: Tue, 10 Feb 2026 18:07:34 +0000 Subject: [PATCH 091/109] Update common Prometheus files Signed-off-by: prombot --- .github/workflows/container_description.yml | 4 ++-- .github/workflows/golangci-lint.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index d7b879f9..7b46e953 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Set docker hub repo name @@ -42,7 +42,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Set quay.io org name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index db74a38c..ae5fdc80 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -24,11 +24,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: persist-credentials: false - name: Install Go - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 + uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 with: go-version: 1.25.x - name: Install snmp_exporter/generator dependencies From bffaeacd0f8d5ac70df23921b0a6194bb89a7bd3 Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Mon, 23 Feb 2026 21:32:05 +0100 Subject: [PATCH 092/109] Synchronize common files from prometheus/prometheus (#3553) * Update common Prometheus files Signed-off-by: prombot * Fix lint issue > S1009: should omit nil check; len() for nil slices is defined as zero Signed-off-by: Ben Kochie --------- Signed-off-by: prombot Signed-off-by: Ben Kochie Co-authored-by: Ben Kochie --- .github/workflows/container_description.yml | 4 ++-- .github/workflows/golangci-lint.yml | 8 +++++--- Makefile.common | 4 ++-- collector/perf_linux.go | 8 ++++---- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.github/workflows/container_description.yml b/.github/workflows/container_description.yml index 7b46e953..d7b879f9 100644 --- a/.github/workflows/container_description.yml +++ b/.github/workflows/container_description.yml @@ -18,7 +18,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set docker hub repo name @@ -42,7 +42,7 @@ jobs: if: github.repository_owner == 'prometheus' || github.repository_owner == 'prometheus-community' # Don't run this workflow on forks. steps: - name: git checkout - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Set quay.io org name diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index ae5fdc80..dc8ffd02 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -3,6 +3,7 @@ name: golangci-lint on: push: + branches: [main, master, 'release-*'] paths: - "go.sum" - "go.mod" @@ -10,6 +11,7 @@ on: - "scripts/errcheck_excludes.txt" - ".github/workflows/golangci-lint.yml" - ".golangci.yml" + tags: ['v*'] pull_request: permissions: # added using https://github.com/step-security/secure-repo @@ -24,13 +26,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Install Go - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 + uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: - go-version: 1.25.x + go-version: 1.26.x - name: Install snmp_exporter/generator dependencies run: sudo apt-get update && sudo apt-get -y install libsnmp-dev if: github.repository == 'prometheus/snmp_exporter' diff --git a/Makefile.common b/Makefile.common index b8c9b384..d19d390d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -55,13 +55,13 @@ ifneq ($(shell command -v gotestsum 2> /dev/null),) endif endif -PROMU_VERSION ?= 0.17.0 +PROMU_VERSION ?= 0.18.0 PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz SKIP_GOLANGCI_LINT := GOLANGCI_LINT := GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v2.7.2 +GOLANGCI_LINT_VERSION ?= v2.10.1 GOLANGCI_FMT_OPTS ?= # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64. # windows isn't included here because of the path separator being different. diff --git a/collector/perf_linux.go b/collector/perf_linux.go index 8b68205a..e4c4b81d 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -327,7 +327,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } // First configure any tracepoints. - if *perfTracepointFlag != nil && len(*perfTracepointFlag) > 0 { + if len(*perfTracepointFlag) > 0 { tracepointCollector, err := newPerfTracepointCollector(logger, *perfTracepointFlag, cpus) if err != nil { return nil, err @@ -337,7 +337,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { // Configure perf profilers hardwareProfilers := perf.AllHardwareProfilers - if *perfHwProfilerFlag != nil && len(*perfHwProfilerFlag) > 0 { + if len(*perfHwProfilerFlag) > 0 { // hardwareProfilers = 0 for _, hf := range *perfHwProfilerFlag { if v, ok := perfHardwareProfilerMap[hf]; ok { @@ -346,7 +346,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } } softwareProfilers := perf.AllSoftwareProfilers - if *perfSwProfilerFlag != nil && len(*perfSwProfilerFlag) > 0 { + if len(*perfSwProfilerFlag) > 0 { // softwareProfilers = 0 for _, sf := range *perfSwProfilerFlag { if v, ok := perfSoftwareProfilerMap[sf]; ok { @@ -355,7 +355,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) { } } cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.DataTLBReadHitProfiler | perf.DataTLBReadMissProfiler | perf.DataTLBWriteHitProfiler | perf.DataTLBWriteMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler - if *perfCaProfilerFlag != nil && len(*perfCaProfilerFlag) > 0 { + if len(*perfCaProfilerFlag) > 0 { cacheProfilers = 0 for _, cf := range *perfCaProfilerFlag { if v, ok := perfCacheProfilerMap[cf]; ok { From be92d50a5427cb44ffd6c37793a57cfa5f051c8b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:56:14 +0100 Subject: [PATCH 093/109] build(deps): bump github.com/jsimonetti/rtnetlink/v2 from 2.1.0 to 2.2.0 (#3557) Bumps [github.com/jsimonetti/rtnetlink/v2](https://github.com/jsimonetti/rtnetlink) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/jsimonetti/rtnetlink/releases) - [Commits](https://github.com/jsimonetti/rtnetlink/compare/v2.1.0...v2.2.0) --- updated-dependencies: - dependency-name: github.com/jsimonetti/rtnetlink/v2 dependency-version: 2.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 056a3400..b70e1edb 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/hashicorp/go-envparse v0.1.0 github.com/hodgesds/perf-utils v0.7.0 github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973 - github.com/jsimonetti/rtnetlink/v2 v2.1.0 + github.com/jsimonetti/rtnetlink/v2 v2.2.0 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.5.0 diff --git a/go.sum b/go.sum index 1ef3b5a9..20e615f5 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= -github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= +github.com/cilium/ebpf v0.20.0 h1:atwWj9d3NffHyPZzVlx3hmw1on5CLe9eljR8VuHTwhM= +github.com/cilium/ebpf v0.20.0/go.mod h1:pzLjFymM+uZPLk/IXZUL63xdx5VXEo+enTzxkZXdycw= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= @@ -42,8 +42,8 @@ github.com/illumos/go-kstat v0.0.0-20210513183136-173c9b0a9973/go.mod h1:PoK3ejP github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jsimonetti/rtnetlink/v2 v2.1.0 h1:3sSPD0k+Qvia3wbv6kZXCN0Dlz6Swv7RHjvvonuOcKE= -github.com/jsimonetti/rtnetlink/v2 v2.1.0/go.mod h1:hPPUTE+ekH3HD+zCEGAGLxzFY9HrJCyD1aN7JJ3SHIY= +github.com/jsimonetti/rtnetlink/v2 v2.2.0 h1:/KfZ310gOAFrXXol5VwnFEt+ucldD/0dsSRZwpHCP9w= +github.com/jsimonetti/rtnetlink/v2 v2.2.0/go.mod h1:lbjDHxC+5RJ08lzPeA90Ls2pEoId3F08MoEMlhfHxeI= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From 06e2027fe700013921dba48c09f71c02d9b4e59b Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Thu, 26 Feb 2026 18:15:11 +0100 Subject: [PATCH 094/109] Update Go (#3561) * Update Go to 1.26.x. * Update minimum Go version to 1.25.0. * Use Go direct download for OpenBSD. Signed-off-by: Ben Kochie --- .circleci/config.yml | 6 +++--- .github/workflows/bsd.yml | 15 +++++++++------ .promu.yml | 2 +- go.mod | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b389cc3f..f252027e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,10 +7,10 @@ executors: # should also be updated. golang: docker: - - image: cimg/go:1.25 + - image: cimg/go:1.26 arm: docker: - - image: cimg/go:1.25 + - image: cimg/go:1.26 resource_class: arm.medium jobs: @@ -70,7 +70,7 @@ jobs: machine: image: ubuntu-2404:current environment: - DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.25-base + DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.26-base REPO_PATH: github.com/prometheus/node_exporter steps: - prometheus/setup_environment diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 6c5d3e58..42cda0c3 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -13,11 +13,11 @@ permissions: env: GNU_TAR_VERSION: "1.35" - GO_VERSION_DRAGONFLY: "1.25.7" - GO_VERSION_FREEBSD: "125" - GO_VERSION_NETBSD: "1.25.7" - GO_VERSION_OPENBSD: "1.25.1" - GO_VERSION_SOLARIS: "1.25.7" + GO_VERSION_DRAGONFLY: "1.26.0" + GO_VERSION_FREEBSD: "126" + GO_VERSION_NETBSD: "1.26.0" + GO_VERSION_OPENBSD: "1.26.0" + GO_VERSION_SOLARIS: "1.26.0" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions jobs: @@ -88,7 +88,6 @@ jobs: ggrep \ git \ gmake \ - go-${GO_VERSION_OPENBSD} \ gsed \ gtar-${GNU_TAR_VERSION}p1-static \ python \ @@ -97,6 +96,10 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin + GOGZ="go${GO_VERSION_OPENBSD}.openbsd-amd64.tar.gz" + wget https://go.dev/dl/${GOGZ} + gtar xzf ${GOGZ} + ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed diff --git a/.promu.yml b/.promu.yml index a7076d5b..d0d602b6 100644 --- a/.promu.yml +++ b/.promu.yml @@ -1,7 +1,7 @@ go: # Whenever the Go version is updated here, .circle/config.yml and # .promu-cgo.yml should also be updated. - version: 1.25 + version: 1.26 repository: path: github.com/prometheus/node_exporter build: diff --git a/go.mod b/go.mod index b70e1edb..01cc0023 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/prometheus/node_exporter -go 1.24.0 +go 1.25.0 require ( github.com/alecthomas/kingpin/v2 v2.4.0 From 32079429212b67536ddd2cba7667fbf0f651c86f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 18:15:58 +0100 Subject: [PATCH 095/109] build(deps): bump github.com/mdlayher/ethtool from 0.5.0 to 0.5.1 (#3559) Bumps [github.com/mdlayher/ethtool](https://github.com/mdlayher/ethtool) from 0.5.0 to 0.5.1. - [Release notes](https://github.com/mdlayher/ethtool/releases) - [Commits](https://github.com/mdlayher/ethtool/compare/v0.5.0...v0.5.1) --- updated-dependencies: - dependency-name: github.com/mdlayher/ethtool dependency-version: 0.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 01cc0023..3a90f281 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/jsimonetti/rtnetlink/v2 v2.2.0 github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 - github.com/mdlayher/ethtool v0.5.0 + github.com/mdlayher/ethtool v0.5.1 github.com/mdlayher/netlink v1.8.0 github.com/mdlayher/wifi v0.7.2 github.com/opencontainers/selinux v1.13.1 diff --git a/go.sum b/go.sum index 20e615f5..366b48c6 100644 --- a/go.sum +++ b/go.sum @@ -56,8 +56,8 @@ github.com/lufia/iostat v1.2.1 h1:tnCdZBIglgxD47RyD55kfWQcJMGzO+1QBziSQfesf2k= github.com/lufia/iostat v1.2.1/go.mod h1:rEPNA0xXgjHQjuI5Cy05sLlS2oRcSlWHRLrvh/AQ+Pg= github.com/mattn/go-xmlrpc v0.0.3 h1:Y6WEMLEsqs3RviBrAa1/7qmbGB7DVD3brZIbqMbQdGY= github.com/mattn/go-xmlrpc v0.0.3/go.mod h1:mqc2dz7tP5x5BKlCahN/n+hs7OSZKJkS9JsHNBRlrxA= -github.com/mdlayher/ethtool v0.5.0 h1:7MpuhvUE574uVQDfkXotePLdfSNetlx3GDikFcdlVQA= -github.com/mdlayher/ethtool v0.5.0/go.mod h1:ROV9hwnETqDdpLv8E8WkCa8FymlkhFEeiB9cg3qzNkk= +github.com/mdlayher/ethtool v0.5.1 h1:U4GThY6WgNJUJsMrUzBmoOTdQHFWxFPTHTeNnn3GCvU= +github.com/mdlayher/ethtool v0.5.1/go.mod h1:Pz39PaAy96Ea1SrCvEO/pPEAeULvRJjO6zspuEMhJy4= github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw= github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o= github.com/mdlayher/netlink v1.8.0 h1:e7XNIYJKD7hUct3Px04RuIGJbBxy1/c4nX7D5YyvvlM= From e676331cf3df6d2724ae9ed1621ac295f8e57e04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 23:06:01 +0100 Subject: [PATCH 096/109] build(deps): bump github.com/prometheus/procfs from 0.19.2 to 0.20.0 (#3558) Bumps [github.com/prometheus/procfs](https://github.com/prometheus/procfs) from 0.19.2 to 0.20.0. - [Release notes](https://github.com/prometheus/procfs/releases) - [Commits](https://github.com/prometheus/procfs/compare/v0.19.2...v0.20.0) --- updated-dependencies: - dependency-name: github.com/prometheus/procfs dependency-version: 0.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 3a90f281..d12e093b 100644 --- a/go.mod +++ b/go.mod @@ -25,9 +25,9 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.5 github.com/prometheus/exporter-toolkit v0.15.0 - github.com/prometheus/procfs v0.19.2 + github.com/prometheus/procfs v0.20.0 github.com/safchain/ethtool v0.7.0 - golang.org/x/sys v0.40.0 + golang.org/x/sys v0.41.0 howett.net/plist v1.0.1 ) diff --git a/go.sum b/go.sum index 366b48c6..e999df97 100644 --- a/go.sum +++ b/go.sum @@ -88,8 +88,8 @@ github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTU github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= -github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= -github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/procfs v0.20.0 h1:AA7aCvjxwAquZAlonN7888f2u4IN8WVeFgBi4k82M4Q= +github.com/prometheus/procfs v0.20.0/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/safchain/ethtool v0.7.0 h1:rlJzfDetsVvT61uz8x1YIcFn12akMfuPulHtZjtb7Is= @@ -127,8 +127,8 @@ golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= From 8ec8f2844203469bb5b7fa8bfc85a1e1f56772d0 Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Thu, 26 Feb 2026 23:06:26 +0100 Subject: [PATCH 097/109] Update common Prometheus files (#3562) Signed-off-by: prombot --- Makefile.common | 110 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 4 deletions(-) diff --git a/Makefile.common b/Makefile.common index d19d390d..cce3ef1d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -109,6 +109,24 @@ endif # Build variant:dockerfile pairs for shell iteration. DOCKERFILE_VARIANTS_WITH_NAMES := $(foreach df,$(DOCKERFILE_VARIANTS),$(call dockerfile_variant,$(df)):$(df)) +# Shell helper to check whether a dockerfile/arch pair is excluded. +define dockerfile_arch_is_excluded +case " $(DOCKERFILE_ARCH_EXCLUSIONS) " in \ + *" $$dockerfile:$(1) "*) true ;; \ + *) false ;; \ +esac +endef + +# Shell helper to check whether a registry/arch pair is excluded. +# Extracts registry from DOCKER_REPO (e.g., quay.io/prometheus -> quay.io) +define registry_arch_is_excluded +registry=$$(echo "$(DOCKER_REPO)" | cut -d'/' -f1); \ +case " $(DOCKER_REGISTRY_ARCH_EXCLUSIONS) " in \ + *" $$registry:$(1) "*) true ;; \ + *) false ;; \ +esac +endef + BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS)) PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS)) TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS)) @@ -250,6 +268,10 @@ $(BUILD_DOCKER_ARCHS): common-docker-%: @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ dockerfile=$${variant#*:}; \ variant_name=$${variant%%:*}; \ + if $(call dockerfile_arch_is_excluded,$*); then \ + echo "Skipping $$variant_name variant for linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ distroless_arch="$*"; \ if [ "$*" = "armv7" ]; then \ distroless_arch="arm"; \ @@ -284,6 +306,14 @@ $(PUBLISH_DOCKER_ARCHS): common-docker-publish-%: @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ dockerfile=$${variant#*:}; \ variant_name=$${variant%%:*}; \ + if $(call dockerfile_arch_is_excluded,$*); then \ + echo "Skipping push for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$*); then \ + echo "Skipping push for $$variant_name variant on linux-$* to $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ echo "Pushing $$variant_name variant for linux-$*"; \ docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ @@ -311,6 +341,14 @@ $(TAG_DOCKER_ARCHS): common-docker-tag-latest-%: @for variant in $(DOCKERFILE_VARIANTS_WITH_NAMES); do \ dockerfile=$${variant#*:}; \ variant_name=$${variant%%:*}; \ + if $(call dockerfile_arch_is_excluded,$*); then \ + echo "Skipping tag for $$variant_name variant on linux-$* (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$*); then \ + echo "Skipping tag for $$variant_name variant on linux-$* for $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ echo "Tagging $$variant_name variant for linux-$* as latest"; \ docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest-$$variant_name"; \ @@ -330,23 +368,87 @@ common-docker-manifest: variant_name=$${variant%%:*}; \ if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ echo "Creating manifest for $$variant_name variant"; \ - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name); \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping manifest for $$variant_name variant (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name" $$refs; \ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)-$$variant_name"; \ fi; \ if [ "$$dockerfile" = "Dockerfile" ]; then \ echo "Creating default variant ($$variant_name) manifest"; \ - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG)); \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:$(SANITIZED_DOCKER_IMAGE_TAG)"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping default variant manifest (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)" $$refs; \ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG)"; \ fi; \ if [ "$(DOCKER_IMAGE_TAG)" = "latest" ]; then \ if [ "$$dockerfile" != "Dockerfile" ] || [ "$$variant_name" != "default" ]; then \ echo "Creating manifest for $$variant_name variant version tag"; \ - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name); \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for $$variant_name version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping version-tag manifest for $$variant_name variant (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name" $$refs; \ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)-$$variant_name"; \ fi; \ if [ "$$dockerfile" = "Dockerfile" ]; then \ echo "Creating default variant version tag manifest"; \ - DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):v$(DOCKER_MAJOR_VERSION_TAG)); \ + refs=""; \ + for arch in $(DOCKER_ARCHS); do \ + if $(call dockerfile_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant version tag (excluded by DOCKERFILE_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + if $(call registry_arch_is_excluded,$$arch); then \ + echo " Skipping $$arch for default variant version tag on $(DOCKER_REPO) (excluded by DOCKER_REGISTRY_ARCH_EXCLUSIONS)"; \ + continue; \ + fi; \ + refs="$$refs $(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$$arch:v$(DOCKER_MAJOR_VERSION_TAG)"; \ + done; \ + if [ -z "$$refs" ]; then \ + echo "Skipping default variant version-tag manifest (no supported architectures)"; \ + continue; \ + fi; \ + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)" $$refs; \ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):v$(DOCKER_MAJOR_VERSION_TAG)"; \ fi; \ fi; \ From c9d0b08ed6bac83611772ef79d3e67ac6be05695 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Thu, 26 Feb 2026 23:08:01 +0100 Subject: [PATCH 098/109] make devices in network graphs configurable (#3525) * rules: introduce instance:node_network_receive_bytes_physical:rate recording rule This rule uses a user configurable selector with a sane default. That allows users to customize what network devices they want to aggregate. Fixes: https://github.com/prometheus/node_exporter/issues/3524 Signed-off-by: Jan Fajerski * use dashboard: don't show virtual network links in network graphs Signed-off-by: Jan Fajerski --------- Signed-off-by: Jan Fajerski --- docs/node-mixin/config.libsonnet | 7 +++++ docs/node-mixin/dashboards/use.libsonnet | 8 +++--- docs/node-mixin/rules/rules.libsonnet | 33 ++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/docs/node-mixin/config.libsonnet b/docs/node-mixin/config.libsonnet index 1a4b3caa..ea31b595 100644 --- a/docs/node-mixin/config.libsonnet +++ b/docs/node-mixin/config.libsonnet @@ -30,6 +30,13 @@ // them here, e.g. 'device!="tmpfs"'. diskDeviceSelector: 'device!=""', + // Select the devices for physical network related querier. If left + // empty the lo device and virtual device (starting with veth) are ignored. + // If you have bonded interfaces for example you might want to ignore those + // interfaces as well to avoid aggregating bandwith multiple times (once at + // the physical layer and on the bond layer). E.g. // device!~"lo|veth.+|bond.+"'. + netDeviceSelector: 'device!~"lo|veth.+"', + // Some of the alerts are meant to fire if a critical failure of a // node is imminent (e.g. the disk is about to run full). In a // true “cloud native” setup, failures of a single node should be diff --git a/docs/node-mixin/dashboards/use.libsonnet b/docs/node-mixin/dashboards/use.libsonnet index fd98cd8d..9c219298 100644 --- a/docs/node-mixin/dashboards/use.libsonnet +++ b/docs/node-mixin/dashboards/use.libsonnet @@ -153,12 +153,12 @@ local diskSpaceUtilisation = row.new('Network') + row.withPanels([ networkUtilisation + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'instance:node_network_receive_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), - prometheus.new('$datasource', 'instance:node_network_transmit_bytes_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), + prometheus.new('$datasource', 'instance:node_network_receive_bytes_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), + prometheus.new('$datasource', 'instance:node_network_transmit_bytes_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), ]), networkSaturation + tsQueryOptions.withTargets([ - prometheus.new('$datasource', 'instance:node_network_receive_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), - prometheus.new('$datasource', 'instance:node_network_transmit_drop_excluding_lo:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), + prometheus.new('$datasource', 'instance:node_network_receive_drop_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Receive'), + prometheus.new('$datasource', 'instance:node_network_transmit_drop_physical:rate%(rateInterval)s{%(nodeExporterSelector)s, instance="$instance", %(clusterLabel)s=~"$cluster"} != 0' % $._config) + prometheus.withLegendFormat('Transmit'), ]), ]), row.new('Disk IO') diff --git a/docs/node-mixin/rules/rules.libsonnet b/docs/node-mixin/rules/rules.libsonnet index 9c8eb90d..7c2552f8 100644 --- a/docs/node-mixin/rules/rules.libsonnet +++ b/docs/node-mixin/rules/rules.libsonnet @@ -112,6 +112,39 @@ ) ||| % $._config, }, + { + record: 'instance:node_network_receive_bytes_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_receive_bytes_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, + { + record: 'instance:node_network_transmit_bytes_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_transmit_bytes_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, + // TODO: Find out if those drops ever happen on modern switched networks. + { + record: 'instance:node_network_receive_drop_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_receive_drop_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, + { + record: 'instance:node_network_transmit_drop_physical:rate%(rateInterval)s' % $._config, + expr: ||| + sum without (device) ( + rate(node_network_transmit_drop_total{%(nodeExporterSelector)s, %(netDeviceSelector)s}[%(rateInterval)s]) + ) + ||| % $._config, + }, ], }, ], From 0a31248d7bc9267cde66effc33cb020cf2074f56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:08:48 +0100 Subject: [PATCH 099/109] build(deps): bump github.com/prometheus/exporter-toolkit (#3560) Bumps [github.com/prometheus/exporter-toolkit](https://github.com/prometheus/exporter-toolkit) from 0.15.0 to 0.15.1. - [Release notes](https://github.com/prometheus/exporter-toolkit/releases) - [Commits](https://github.com/prometheus/exporter-toolkit/compare/v0.15.0...v0.15.1) --- updated-dependencies: - dependency-name: github.com/prometheus/exporter-toolkit dependency-version: 0.15.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d12e093b..2d7db779 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.5 - github.com/prometheus/exporter-toolkit v0.15.0 + github.com/prometheus/exporter-toolkit v0.15.1 github.com/prometheus/procfs v0.20.0 github.com/safchain/ethtool v0.7.0 golang.org/x/sys v0.41.0 @@ -58,6 +58,6 @@ require ( golang.org/x/oauth2 v0.34.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/text v0.32.0 // indirect - golang.org/x/time v0.13.0 // indirect + golang.org/x/time v0.14.0 // indirect google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/go.sum b/go.sum index e999df97..7fb5e88b 100644 --- a/go.sum +++ b/go.sum @@ -86,8 +86,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= -github.com/prometheus/exporter-toolkit v0.15.0 h1:Pcle5sSViwR1x0gdPd0wtYrPQENBieQAM7TmT0qtb2U= -github.com/prometheus/exporter-toolkit v0.15.0/go.mod h1:OyRWd2iTo6Xge9Kedvv0IhCrJSBu36JCfJ2yVniRIYk= +github.com/prometheus/exporter-toolkit v0.15.1 h1:XrGGr/qWl8Gd+pqJqTkNLww9eG8vR/CoRk0FubOKfLE= +github.com/prometheus/exporter-toolkit v0.15.1/go.mod h1:P/NR9qFRGbCFgpklyhix9F6v6fFr/VQB/CVsrMDGKo4= github.com/prometheus/procfs v0.20.0 h1:AA7aCvjxwAquZAlonN7888f2u4IN8WVeFgBi4k82M4Q= github.com/prometheus/procfs v0.20.0/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= @@ -131,8 +131,8 @@ golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= -golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= -golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 4687bcce227145d8216b119fa223fd99851483a6 Mon Sep 17 00:00:00 2001 From: Shashwat Hiregoudar Date: Wed, 4 Mar 2026 14:07:25 +0530 Subject: [PATCH 100/109] nvme: Add namespace metrics (#3360) Add nvme namespace metrics. --------- Signed-off-by: Shashwat Hiregoudar Signed-off-by: Shashwat Hiregoudar Co-authored-by: Shashwat Hiregoudar --- collector/fixtures/e2e-64k-page-output.txt | 17 ++- collector/fixtures/e2e-output.txt | 17 ++- collector/fixtures/sys.ttar | 26 +++++ collector/nvme_linux.go | 123 +++++++++++++++++++-- go.mod | 2 +- go.sum | 4 +- 6 files changed, 173 insertions(+), 16 deletions(-) diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index db384df6..b860beca 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -2825,7 +2825,22 @@ node_nfsd_server_rpcs_total 18628 node_nfsd_server_threads 8 # HELP node_nvme_info Non-numeric data from /sys/class/nvme/, value is always 1. # TYPE node_nvme_info gauge -node_nvme_info{device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +node_nvme_info{cntlid="1997",device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +# HELP node_nvme_namespace_capacity_bytes Capacity of the NVMe namespace in bytes. Computed as namespace_size * namespace_logical_block_size +# TYPE node_nvme_namespace_capacity_bytes gauge +node_nvme_namespace_capacity_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_info Information about NVMe namespaces. Value is always 1 +# TYPE node_nvme_namespace_info gauge +node_nvme_namespace_info{ana_state="optimized",device="nvme0",nsid="0"} 1 +# HELP node_nvme_namespace_logical_block_size_bytes Logical block size of the NVMe namespace in bytes. Usually 4Kb. Available in /sys/class/nvme///queue/logical_block_size +# TYPE node_nvme_namespace_logical_block_size_bytes gauge +node_nvme_namespace_logical_block_size_bytes{device="nvme0",nsid="0"} 4096 +# HELP node_nvme_namespace_size_bytes Size of the NVMe namespace in bytes. Available in /sys/class/nvme///size +# TYPE node_nvme_namespace_size_bytes gauge +node_nvme_namespace_size_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_used_bytes Used space of the NVMe namespace in bytes. Available in /sys/class/nvme///nuse +# TYPE node_nvme_namespace_used_bytes gauge +node_nvme_namespace_used_bytes{device="nvme0",nsid="0"} 2e+12 # HELP node_os_info A metric with a constant '1' value labeled by build_id, id, id_like, image_id, image_version, name, pretty_name, variant, variant_id, version, version_codename, version_id. # TYPE node_os_info gauge node_os_info{build_id="",id="ubuntu",id_like="debian",image_id="",image_version="",name="Ubuntu",pretty_name="Ubuntu 20.04.2 LTS",variant="",variant_id="",version="20.04.2 LTS (Focal Fossa)",version_codename="focal",version_id="20.04"} 1 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 9d59cab3..7ac06c0f 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -2857,7 +2857,22 @@ node_nfsd_server_rpcs_total 18628 node_nfsd_server_threads 8 # HELP node_nvme_info Non-numeric data from /sys/class/nvme/, value is always 1. # TYPE node_nvme_info gauge -node_nvme_info{device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +node_nvme_info{cntlid="1997",device="nvme0",firmware_revision="1B2QEXP7",model="Samsung SSD 970 PRO 512GB",serial="S680HF8N190894I",state="live"} 1 +# HELP node_nvme_namespace_capacity_bytes Capacity of the NVMe namespace in bytes. Computed as namespace_size * namespace_logical_block_size +# TYPE node_nvme_namespace_capacity_bytes gauge +node_nvme_namespace_capacity_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_info Information about NVMe namespaces. Value is always 1 +# TYPE node_nvme_namespace_info gauge +node_nvme_namespace_info{ana_state="optimized",device="nvme0",nsid="0"} 1 +# HELP node_nvme_namespace_logical_block_size_bytes Logical block size of the NVMe namespace in bytes. Usually 4Kb. Available in /sys/class/nvme///queue/logical_block_size +# TYPE node_nvme_namespace_logical_block_size_bytes gauge +node_nvme_namespace_logical_block_size_bytes{device="nvme0",nsid="0"} 4096 +# HELP node_nvme_namespace_size_bytes Size of the NVMe namespace in bytes. Available in /sys/class/nvme///size +# TYPE node_nvme_namespace_size_bytes gauge +node_nvme_namespace_size_bytes{device="nvme0",nsid="0"} 1.6e+13 +# HELP node_nvme_namespace_used_bytes Used space of the NVMe namespace in bytes. Available in /sys/class/nvme///nuse +# TYPE node_nvme_namespace_used_bytes gauge +node_nvme_namespace_used_bytes{device="nvme0",nsid="0"} 2e+12 # HELP node_os_info A metric with a constant '1' value labeled by build_id, id, id_like, image_id, image_version, name, pretty_name, variant, variant_id, version, version_codename, version_id. # TYPE node_os_info gauge node_os_info{build_id="",id="ubuntu",id_like="debian",image_id="",image_version="",name="Ubuntu",pretty_name="Ubuntu 20.04.2 LTS",variant="",variant_id="",version="20.04.2 LTS (Focal Fossa)",version_codename="focal",version_id="20.04"} 1 diff --git a/collector/fixtures/sys.ttar b/collector/fixtures/sys.ttar index 345cbcd2..f8a453fe 100644 --- a/collector/fixtures/sys.ttar +++ b/collector/fixtures/sys.ttar @@ -2229,6 +2229,32 @@ Lines: 1 live Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/class/nvme/nvme0/nvme0c0n0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/ana_state +Lines: 1 +optimized +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/size +Lines: 1 +3906250000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/nuse +Lines: 1 +488281250 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/class/nvme/nvme0/nvme0c0n0/queue +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/class/nvme/nvme0/nvme0c0n0/queue/logical_block_size +Lines: 1 +4096 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/class/power_supply Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/collector/nvme_linux.go b/collector/nvme_linux.go index 6de1b936..9cf5a803 100644 --- a/collector/nvme_linux.go +++ b/collector/nvme_linux.go @@ -26,8 +26,14 @@ import ( ) type nvmeCollector struct { - fs sysfs.FS - logger *slog.Logger + fs sysfs.FS + logger *slog.Logger + namespaceInfo *prometheus.Desc + namespaceCapacityBytes *prometheus.Desc + namespaceSizeBytes *prometheus.Desc + namespaceUsedBytes *prometheus.Desc + namespaceLogicalBlockSizeBytes *prometheus.Desc + info *prometheus.Desc } func init() { @@ -41,9 +47,51 @@ func NewNVMeCollector(logger *slog.Logger) (Collector, error) { return nil, fmt.Errorf("failed to open sysfs: %w", err) } + info := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "info"), + "Non-numeric data from /sys/class/nvme/, value is always 1.", + []string{"device", "firmware_revision", "model", "serial", "state", "cntlid"}, + nil, + ) + namespaceInfo := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_info"), + "Information about NVMe namespaces. Value is always 1", + []string{"device", "nsid", "ana_state"}, nil, + ) + + namespaceCapacityBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_capacity_bytes"), + "Capacity of the NVMe namespace in bytes. Computed as namespace_size * namespace_logical_block_size", + []string{"device", "nsid"}, nil, + ) + + namespaceSizeBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_size_bytes"), + "Size of the NVMe namespace in bytes. Available in /sys/class/nvme///size", + []string{"device", "nsid"}, nil, + ) + + namespaceUsedBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_used_bytes"), + "Used space of the NVMe namespace in bytes. Available in /sys/class/nvme///nuse", + []string{"device", "nsid"}, nil, + ) + + namespaceLogicalBlockSizeBytes := prometheus.NewDesc( + prometheus.BuildFQName(namespace, "nvme", "namespace_logical_block_size_bytes"), + "Logical block size of the NVMe namespace in bytes. Usually 4Kb. Available in /sys/class/nvme///queue/logical_block_size", + []string{"device", "nsid"}, nil, + ) + return &nvmeCollector{ - fs: fs, - logger: logger, + fs: fs, + logger: logger, + namespaceInfo: namespaceInfo, + namespaceCapacityBytes: namespaceCapacityBytes, + namespaceSizeBytes: namespaceSizeBytes, + namespaceUsedBytes: namespaceUsedBytes, + namespaceLogicalBlockSizeBytes: namespaceLogicalBlockSizeBytes, + info: info, }, nil } @@ -58,14 +106,67 @@ func (c *nvmeCollector) Update(ch chan<- prometheus.Metric) error { } for _, device := range devices { - infoDesc := prometheus.NewDesc( - prometheus.BuildFQName(namespace, "nvme", "info"), - "Non-numeric data from /sys/class/nvme/, value is always 1.", - []string{"device", "firmware_revision", "model", "serial", "state"}, - nil, + // Export device-level metrics + ch <- prometheus.MustNewConstMetric( + c.info, + prometheus.GaugeValue, + 1.0, + device.Name, + device.FirmwareRevision, + device.Model, + device.Serial, + device.State, + device.ControllerID, ) - infoValue := 1.0 - ch <- prometheus.MustNewConstMetric(infoDesc, prometheus.GaugeValue, infoValue, device.Name, device.FirmwareRevision, device.Model, device.Serial, device.State) + + // Export namespace-level metrics + for _, namespace := range device.Namespaces { + // Namespace info metric + ch <- prometheus.MustNewConstMetric( + c.namespaceInfo, + prometheus.GaugeValue, + 1.0, + device.Name, + namespace.ID, + namespace.ANAState, + ) + + // Namespace capacity in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceCapacityBytes, + prometheus.GaugeValue, + float64(namespace.CapacityBytes), + device.Name, + namespace.ID, + ) + + // Namespace size in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceSizeBytes, + prometheus.GaugeValue, + float64(namespace.SizeBytes), + device.Name, + namespace.ID, + ) + + // Namespace used space in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceUsedBytes, + prometheus.GaugeValue, + float64(namespace.UsedBytes), + device.Name, + namespace.ID, + ) + + // Namespace logical block size in bytes + ch <- prometheus.MustNewConstMetric( + c.namespaceLogicalBlockSizeBytes, + prometheus.GaugeValue, + float64(namespace.LogicalBlockSize), + device.Name, + namespace.ID, + ) + } } return nil diff --git a/go.mod b/go.mod index 2d7db779..55b63d72 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.67.5 github.com/prometheus/exporter-toolkit v0.15.1 - github.com/prometheus/procfs v0.20.0 + github.com/prometheus/procfs v0.20.1 github.com/safchain/ethtool v0.7.0 golang.org/x/sys v0.41.0 howett.net/plist v1.0.1 diff --git a/go.sum b/go.sum index 7fb5e88b..835b9d93 100644 --- a/go.sum +++ b/go.sum @@ -88,8 +88,8 @@ github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTU github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/exporter-toolkit v0.15.1 h1:XrGGr/qWl8Gd+pqJqTkNLww9eG8vR/CoRk0FubOKfLE= github.com/prometheus/exporter-toolkit v0.15.1/go.mod h1:P/NR9qFRGbCFgpklyhix9F6v6fFr/VQB/CVsrMDGKo4= -github.com/prometheus/procfs v0.20.0 h1:AA7aCvjxwAquZAlonN7888f2u4IN8WVeFgBi4k82M4Q= -github.com/prometheus/procfs v0.20.0/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/safchain/ethtool v0.7.0 h1:rlJzfDetsVvT61uz8x1YIcFn12akMfuPulHtZjtb7Is= From fe42c899ae98d94574c960240b8578b9da398135 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:37:55 +0100 Subject: [PATCH 101/109] build(deps): bump github.com/mdlayher/netlink from 1.8.0 to 1.9.0 (#3563) Bumps [github.com/mdlayher/netlink](https://github.com/mdlayher/netlink) from 1.8.0 to 1.9.0. - [Release notes](https://github.com/mdlayher/netlink/releases) - [Changelog](https://github.com/mdlayher/netlink/blob/main/CHANGELOG.md) - [Commits](https://github.com/mdlayher/netlink/compare/v1.8.0...v1.9.0) --- updated-dependencies: - dependency-name: github.com/mdlayher/netlink dependency-version: 1.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 55b63d72..055a15ab 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/lufia/iostat v1.2.1 github.com/mattn/go-xmlrpc v0.0.3 github.com/mdlayher/ethtool v0.5.1 - github.com/mdlayher/netlink v1.8.0 + github.com/mdlayher/netlink v1.9.0 github.com/mdlayher/wifi v0.7.2 github.com/opencontainers/selinux v1.13.1 github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 @@ -53,11 +53,11 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect - golang.org/x/crypto v0.46.0 // indirect - golang.org/x/net v0.48.0 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/oauth2 v0.34.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/protobuf v1.36.11 // indirect ) diff --git a/go.sum b/go.sum index 835b9d93..480f8d17 100644 --- a/go.sum +++ b/go.sum @@ -60,8 +60,8 @@ github.com/mdlayher/ethtool v0.5.1 h1:U4GThY6WgNJUJsMrUzBmoOTdQHFWxFPTHTeNnn3GCv github.com/mdlayher/ethtool v0.5.1/go.mod h1:Pz39PaAy96Ea1SrCvEO/pPEAeULvRJjO6zspuEMhJy4= github.com/mdlayher/genetlink v1.3.2 h1:KdrNKe+CTu+IbZnm/GVUMXSqBBLqcGpRDa0xkQy56gw= github.com/mdlayher/genetlink v1.3.2/go.mod h1:tcC3pkCrPUGIKKsCsp0B3AdaaKuHtaxoJRz3cc+528o= -github.com/mdlayher/netlink v1.8.0 h1:e7XNIYJKD7hUct3Px04RuIGJbBxy1/c4nX7D5YyvvlM= -github.com/mdlayher/netlink v1.8.0/go.mod h1:UhgKXUlDQhzb09DrCl2GuRNEglHmhYoWAHid9HK3594= +github.com/mdlayher/netlink v1.9.0 h1:G8+GLq2x3v4D4MVIqDdNUhTUC7TKiCy/6MDkmItfKco= +github.com/mdlayher/netlink v1.9.0/go.mod h1:YBnl5BXsCoRuwBjKKlZ+aYmEoq0r12FDA/3JC+94KDg= github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= @@ -117,10 +117,10 @@ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= @@ -129,8 +129,8 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= From 9fd21e8122ce529c9df4851775d8d0f4f9dff7bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:38:27 +0100 Subject: [PATCH 102/109] build(deps): bump vmactions/solaris-vm from 1.2.7 to 1.3.1 (#3569) Bumps [vmactions/solaris-vm](https://github.com/vmactions/solaris-vm) from 1.2.7 to 1.3.1. - [Release notes](https://github.com/vmactions/solaris-vm/releases) - [Commits](https://github.com/vmactions/solaris-vm/compare/37d40b6627e80434541454b42841caa4cc77d0cf...69d382b4a775b25ea5955e6c1730e9d05047ca0d) --- updated-dependencies: - dependency-name: vmactions/solaris-vm dependency-version: 1.3.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 42cda0c3..1eda8706 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -222,7 +222,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/solaris-vm@37d40b6627e80434541454b42841caa4cc77d0cf # v1.2.7 + uses: vmactions/solaris-vm@69d382b4a775b25ea5955e6c1730e9d05047ca0d # v1.3.1 with: copyback: false envs: 'GO_VERSION_SOLARIS' From c691ef53e1723d95bbac6e7add6072b5ed76ae86 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Thu, 5 Mar 2026 15:12:41 +0100 Subject: [PATCH 103/109] Make BSD Go versions consistent (#3570) Use official Go binary download for FreeBSD and Darwin. This allows us to use the same Go version across all UNIX pipelines. * Add architecture handling. Signed-off-by: Ben Kochie --- .github/workflows/bsd.yml | 47 +++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 1eda8706..97dec663 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -13,11 +13,7 @@ permissions: env: GNU_TAR_VERSION: "1.35" - GO_VERSION_DRAGONFLY: "1.26.0" - GO_VERSION_FREEBSD: "126" - GO_VERSION_NETBSD: "1.26.0" - GO_VERSION_OPENBSD: "1.26.0" - GO_VERSION_SOLARIS: "1.26.0" + GO_VERSION: "1.26.0" # To spin up one of the VMs below, see the "Debug Shell" section here: https://github.com/vmactions jobs: @@ -32,7 +28,7 @@ jobs: with: release: "15.0" copyback: false - envs: 'GO_VERSION_FREEBSD GNU_TAR_VERSION' + envs: 'GO_VERSION GNU_TAR_VERSION' usesh: true prepare: | pkg update -f @@ -41,7 +37,6 @@ jobs: git \ gmake \ gnugrep \ - go${GO_VERSION_FREEBSD} \ gsed \ gtar \ python \ @@ -50,7 +45,12 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - ln -s $(which go${GO_VERSION_FREEBSD}) $(pwd)/bin/go + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.freebsd-${GOARCH}.tar.gz" + wget https://go.dev/dl/${GOGZ} + gtar xzf ${GOGZ} + ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed @@ -79,7 +79,7 @@ jobs: uses: vmactions/openbsd-vm@7fd5a3e251db9d8bdff2f34aae11a43b6be5ad60 # v1.2.4 with: copyback: false - envs: 'GO_VERSION_OPENBSD GNU_TAR_VERSION' + envs: 'GO_VERSION GNU_TAR_VERSION' usesh: true prepare: | pkg_add -u @@ -96,7 +96,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_OPENBSD}.openbsd-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.openbsd-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -128,7 +130,7 @@ jobs: uses: vmactions/netbsd-vm@88a20b128e1d7fa463bb361afe4167733c55b86a # v1.3.5 with: copyback: false - envs: 'GO_VERSION_NETBSD GNU_TAR_VERSION' + envs: 'GO_VERSION GNU_TAR_VERSION' usesh: true prepare: | /usr/sbin/pkg_add -u \ @@ -143,7 +145,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_NETBSD}.netbsd-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.netbsd-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -175,7 +179,7 @@ jobs: uses: vmactions/dragonflybsd-vm@00c5014f559e3d4dc2aca8c69d3d7e550db8bc36 # v1.2.2 with: copyback: false - envs: 'GO_VERSION_DRAGONFLY' + envs: 'GO_VERSION' usesh: true prepare: | pkg update && pkg upgrade -y @@ -192,7 +196,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_DRAGONFLY}.dragonfly-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.dragonfly-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -225,7 +231,7 @@ jobs: uses: vmactions/solaris-vm@69d382b4a775b25ea5955e6c1730e9d05047ca0d # v1.3.1 with: copyback: false - envs: 'GO_VERSION_SOLARIS' + envs: 'GO_VERSION' usesh: true prepare: | pkg install \ @@ -241,7 +247,9 @@ jobs: echo "::group::Setup prerequisites" set -eu mkdir bin - GOGZ="go${GO_VERSION_SOLARIS}.solaris-amd64.tar.gz" + GOARCH=$(uname -m) + if [ "${GOARCH}" = "i86pc" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.solaris-${GOARCH}.tar.gz" wget https://go.dev/dl/${GOGZ} gtar xzf ${GOGZ} ln -s $(pwd)/go/bin/go $(pwd)/bin/go @@ -289,13 +297,18 @@ jobs: make \ gnu-sed \ gnu-tar \ - go \ python3 - name: test-e2e run: | echo "::group::Setup prerequisites" set -eu mkdir bin + GOARCH=$(uname -m) + if [ "${GOARCH}" = "x86_64" ] ; then GOARCH="amd64" ; fi + GOGZ="go${GO_VERSION}.darwin-${GOARCH}.tar.gz" + wget https://go.dev/dl/${GOGZ} + gtar xzf ${GOGZ} + ln -s $(pwd)/go/bin/go $(pwd)/bin/go ln -s $(which ggrep) $(pwd)/bin/grep ln -s $(which gmake) $(pwd)/bin/make ln -s $(which gsed) $(pwd)/bin/sed From fa72cf99e755ff523c4284ab190a7f12a79ed3c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 15:52:07 +0100 Subject: [PATCH 104/109] build(deps): bump vmactions/dragonflybsd-vm from 1.2.2 to 1.2.6 (#3565) Bumps [vmactions/dragonflybsd-vm](https://github.com/vmactions/dragonflybsd-vm) from 1.2.2 to 1.2.6. - [Release notes](https://github.com/vmactions/dragonflybsd-vm/releases) - [Commits](https://github.com/vmactions/dragonflybsd-vm/compare/00c5014f559e3d4dc2aca8c69d3d7e550db8bc36...04601322b25fa8eb14f0394e46e1103084ea0199) --- updated-dependencies: - dependency-name: vmactions/dragonflybsd-vm dependency-version: 1.2.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 97dec663..b136ffa6 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -176,7 +176,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/dragonflybsd-vm@00c5014f559e3d4dc2aca8c69d3d7e550db8bc36 # v1.2.2 + uses: vmactions/dragonflybsd-vm@04601322b25fa8eb14f0394e46e1103084ea0199 # v1.2.6 with: copyback: false envs: 'GO_VERSION' From fa7498cb5cb607425a4ca659918740653d576dad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 17:22:48 +0100 Subject: [PATCH 105/109] build(deps): bump vmactions/netbsd-vm from 1.3.5 to 1.3.6 (#3566) Bumps [vmactions/netbsd-vm](https://github.com/vmactions/netbsd-vm) from 1.3.5 to 1.3.6. - [Release notes](https://github.com/vmactions/netbsd-vm/releases) - [Commits](https://github.com/vmactions/netbsd-vm/compare/88a20b128e1d7fa463bb361afe4167733c55b86a...e04aec09540429f9cebb0e7941f7cd0c0fc3b44f) --- updated-dependencies: - dependency-name: vmactions/netbsd-vm dependency-version: 1.3.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index b136ffa6..609008ae 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -127,7 +127,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/netbsd-vm@88a20b128e1d7fa463bb361afe4167733c55b86a # v1.3.5 + uses: vmactions/netbsd-vm@e04aec09540429f9cebb0e7941f7cd0c0fc3b44f # v1.3.6 with: copyback: false envs: 'GO_VERSION GNU_TAR_VERSION' From a1cbf814a096aed6bd2244baa7778f40262591dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 15:26:06 +0100 Subject: [PATCH 106/109] build(deps): bump vmactions/freebsd-vm from 1.3.8 to 1.4.2 (#3567) Bumps [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) from 1.3.8 to 1.4.2. - [Release notes](https://github.com/vmactions/freebsd-vm/releases) - [Commits](https://github.com/vmactions/freebsd-vm/compare/ba6bedee4a4884da2b782a41a64329a1c8e42ffb...c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e) --- updated-dependencies: - dependency-name: vmactions/freebsd-vm dependency-version: 1.4.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bsd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 609008ae..1a455901 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -24,7 +24,7 @@ jobs: - name: Checkout the repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: test-e2e - uses: vmactions/freebsd-vm@ba6bedee4a4884da2b782a41a64329a1c8e42ffb # v1.3.8 + uses: vmactions/freebsd-vm@c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e # v1.4.2 with: release: "15.0" copyback: false From 1a4cac6cc10a009c5b9b2c70459bf6988b06cf64 Mon Sep 17 00:00:00 2001 From: Ananth Date: Fri, 13 Mar 2026 19:32:59 +0530 Subject: [PATCH 107/109] bcachefs collector (#3523) Add support for collecting and reporting metrics from bcachefs filesystems. Signed-off-by: Ananth Bhaskararaman --- collector/bcachefs_linux.go | 275 +++++ collector/fixtures/e2e-64k-page-output.txt | 592 ++++++++++ collector/fixtures/e2e-output.txt | 592 ++++++++++ collector/fixtures/sys.ttar | 1176 +++++++++++++++++++- end-to-end-test.sh | 1 + 5 files changed, 2631 insertions(+), 5 deletions(-) create mode 100644 collector/bcachefs_linux.go diff --git a/collector/bcachefs_linux.go b/collector/bcachefs_linux.go new file mode 100644 index 00000000..08aa47b2 --- /dev/null +++ b/collector/bcachefs_linux.go @@ -0,0 +1,275 @@ +// Copyright The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !nobcachefs + +package collector + +import ( + "fmt" + "log/slog" + "os" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/procfs/bcachefs" +) + +const subsystem = "bcachefs" + +var ( + bcachefsInfoDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "info"), + "Filesystem information.", + []string{"uuid"}, + nil, + ) + bcachefsBtreeCacheSizeBytes = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "btree_cache_size_bytes"), + "Btree cache memory usage in bytes.", + []string{"uuid"}, + nil, + ) + bcachefsCompressionCompressedBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "compression_compressed_bytes"), + "Compressed size by algorithm.", + []string{"uuid", "algorithm"}, + nil, + ) + bcachefsCompressionUncompressedBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "compression_uncompressed_bytes"), + "Uncompressed size by algorithm.", + []string{"uuid", "algorithm"}, + nil, + ) + bcachefsErrorsTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "errors_total"), + "Error count by error type.", + []string{"uuid", "error_type"}, + nil, + ) + bcachefsBtreeWritesTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "btree_writes_total"), + "Number of btree writes by type.", + []string{"uuid", "type"}, + nil, + ) + bcachefsBtreeWriteAverageSizeBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "btree_write_average_size_bytes"), + "Average btree write size by type.", + []string{"uuid", "type"}, + nil, + ) + bcachefsDeviceInfoDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_info"), + "Device information.", + []string{"uuid", "device", "label", "state"}, + nil, + ) + bcachefsDeviceBucketSizeBytesDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_bucket_size_bytes"), + "Bucket size in bytes.", + []string{"uuid", "device"}, + nil, + ) + bcachefsDeviceBucketsDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_buckets"), + "Total number of buckets.", + []string{"uuid", "device"}, + nil, + ) + bcachefsDeviceDurabilityDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_durability"), + "Device durability setting.", + []string{"uuid", "device"}, + nil, + ) + bcachefsDeviceIODoneBytesTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_io_done_bytes_total"), + "IO bytes by operation type and data type.", + []string{"uuid", "device", "operation", "data_type"}, + nil, + ) + bcachefsDeviceIOErrorsTotalDesc = prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, "device_io_errors_total"), + "IO errors by error type.", + []string{"uuid", "device", "type"}, + nil, + ) +) + +func init() { + registerCollector(subsystem, defaultEnabled, NewBcachefsCollector) +} + +// bcachefsCollector collects metrics from bcachefs filesystems. +type bcachefsCollector struct { + fs bcachefs.FS + logger *slog.Logger +} + +// NewBcachefsCollector returns a new Collector exposing bcachefs statistics. +func NewBcachefsCollector(logger *slog.Logger) (Collector, error) { + fs, err := bcachefs.NewFS(*sysPath) + if err != nil { + return nil, fmt.Errorf("failed to open sysfs: %w", err) + } + + return &bcachefsCollector{ + fs: fs, + logger: logger, + }, nil +} + +// Update retrieves and exports bcachefs statistics. +func (c *bcachefsCollector) Update(ch chan<- prometheus.Metric) error { + stats, err := c.fs.Stats() + if err != nil { + if os.IsNotExist(err) { + c.logger.Debug("bcachefs sysfs path does not exist", "path", sysFilePath("fs/bcachefs")) + return ErrNoData + } + return fmt.Errorf("failed to retrieve bcachefs stats: %w", err) + } + + if len(stats) == 0 { + return ErrNoData + } + + for _, s := range stats { + uuid := s.UUID + + ch <- prometheus.MustNewConstMetric( + bcachefsInfoDesc, + prometheus.GaugeValue, + 1, + uuid, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsBtreeCacheSizeBytes, + prometheus.GaugeValue, + float64(s.BtreeCacheSizeBytes), + uuid, + ) + + for algorithm, comp := range s.Compression { + ch <- prometheus.MustNewConstMetric( + bcachefsCompressionCompressedBytesDesc, + prometheus.GaugeValue, + float64(comp.CompressedBytes), + uuid, algorithm, + ) + ch <- prometheus.MustNewConstMetric( + bcachefsCompressionUncompressedBytesDesc, + prometheus.GaugeValue, + float64(comp.UncompressedBytes), + uuid, algorithm, + ) + } + + for errorType, errStats := range s.Errors { + ch <- prometheus.MustNewConstMetric( + bcachefsErrorsTotalDesc, + prometheus.CounterValue, + float64(errStats.Count), + uuid, errorType, + ) + } + + for counterName, counterStats := range s.Counters { + metricName := SanitizeMetricName(counterName) + "_total" + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName(namespace, subsystem, metricName), + fmt.Sprintf("Bcachefs counter %s since filesystem creation.", counterName), + []string{"uuid"}, + nil, + ), + prometheus.CounterValue, + float64(counterStats.SinceFilesystemCreation), + uuid, + ) + } + + for writeType, writeStats := range s.BtreeWrites { + ch <- prometheus.MustNewConstMetric( + bcachefsBtreeWritesTotalDesc, + prometheus.CounterValue, + float64(writeStats.Count), + uuid, writeType, + ) + ch <- prometheus.MustNewConstMetric( + bcachefsBtreeWriteAverageSizeBytesDesc, + prometheus.GaugeValue, + float64(writeStats.SizeBytes), + uuid, writeType, + ) + } + + for device, devStats := range s.Devices { + if devStats == nil { + continue + } + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceInfoDesc, + prometheus.GaugeValue, + 1, + uuid, device, devStats.Label, devStats.State, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceBucketSizeBytesDesc, + prometheus.GaugeValue, + float64(devStats.BucketSizeBytes), + uuid, device, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceBucketsDesc, + prometheus.GaugeValue, + float64(devStats.Buckets), + uuid, device, + ) + + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceDurabilityDesc, + prometheus.GaugeValue, + float64(devStats.Durability), + uuid, device, + ) + + for op, dataTypes := range devStats.IODone { + for dataType, value := range dataTypes { + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceIODoneBytesTotalDesc, + prometheus.CounterValue, + float64(value), + uuid, device, op, dataType, + ) + } + } + + for errorType, value := range devStats.IOErrors { + ch <- prometheus.MustNewConstMetric( + bcachefsDeviceIOErrorsTotalDesc, + prometheus.CounterValue, + float64(value), + uuid, device, errorType, + ) + } + } + } + + return nil +} diff --git a/collector/fixtures/e2e-64k-page-output.txt b/collector/fixtures/e2e-64k-page-output.txt index b860beca..8065c5fe 100644 --- a/collector/fixtures/e2e-64k-page-output.txt +++ b/collector/fixtures/e2e-64k-page-output.txt @@ -144,6 +144,597 @@ node_bcache_writeback_rate_proportional_term{backing_device="bdev0",uuid="deaddd # HELP node_bcache_written_bytes_total Sum of all data that has been written to the cache. # TYPE node_bcache_written_bytes_total counter node_bcache_written_bytes_total{cache_device="cache0",uuid="deaddd54-c735-46d5-868e-f331c5fd7c74"} 0 +# HELP node_bcachefs_accounting_key_to_wb_slowpath_total Bcachefs counter accounting_key_to_wb_slowpath since filesystem creation. +# TYPE node_bcachefs_accounting_key_to_wb_slowpath_total counter +node_bcachefs_accounting_key_to_wb_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.4105502e+07 +# HELP node_bcachefs_bkey_pack_pos_fail_total Bcachefs counter bkey_pack_pos_fail since filesystem creation. +# TYPE node_bcachefs_bkey_pack_pos_fail_total counter +node_bcachefs_bkey_pack_pos_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_btree_cache_cannibalize_lock_fail_total Bcachefs counter btree_cache_cannibalize_lock_fail since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_fail_total counter +node_bcachefs_btree_cache_cannibalize_lock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 24213 +# HELP node_bcachefs_btree_cache_cannibalize_lock_total Bcachefs counter btree_cache_cannibalize_lock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_total counter +node_bcachefs_btree_cache_cannibalize_lock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.2061408e+07 +# HELP node_bcachefs_btree_cache_cannibalize_total Bcachefs counter btree_cache_cannibalize since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_total counter +node_bcachefs_btree_cache_cannibalize_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.6587339e+07 +# HELP node_bcachefs_btree_cache_cannibalize_unlock_total Bcachefs counter btree_cache_cannibalize_unlock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_unlock_total counter +node_bcachefs_btree_cache_cannibalize_unlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.6260384e+07 +# HELP node_bcachefs_btree_cache_reap_total Bcachefs counter btree_cache_reap since filesystem creation. +# TYPE node_bcachefs_btree_cache_reap_total counter +node_bcachefs_btree_cache_reap_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9068459e+07 +# HELP node_bcachefs_btree_cache_scan_total Bcachefs counter btree_cache_scan since filesystem creation. +# TYPE node_bcachefs_btree_cache_scan_total counter +node_bcachefs_btree_cache_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 427545 +# HELP node_bcachefs_btree_cache_size_bytes Btree cache memory usage in bytes. +# TYPE node_bcachefs_btree_cache_size_bytes gauge +node_bcachefs_btree_cache_size_bytes{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_btree_key_cache_fill_total Bcachefs counter btree_key_cache_fill since filesystem creation. +# TYPE node_bcachefs_btree_key_cache_fill_total counter +node_bcachefs_btree_key_cache_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.69308144e+08 +# HELP node_bcachefs_btree_node_alloc_total Bcachefs counter btree_node_alloc since filesystem creation. +# TYPE node_bcachefs_btree_node_alloc_total counter +node_bcachefs_btree_node_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.665587e+06 +# HELP node_bcachefs_btree_node_compact_total Bcachefs counter btree_node_compact since filesystem creation. +# TYPE node_bcachefs_btree_node_compact_total counter +node_bcachefs_btree_node_compact_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.554425e+06 +# HELP node_bcachefs_btree_node_free_total Bcachefs counter btree_node_free since filesystem creation. +# TYPE node_bcachefs_btree_node_free_total counter +node_bcachefs_btree_node_free_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4112667e+07 +# HELP node_bcachefs_btree_node_merge_attempt_total Bcachefs counter btree_node_merge_attempt since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_attempt_total counter +node_bcachefs_btree_node_merge_attempt_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5868895e+07 +# HELP node_bcachefs_btree_node_merge_total Bcachefs counter btree_node_merge since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_total counter +node_bcachefs_btree_node_merge_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 559684 +# HELP node_bcachefs_btree_node_read_total Bcachefs counter btree_node_read since filesystem creation. +# TYPE node_bcachefs_btree_node_read_total counter +node_bcachefs_btree_node_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.0225874e+07 +# HELP node_bcachefs_btree_node_rewrite_total Bcachefs counter btree_node_rewrite since filesystem creation. +# TYPE node_bcachefs_btree_node_rewrite_total counter +node_bcachefs_btree_node_rewrite_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.130316e+06 +# HELP node_bcachefs_btree_node_set_root_total Bcachefs counter btree_node_set_root since filesystem creation. +# TYPE node_bcachefs_btree_node_set_root_total counter +node_bcachefs_btree_node_set_root_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 77958 +# HELP node_bcachefs_btree_node_split_total Bcachefs counter btree_node_split since filesystem creation. +# TYPE node_bcachefs_btree_node_split_total counter +node_bcachefs_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 710571 +# HELP node_bcachefs_btree_node_write_total Bcachefs counter btree_node_write since filesystem creation. +# TYPE node_bcachefs_btree_node_write_total counter +node_bcachefs_btree_node_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4796849e+08 +# HELP node_bcachefs_btree_path_relock_fail_total Bcachefs counter btree_path_relock_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_relock_fail_total counter +node_bcachefs_btree_path_relock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.6213103e+07 +# HELP node_bcachefs_btree_path_upgrade_fail_total Bcachefs counter btree_path_upgrade_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_upgrade_fail_total counter +node_bcachefs_btree_path_upgrade_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.103667e+06 +# HELP node_bcachefs_btree_reserve_get_fail_total Bcachefs counter btree_reserve_get_fail since filesystem creation. +# TYPE node_bcachefs_btree_reserve_get_fail_total counter +node_bcachefs_btree_reserve_get_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11706 +# HELP node_bcachefs_btree_write_average_size_bytes Average btree write size by type. +# TYPE node_bcachefs_btree_write_average_size_bytes gauge +node_bcachefs_btree_write_average_size_bytes{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 720 +node_bcachefs_btree_write_average_size_bytes{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 28876 +node_bcachefs_btree_write_average_size_bytes{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 102400 +node_bcachefs_btree_write_average_size_bytes{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1290 +node_bcachefs_btree_write_average_size_bytes{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 697 +# HELP node_bcachefs_btree_writes_total Number of btree writes by type. +# TYPE node_bcachefs_btree_writes_total counter +node_bcachefs_btree_writes_total{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 14401 +node_bcachefs_btree_writes_total{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.055926e+06 +node_bcachefs_btree_writes_total{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.298401e+06 +node_bcachefs_btree_writes_total{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.035363e+06 +node_bcachefs_btree_writes_total{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.6903805e+07 +# HELP node_bcachefs_bucket_alloc_fail_total Bcachefs counter bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_fail_total counter +node_bcachefs_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1156091e+07 +# HELP node_bcachefs_bucket_alloc_from_stripe_total Bcachefs counter bucket_alloc_from_stripe since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_from_stripe_total counter +node_bcachefs_bucket_alloc_from_stripe_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_bucket_alloc_total Bcachefs counter bucket_alloc since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_total counter +node_bcachefs_bucket_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7363674e+07 +# HELP node_bcachefs_bucket_discard_fast_total Bcachefs counter bucket_discard_fast since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_total counter +node_bcachefs_bucket_discard_fast_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 10204 +# HELP node_bcachefs_bucket_discard_fast_worker_total Bcachefs counter bucket_discard_fast_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_worker_total counter +node_bcachefs_bucket_discard_fast_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4012 +# HELP node_bcachefs_bucket_discard_total Bcachefs counter bucket_discard since filesystem creation. +# TYPE node_bcachefs_bucket_discard_total counter +node_bcachefs_bucket_discard_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4751388e+07 +# HELP node_bcachefs_bucket_discard_worker_total Bcachefs counter bucket_discard_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_worker_total counter +node_bcachefs_bucket_discard_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.021501e+06 +# HELP node_bcachefs_bucket_invalidate_total Bcachefs counter bucket_invalidate since filesystem creation. +# TYPE node_bcachefs_bucket_invalidate_total counter +node_bcachefs_bucket_invalidate_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.483205e+06 +# HELP node_bcachefs_cached_ptr_drop_total Bcachefs counter cached_ptr_drop since filesystem creation. +# TYPE node_bcachefs_cached_ptr_drop_total counter +node_bcachefs_cached_ptr_drop_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_compression_compressed_bytes Compressed size by algorithm. +# TYPE node_bcachefs_compression_compressed_bytes gauge +node_bcachefs_compression_compressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_compressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.2505975193e+10 +node_bcachefs_compression_compressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42665652224e+11 +# HELP node_bcachefs_compression_uncompressed_bytes Uncompressed size by algorithm. +# TYPE node_bcachefs_compression_uncompressed_bytes gauge +node_bcachefs_compression_uncompressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.6450417868e+10 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.47466319872e+11 +# HELP node_bcachefs_copygc_total Bcachefs counter copygc since filesystem creation. +# TYPE node_bcachefs_copygc_total counter +node_bcachefs_copygc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 424790 +# HELP node_bcachefs_copygc_wait_obsolete_total Bcachefs counter copygc_wait_obsolete since filesystem creation. +# TYPE node_bcachefs_copygc_wait_obsolete_total counter +node_bcachefs_copygc_wait_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 537321 +# HELP node_bcachefs_data_read_bounce_total Bcachefs counter data_read_bounce since filesystem creation. +# TYPE node_bcachefs_data_read_bounce_total counter +node_bcachefs_data_read_bounce_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.5052058e+08 +# HELP node_bcachefs_data_read_fail_and_poison_total Bcachefs counter data_read_fail_and_poison since filesystem creation. +# TYPE node_bcachefs_data_read_fail_and_poison_total counter +node_bcachefs_data_read_fail_and_poison_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_hole_total Bcachefs counter data_read_hole since filesystem creation. +# TYPE node_bcachefs_data_read_hole_total counter +node_bcachefs_data_read_hole_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.858174650941e+12 +# HELP node_bcachefs_data_read_inline_total Bcachefs counter data_read_inline since filesystem creation. +# TYPE node_bcachefs_data_read_inline_total counter +node_bcachefs_data_read_inline_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5998753177e+10 +# HELP node_bcachefs_data_read_narrow_crcs_fail_total Bcachefs counter data_read_narrow_crcs_fail since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_fail_total counter +node_bcachefs_data_read_narrow_crcs_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1779 +# HELP node_bcachefs_data_read_narrow_crcs_total Bcachefs counter data_read_narrow_crcs since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_total counter +node_bcachefs_data_read_narrow_crcs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18529 +# HELP node_bcachefs_data_read_nopromote_already_promoted_total Bcachefs counter data_read_nopromote_already_promoted since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_already_promoted_total counter +node_bcachefs_data_read_nopromote_already_promoted_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.11037452e+08 +# HELP node_bcachefs_data_read_nopromote_congested_total Bcachefs counter data_read_nopromote_congested since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_congested_total counter +node_bcachefs_data_read_nopromote_congested_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.913847e+06 +# HELP node_bcachefs_data_read_nopromote_may_not_total Bcachefs counter data_read_nopromote_may_not since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_may_not_total counter +node_bcachefs_data_read_nopromote_may_not_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0206095e+07 +# HELP node_bcachefs_data_read_nopromote_total Bcachefs counter data_read_nopromote since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_total counter +node_bcachefs_data_read_nopromote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42468868e+08 +# HELP node_bcachefs_data_read_nopromote_unwritten_total Bcachefs counter data_read_nopromote_unwritten since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_unwritten_total counter +node_bcachefs_data_read_nopromote_unwritten_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_promote_total Bcachefs counter data_read_promote since filesystem creation. +# TYPE node_bcachefs_data_read_promote_total counter +node_bcachefs_data_read_promote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.19833053184e+11 +# HELP node_bcachefs_data_read_retry_total Bcachefs counter data_read_retry since filesystem creation. +# TYPE node_bcachefs_data_read_retry_total counter +node_bcachefs_data_read_retry_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.2404675e+07 +# HELP node_bcachefs_data_read_reuse_race_total Bcachefs counter data_read_reuse_race since filesystem creation. +# TYPE node_bcachefs_data_read_reuse_race_total counter +node_bcachefs_data_read_reuse_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 201095 +# HELP node_bcachefs_data_read_split_total Bcachefs counter data_read_split since filesystem creation. +# TYPE node_bcachefs_data_read_split_total counter +node_bcachefs_data_read_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.18590695e+08 +# HELP node_bcachefs_data_read_total Bcachefs counter data_read since filesystem creation. +# TYPE node_bcachefs_data_read_total counter +node_bcachefs_data_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8928267436032e+13 +# HELP node_bcachefs_data_update_fail_total Bcachefs counter data_update_fail since filesystem creation. +# TYPE node_bcachefs_data_update_fail_total counter +node_bcachefs_data_update_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.138166333e+09 +# HELP node_bcachefs_data_update_in_flight_total Bcachefs counter data_update_in_flight since filesystem creation. +# TYPE node_bcachefs_data_update_in_flight_total counter +node_bcachefs_data_update_in_flight_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.978784e+06 +# HELP node_bcachefs_data_update_key_fail_total Bcachefs counter data_update_key_fail since filesystem creation. +# TYPE node_bcachefs_data_update_key_fail_total counter +node_bcachefs_data_update_key_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4373939404e+10 +# HELP node_bcachefs_data_update_key_total Bcachefs counter data_update_key since filesystem creation. +# TYPE node_bcachefs_data_update_key_total counter +node_bcachefs_data_update_key_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00275460453171e+14 +# HELP node_bcachefs_data_update_no_io_total Bcachefs counter data_update_no_io since filesystem creation. +# TYPE node_bcachefs_data_update_no_io_total counter +node_bcachefs_data_update_no_io_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00824357273e+11 +# HELP node_bcachefs_data_update_noop_obsolete_total Bcachefs counter data_update_noop_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_noop_obsolete_total counter +node_bcachefs_data_update_noop_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_update_pred_total Bcachefs counter data_update_pred since filesystem creation. +# TYPE node_bcachefs_data_update_pred_total counter +node_bcachefs_data_update_pred_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.947802324992e+13 +# HELP node_bcachefs_data_update_read_total Bcachefs counter data_update_read since filesystem creation. +# TYPE node_bcachefs_data_update_read_total counter +node_bcachefs_data_update_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.9390295338188e+13 +# HELP node_bcachefs_data_update_start_fail_obsolete_total Bcachefs counter data_update_start_fail_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_start_fail_obsolete_total counter +node_bcachefs_data_update_start_fail_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.14018822443e+11 +# HELP node_bcachefs_data_update_total Bcachefs counter data_update since filesystem creation. +# TYPE node_bcachefs_data_update_total counter +node_bcachefs_data_update_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4206847997116416e+16 +# HELP node_bcachefs_data_update_useless_write_fail_total Bcachefs counter data_update_useless_write_fail since filesystem creation. +# TYPE node_bcachefs_data_update_useless_write_fail_total counter +node_bcachefs_data_update_useless_write_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.30428461e+09 +# HELP node_bcachefs_data_update_write_total Bcachefs counter data_update_write since filesystem creation. +# TYPE node_bcachefs_data_update_write_total counter +node_bcachefs_data_update_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7163493018828e+13 +# HELP node_bcachefs_data_write_total Bcachefs counter data_write since filesystem creation. +# TYPE node_bcachefs_data_write_total counter +node_bcachefs_data_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0780769764966e+13 +# HELP node_bcachefs_device_bucket_size_bytes Bucket size in bytes. +# TYPE node_bcachefs_device_bucket_size_bytes gauge +node_bcachefs_device_bucket_size_bytes{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 524288 +node_bcachefs_device_bucket_size_bytes{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +# HELP node_bcachefs_device_buckets Total number of buckets. +# TYPE node_bcachefs_device_buckets gauge +node_bcachefs_device_buckets{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953880 +node_bcachefs_device_buckets{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.629824e+06 +node_bcachefs_device_buckets{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953864 +node_bcachefs_device_buckets{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.907723e+06 +node_bcachefs_device_buckets{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.384637e+06 +# HELP node_bcachefs_device_durability Device durability setting. +# TYPE node_bcachefs_device_durability gauge +node_bcachefs_device_durability{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_info Device information. +# TYPE node_bcachefs_device_info gauge +node_bcachefs_device_info{device="10",label="disk-10",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="4",label="disk-4",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="6",label="disk-6",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="7",label="disk-7",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="8",label="disk-8",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_io_done_bytes_total IO bytes by operation type and data type. +# TYPE node_bcachefs_device_io_done_bytes_total counter +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.24288e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 16384 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.193358848e+09 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 589824 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.912896e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.767671263232e+12 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.82753624064e+11 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.432028966912e+12 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 677376 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.02313054208e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.52377698304e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.770452246528e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.258285805568e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.10019098624e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.62070339584e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.53932742656e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.8382641152e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.115020546048e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.072510210048e+12 +# HELP node_bcachefs_device_io_errors_total IO errors by error type. +# TYPE node_bcachefs_device_io_errors_total counter +node_bcachefs_device_io_errors_total{device="10",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 197416 +node_bcachefs_device_io_errors_total{device="4",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 205 +node_bcachefs_device_io_errors_total{device="6",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5 +node_bcachefs_device_io_errors_total{device="6",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18828 +node_bcachefs_device_io_errors_total{device="6",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_io_errors_total{device="7",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18 +node_bcachefs_device_io_errors_total{device="7",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="7",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_error_throw_total Bcachefs counter error_throw since filesystem creation. +# TYPE node_bcachefs_error_throw_total counter +node_bcachefs_error_throw_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.719910958e+09 +# HELP node_bcachefs_errors_total Error count by error type. +# TYPE node_bcachefs_errors_total counter +node_bcachefs_errors_total{error_type="accounting_mismatch",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6 +node_bcachefs_errors_total{error_type="alloc_key_cached_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="alloc_key_data_type_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4415 +node_bcachefs_errors_total{error_type="alloc_key_dirty_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4538 +node_bcachefs_errors_total{error_type="alloc_key_to_missing_lru_entry",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4517 +node_bcachefs_errors_total{error_type="backpointer_to_missing_ptr",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 45480 +node_bcachefs_errors_total{error_type="bset_bad_csum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_data_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_topology_bad_max_key",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_io_opts_not_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1299659571772285e+19 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid_but_cached",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44612 +node_bcachefs_errors_total{error_type="lru_entry_bad",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="ptr_to_missing_backpointer",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44112 +node_bcachefs_errors_total{error_type="reconcile_work_incorrectly_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 113913 +node_bcachefs_errors_total{error_type="subvol_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 194 +node_bcachefs_errors_total{error_type="validate_error_in_commit",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="vfs_bad_inode_rm",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 121 +# HELP node_bcachefs_evacuate_bucket_total Bcachefs counter evacuate_bucket since filesystem creation. +# TYPE node_bcachefs_evacuate_bucket_total counter +node_bcachefs_evacuate_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.735247e+06 +# HELP node_bcachefs_fsync_total Bcachefs counter fsync since filesystem creation. +# TYPE node_bcachefs_fsync_total counter +node_bcachefs_fsync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.515147e+06 +# HELP node_bcachefs_gc_gens_end_total Bcachefs counter gc_gens_end since filesystem creation. +# TYPE node_bcachefs_gc_gens_end_total counter +node_bcachefs_gc_gens_end_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_gc_gens_start_total Bcachefs counter gc_gens_start since filesystem creation. +# TYPE node_bcachefs_gc_gens_start_total counter +node_bcachefs_gc_gens_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_info Filesystem information. +# TYPE node_bcachefs_info gauge +node_bcachefs_info{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_journal_full_total Bcachefs counter journal_full since filesystem creation. +# TYPE node_bcachefs_journal_full_total counter +node_bcachefs_journal_full_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 94587 +# HELP node_bcachefs_journal_reclaim_finish_total Bcachefs counter journal_reclaim_finish since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_finish_total counter +node_bcachefs_journal_reclaim_finish_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_reclaim_start_total Bcachefs counter journal_reclaim_start since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_start_total counter +node_bcachefs_journal_reclaim_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_res_get_blocked_total Bcachefs counter journal_res_get_blocked since filesystem creation. +# TYPE node_bcachefs_journal_res_get_blocked_total counter +node_bcachefs_journal_res_get_blocked_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 74696 +# HELP node_bcachefs_journal_write_total Bcachefs counter journal_write since filesystem creation. +# TYPE node_bcachefs_journal_write_total counter +node_bcachefs_journal_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5458801e+07 +# HELP node_bcachefs_open_bucket_alloc_fail_total Bcachefs counter open_bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_open_bucket_alloc_fail_total counter +node_bcachefs_open_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_btree_total Bcachefs counter reconcile_btree since filesystem creation. +# TYPE node_bcachefs_reconcile_btree_total counter +node_bcachefs_reconcile_btree_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.158221066e+09 +# HELP node_bcachefs_reconcile_clear_scan_total Bcachefs counter reconcile_clear_scan since filesystem creation. +# TYPE node_bcachefs_reconcile_clear_scan_total counter +node_bcachefs_reconcile_clear_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11 +# HELP node_bcachefs_reconcile_data_total Bcachefs counter reconcile_data since filesystem creation. +# TYPE node_bcachefs_reconcile_data_total counter +node_bcachefs_reconcile_data_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_phys_total Bcachefs counter reconcile_phys since filesystem creation. +# TYPE node_bcachefs_reconcile_phys_total counter +node_bcachefs_reconcile_phys_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9928939526553e+13 +# HELP node_bcachefs_reconcile_scan_device_total Bcachefs counter reconcile_scan_device since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_device_total counter +node_bcachefs_reconcile_scan_device_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.3562883710976e+13 +# HELP node_bcachefs_reconcile_scan_fs_total Bcachefs counter reconcile_scan_fs since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_fs_total counter +node_bcachefs_reconcile_scan_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_inum_total Bcachefs counter reconcile_scan_inum since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_inum_total counter +node_bcachefs_reconcile_scan_inum_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_metadata_total Bcachefs counter reconcile_scan_metadata since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_metadata_total counter +node_bcachefs_reconcile_scan_metadata_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_pending_total Bcachefs counter reconcile_scan_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_pending_total counter +node_bcachefs_reconcile_scan_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_set_pending_total Bcachefs counter reconcile_set_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_set_pending_total counter +node_bcachefs_reconcile_set_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.1138512896e+10 +# HELP node_bcachefs_sectors_alloc_total Bcachefs counter sectors_alloc since filesystem creation. +# TYPE node_bcachefs_sectors_alloc_total counter +node_bcachefs_sectors_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.2534432556646e+13 +# HELP node_bcachefs_stripe_alloc_total Bcachefs counter stripe_alloc since filesystem creation. +# TYPE node_bcachefs_stripe_alloc_total counter +node_bcachefs_stripe_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_fail_total Bcachefs counter stripe_create_fail since filesystem creation. +# TYPE node_bcachefs_stripe_create_fail_total counter +node_bcachefs_stripe_create_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_total Bcachefs counter stripe_create since filesystem creation. +# TYPE node_bcachefs_stripe_create_total counter +node_bcachefs_stripe_create_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_delete_total Bcachefs counter stripe_delete since filesystem creation. +# TYPE node_bcachefs_stripe_delete_total counter +node_bcachefs_stripe_delete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_reuse_total Bcachefs counter stripe_reuse since filesystem creation. +# TYPE node_bcachefs_stripe_reuse_total counter +node_bcachefs_stripe_reuse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_bucket_total Bcachefs counter stripe_update_bucket since filesystem creation. +# TYPE node_bcachefs_stripe_update_bucket_total counter +node_bcachefs_stripe_update_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_fail_total Bcachefs counter stripe_update_extent_fail since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_fail_total counter +node_bcachefs_stripe_update_extent_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_total Bcachefs counter stripe_update_extent since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_total counter +node_bcachefs_stripe_update_extent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_sync_fs_total Bcachefs counter sync_fs since filesystem creation. +# TYPE node_bcachefs_sync_fs_total counter +node_bcachefs_sync_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 42023 +# HELP node_bcachefs_trans_blocked_journal_reclaim_total Bcachefs counter trans_blocked_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_blocked_journal_reclaim_total counter +node_bcachefs_trans_blocked_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 78 +# HELP node_bcachefs_trans_restart_btree_node_reused_total Bcachefs counter trans_restart_btree_node_reused since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_reused_total counter +node_bcachefs_trans_restart_btree_node_reused_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 53354 +# HELP node_bcachefs_trans_restart_btree_node_split_total Bcachefs counter trans_restart_btree_node_split since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_split_total counter +node_bcachefs_trans_restart_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 100190 +# HELP node_bcachefs_trans_restart_fault_inject_total Bcachefs counter trans_restart_fault_inject since filesystem creation. +# TYPE node_bcachefs_trans_restart_fault_inject_total counter +node_bcachefs_trans_restart_fault_inject_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_injected_total Bcachefs counter trans_restart_injected since filesystem creation. +# TYPE node_bcachefs_trans_restart_injected_total counter +node_bcachefs_trans_restart_injected_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_iter_upgrade_total Bcachefs counter trans_restart_iter_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_iter_upgrade_total counter +node_bcachefs_trans_restart_iter_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_preres_get_total Bcachefs counter trans_restart_journal_preres_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_preres_get_total counter +node_bcachefs_trans_restart_journal_preres_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_reclaim_total Bcachefs counter trans_restart_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_reclaim_total counter +node_bcachefs_trans_restart_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_res_get_total Bcachefs counter trans_restart_journal_res_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_res_get_total counter +node_bcachefs_trans_restart_journal_res_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_key_realloced_total Bcachefs counter trans_restart_key_cache_key_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_key_realloced_total counter +node_bcachefs_trans_restart_key_cache_key_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_raced_total Bcachefs counter trans_restart_key_cache_raced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_raced_total counter +node_bcachefs_trans_restart_key_cache_raced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_upgrade_total Bcachefs counter trans_restart_key_cache_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_upgrade_total counter +node_bcachefs_trans_restart_key_cache_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mark_replicas_total Bcachefs counter trans_restart_mark_replicas since filesystem creation. +# TYPE node_bcachefs_trans_restart_mark_replicas_total counter +node_bcachefs_trans_restart_mark_replicas_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mem_realloced_total Bcachefs counter trans_restart_mem_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_mem_realloced_total counter +node_bcachefs_trans_restart_mem_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6111 +# HELP node_bcachefs_trans_restart_memory_allocation_failure_total Bcachefs counter trans_restart_memory_allocation_failure since filesystem creation. +# TYPE node_bcachefs_trans_restart_memory_allocation_failure_total counter +node_bcachefs_trans_restart_memory_allocation_failure_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.7513334e+07 +# HELP node_bcachefs_trans_restart_relock_after_fill_total Bcachefs counter trans_restart_relock_after_fill since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_after_fill_total counter +node_bcachefs_trans_restart_relock_after_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total Bcachefs counter trans_restart_relock_key_cache_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_next_node_total Bcachefs counter trans_restart_relock_next_node since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_next_node_total counter +node_bcachefs_trans_restart_relock_next_node_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 22087 +# HELP node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total Bcachefs counter trans_restart_relock_parent_for_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2581 +# HELP node_bcachefs_trans_restart_relock_path_intent_total Bcachefs counter trans_restart_relock_path_intent since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_intent_total counter +node_bcachefs_trans_restart_relock_path_intent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 298090 +# HELP node_bcachefs_trans_restart_relock_path_total Bcachefs counter trans_restart_relock_path since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_total counter +node_bcachefs_trans_restart_relock_path_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.752728e+07 +# HELP node_bcachefs_trans_restart_relock_total Bcachefs counter trans_restart_relock since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_total counter +node_bcachefs_trans_restart_relock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.806875e+06 +# HELP node_bcachefs_trans_restart_split_race_total Bcachefs counter trans_restart_split_race since filesystem creation. +# TYPE node_bcachefs_trans_restart_split_race_total counter +node_bcachefs_trans_restart_split_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_too_many_iters_total Bcachefs counter trans_restart_too_many_iters since filesystem creation. +# TYPE node_bcachefs_trans_restart_too_many_iters_total counter +node_bcachefs_trans_restart_too_many_iters_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_traverse_total Bcachefs counter trans_restart_traverse since filesystem creation. +# TYPE node_bcachefs_trans_restart_traverse_total counter +node_bcachefs_trans_restart_traverse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_upgrade_total Bcachefs counter trans_restart_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_upgrade_total counter +node_bcachefs_trans_restart_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.055154e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_recursion_limit_total Bcachefs counter trans_restart_would_deadlock_recursion_limit since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_recursion_limit_total counter +node_bcachefs_trans_restart_would_deadlock_recursion_limit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_would_deadlock_total Bcachefs counter trans_restart_would_deadlock since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_total counter +node_bcachefs_trans_restart_would_deadlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.025983e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_write_total Bcachefs counter trans_restart_would_deadlock_write since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_write_total counter +node_bcachefs_trans_restart_would_deadlock_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +# HELP node_bcachefs_trans_restart_write_buffer_flush_total Bcachefs counter trans_restart_write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_trans_restart_write_buffer_flush_total counter +node_bcachefs_trans_restart_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.1706894e+07 +# HELP node_bcachefs_trans_traverse_all_total Bcachefs counter trans_traverse_all since filesystem creation. +# TYPE node_bcachefs_trans_traverse_all_total counter +node_bcachefs_trans_traverse_all_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.8477746e+07 +# HELP node_bcachefs_transaction_commit_total Bcachefs counter transaction_commit since filesystem creation. +# TYPE node_bcachefs_transaction_commit_total counter +node_bcachefs_transaction_commit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.338059022e+09 +# HELP node_bcachefs_write_buffer_flush_slowpath_total Bcachefs counter write_buffer_flush_slowpath since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_slowpath_total counter +node_bcachefs_write_buffer_flush_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 21031 +# HELP node_bcachefs_write_buffer_flush_sync_total Bcachefs counter write_buffer_flush_sync since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_sync_total counter +node_bcachefs_write_buffer_flush_sync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.024402e+06 +# HELP node_bcachefs_write_buffer_flush_total Bcachefs counter write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_total counter +node_bcachefs_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8370568e+07 +# HELP node_bcachefs_write_buffer_maybe_flush_total Bcachefs counter write_buffer_maybe_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_maybe_flush_total counter +node_bcachefs_write_buffer_maybe_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.7412849e+07 +# HELP node_bcachefs_write_super_total Bcachefs counter write_super since filesystem creation. +# TYPE node_bcachefs_write_super_total counter +node_bcachefs_write_super_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 30277 # HELP node_bonding_active Number of active slaves per bonding interface. # TYPE node_bonding_active gauge node_bonding_active{master="bond0"} 0 @@ -3049,6 +3640,7 @@ node_schedstat_waiting_seconds_total{cpu="1"} 364107.263788241 # TYPE node_scrape_collector_success gauge node_scrape_collector_success{collector="arp"} 1 node_scrape_collector_success{collector="bcache"} 1 +node_scrape_collector_success{collector="bcachefs"} 1 node_scrape_collector_success{collector="bonding"} 1 node_scrape_collector_success{collector="btrfs"} 1 node_scrape_collector_success{collector="buddyinfo"} 1 diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt index 7ac06c0f..09a58cdc 100644 --- a/collector/fixtures/e2e-output.txt +++ b/collector/fixtures/e2e-output.txt @@ -144,6 +144,597 @@ node_bcache_writeback_rate_proportional_term{backing_device="bdev0",uuid="deaddd # HELP node_bcache_written_bytes_total Sum of all data that has been written to the cache. # TYPE node_bcache_written_bytes_total counter node_bcache_written_bytes_total{cache_device="cache0",uuid="deaddd54-c735-46d5-868e-f331c5fd7c74"} 0 +# HELP node_bcachefs_accounting_key_to_wb_slowpath_total Bcachefs counter accounting_key_to_wb_slowpath since filesystem creation. +# TYPE node_bcachefs_accounting_key_to_wb_slowpath_total counter +node_bcachefs_accounting_key_to_wb_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.4105502e+07 +# HELP node_bcachefs_bkey_pack_pos_fail_total Bcachefs counter bkey_pack_pos_fail since filesystem creation. +# TYPE node_bcachefs_bkey_pack_pos_fail_total counter +node_bcachefs_bkey_pack_pos_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_btree_cache_cannibalize_lock_fail_total Bcachefs counter btree_cache_cannibalize_lock_fail since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_fail_total counter +node_bcachefs_btree_cache_cannibalize_lock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 24213 +# HELP node_bcachefs_btree_cache_cannibalize_lock_total Bcachefs counter btree_cache_cannibalize_lock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_lock_total counter +node_bcachefs_btree_cache_cannibalize_lock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.2061408e+07 +# HELP node_bcachefs_btree_cache_cannibalize_total Bcachefs counter btree_cache_cannibalize since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_total counter +node_bcachefs_btree_cache_cannibalize_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.6587339e+07 +# HELP node_bcachefs_btree_cache_cannibalize_unlock_total Bcachefs counter btree_cache_cannibalize_unlock since filesystem creation. +# TYPE node_bcachefs_btree_cache_cannibalize_unlock_total counter +node_bcachefs_btree_cache_cannibalize_unlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.6260384e+07 +# HELP node_bcachefs_btree_cache_reap_total Bcachefs counter btree_cache_reap since filesystem creation. +# TYPE node_bcachefs_btree_cache_reap_total counter +node_bcachefs_btree_cache_reap_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9068459e+07 +# HELP node_bcachefs_btree_cache_scan_total Bcachefs counter btree_cache_scan since filesystem creation. +# TYPE node_bcachefs_btree_cache_scan_total counter +node_bcachefs_btree_cache_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 427545 +# HELP node_bcachefs_btree_cache_size_bytes Btree cache memory usage in bytes. +# TYPE node_bcachefs_btree_cache_size_bytes gauge +node_bcachefs_btree_cache_size_bytes{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_btree_key_cache_fill_total Bcachefs counter btree_key_cache_fill since filesystem creation. +# TYPE node_bcachefs_btree_key_cache_fill_total counter +node_bcachefs_btree_key_cache_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.69308144e+08 +# HELP node_bcachefs_btree_node_alloc_total Bcachefs counter btree_node_alloc since filesystem creation. +# TYPE node_bcachefs_btree_node_alloc_total counter +node_bcachefs_btree_node_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.665587e+06 +# HELP node_bcachefs_btree_node_compact_total Bcachefs counter btree_node_compact since filesystem creation. +# TYPE node_bcachefs_btree_node_compact_total counter +node_bcachefs_btree_node_compact_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.554425e+06 +# HELP node_bcachefs_btree_node_free_total Bcachefs counter btree_node_free since filesystem creation. +# TYPE node_bcachefs_btree_node_free_total counter +node_bcachefs_btree_node_free_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4112667e+07 +# HELP node_bcachefs_btree_node_merge_attempt_total Bcachefs counter btree_node_merge_attempt since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_attempt_total counter +node_bcachefs_btree_node_merge_attempt_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5868895e+07 +# HELP node_bcachefs_btree_node_merge_total Bcachefs counter btree_node_merge since filesystem creation. +# TYPE node_bcachefs_btree_node_merge_total counter +node_bcachefs_btree_node_merge_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 559684 +# HELP node_bcachefs_btree_node_read_total Bcachefs counter btree_node_read since filesystem creation. +# TYPE node_bcachefs_btree_node_read_total counter +node_bcachefs_btree_node_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.0225874e+07 +# HELP node_bcachefs_btree_node_rewrite_total Bcachefs counter btree_node_rewrite since filesystem creation. +# TYPE node_bcachefs_btree_node_rewrite_total counter +node_bcachefs_btree_node_rewrite_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.130316e+06 +# HELP node_bcachefs_btree_node_set_root_total Bcachefs counter btree_node_set_root since filesystem creation. +# TYPE node_bcachefs_btree_node_set_root_total counter +node_bcachefs_btree_node_set_root_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 77958 +# HELP node_bcachefs_btree_node_split_total Bcachefs counter btree_node_split since filesystem creation. +# TYPE node_bcachefs_btree_node_split_total counter +node_bcachefs_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 710571 +# HELP node_bcachefs_btree_node_write_total Bcachefs counter btree_node_write since filesystem creation. +# TYPE node_bcachefs_btree_node_write_total counter +node_bcachefs_btree_node_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.4796849e+08 +# HELP node_bcachefs_btree_path_relock_fail_total Bcachefs counter btree_path_relock_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_relock_fail_total counter +node_bcachefs_btree_path_relock_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.6213103e+07 +# HELP node_bcachefs_btree_path_upgrade_fail_total Bcachefs counter btree_path_upgrade_fail since filesystem creation. +# TYPE node_bcachefs_btree_path_upgrade_fail_total counter +node_bcachefs_btree_path_upgrade_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.103667e+06 +# HELP node_bcachefs_btree_reserve_get_fail_total Bcachefs counter btree_reserve_get_fail since filesystem creation. +# TYPE node_bcachefs_btree_reserve_get_fail_total counter +node_bcachefs_btree_reserve_get_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11706 +# HELP node_bcachefs_btree_write_average_size_bytes Average btree write size by type. +# TYPE node_bcachefs_btree_write_average_size_bytes gauge +node_bcachefs_btree_write_average_size_bytes{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 720 +node_bcachefs_btree_write_average_size_bytes{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 28876 +node_bcachefs_btree_write_average_size_bytes{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 102400 +node_bcachefs_btree_write_average_size_bytes{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1290 +node_bcachefs_btree_write_average_size_bytes{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 697 +# HELP node_bcachefs_btree_writes_total Number of btree writes by type. +# TYPE node_bcachefs_btree_writes_total counter +node_bcachefs_btree_writes_total{type="cache_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 14401 +node_bcachefs_btree_writes_total{type="init_next_bset",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.055926e+06 +node_bcachefs_btree_writes_total{type="initial",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.298401e+06 +node_bcachefs_btree_writes_total{type="interior",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.035363e+06 +node_bcachefs_btree_writes_total{type="journal_reclaim",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.6903805e+07 +# HELP node_bcachefs_bucket_alloc_fail_total Bcachefs counter bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_fail_total counter +node_bcachefs_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1156091e+07 +# HELP node_bcachefs_bucket_alloc_from_stripe_total Bcachefs counter bucket_alloc_from_stripe since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_from_stripe_total counter +node_bcachefs_bucket_alloc_from_stripe_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_bucket_alloc_total Bcachefs counter bucket_alloc since filesystem creation. +# TYPE node_bcachefs_bucket_alloc_total counter +node_bcachefs_bucket_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7363674e+07 +# HELP node_bcachefs_bucket_discard_fast_total Bcachefs counter bucket_discard_fast since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_total counter +node_bcachefs_bucket_discard_fast_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 10204 +# HELP node_bcachefs_bucket_discard_fast_worker_total Bcachefs counter bucket_discard_fast_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_fast_worker_total counter +node_bcachefs_bucket_discard_fast_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4012 +# HELP node_bcachefs_bucket_discard_total Bcachefs counter bucket_discard since filesystem creation. +# TYPE node_bcachefs_bucket_discard_total counter +node_bcachefs_bucket_discard_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4751388e+07 +# HELP node_bcachefs_bucket_discard_worker_total Bcachefs counter bucket_discard_worker since filesystem creation. +# TYPE node_bcachefs_bucket_discard_worker_total counter +node_bcachefs_bucket_discard_worker_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.021501e+06 +# HELP node_bcachefs_bucket_invalidate_total Bcachefs counter bucket_invalidate since filesystem creation. +# TYPE node_bcachefs_bucket_invalidate_total counter +node_bcachefs_bucket_invalidate_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.483205e+06 +# HELP node_bcachefs_cached_ptr_drop_total Bcachefs counter cached_ptr_drop since filesystem creation. +# TYPE node_bcachefs_cached_ptr_drop_total counter +node_bcachefs_cached_ptr_drop_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.201170739e+09 +# HELP node_bcachefs_compression_compressed_bytes Compressed size by algorithm. +# TYPE node_bcachefs_compression_compressed_bytes gauge +node_bcachefs_compression_compressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_compressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.2505975193e+10 +node_bcachefs_compression_compressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_compressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42665652224e+11 +# HELP node_bcachefs_compression_uncompressed_bytes Uncompressed size by algorithm. +# TYPE node_bcachefs_compression_uncompressed_bytes gauge +node_bcachefs_compression_uncompressed_bytes{algorithm="gzip",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="incompressible",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.187472557998e+13 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.6450417868e+10 +node_bcachefs_compression_uncompressed_bytes{algorithm="lz4_old",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_compression_uncompressed_bytes{algorithm="zstd",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.47466319872e+11 +# HELP node_bcachefs_copygc_total Bcachefs counter copygc since filesystem creation. +# TYPE node_bcachefs_copygc_total counter +node_bcachefs_copygc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 424790 +# HELP node_bcachefs_copygc_wait_obsolete_total Bcachefs counter copygc_wait_obsolete since filesystem creation. +# TYPE node_bcachefs_copygc_wait_obsolete_total counter +node_bcachefs_copygc_wait_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 537321 +# HELP node_bcachefs_data_read_bounce_total Bcachefs counter data_read_bounce since filesystem creation. +# TYPE node_bcachefs_data_read_bounce_total counter +node_bcachefs_data_read_bounce_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.5052058e+08 +# HELP node_bcachefs_data_read_fail_and_poison_total Bcachefs counter data_read_fail_and_poison since filesystem creation. +# TYPE node_bcachefs_data_read_fail_and_poison_total counter +node_bcachefs_data_read_fail_and_poison_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_hole_total Bcachefs counter data_read_hole since filesystem creation. +# TYPE node_bcachefs_data_read_hole_total counter +node_bcachefs_data_read_hole_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.858174650941e+12 +# HELP node_bcachefs_data_read_inline_total Bcachefs counter data_read_inline since filesystem creation. +# TYPE node_bcachefs_data_read_inline_total counter +node_bcachefs_data_read_inline_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5998753177e+10 +# HELP node_bcachefs_data_read_narrow_crcs_fail_total Bcachefs counter data_read_narrow_crcs_fail since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_fail_total counter +node_bcachefs_data_read_narrow_crcs_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1779 +# HELP node_bcachefs_data_read_narrow_crcs_total Bcachefs counter data_read_narrow_crcs since filesystem creation. +# TYPE node_bcachefs_data_read_narrow_crcs_total counter +node_bcachefs_data_read_narrow_crcs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18529 +# HELP node_bcachefs_data_read_nopromote_already_promoted_total Bcachefs counter data_read_nopromote_already_promoted since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_already_promoted_total counter +node_bcachefs_data_read_nopromote_already_promoted_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.11037452e+08 +# HELP node_bcachefs_data_read_nopromote_congested_total Bcachefs counter data_read_nopromote_congested since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_congested_total counter +node_bcachefs_data_read_nopromote_congested_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.913847e+06 +# HELP node_bcachefs_data_read_nopromote_may_not_total Bcachefs counter data_read_nopromote_may_not since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_may_not_total counter +node_bcachefs_data_read_nopromote_may_not_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0206095e+07 +# HELP node_bcachefs_data_read_nopromote_total Bcachefs counter data_read_nopromote since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_total counter +node_bcachefs_data_read_nopromote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.42468868e+08 +# HELP node_bcachefs_data_read_nopromote_unwritten_total Bcachefs counter data_read_nopromote_unwritten since filesystem creation. +# TYPE node_bcachefs_data_read_nopromote_unwritten_total counter +node_bcachefs_data_read_nopromote_unwritten_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_read_promote_total Bcachefs counter data_read_promote since filesystem creation. +# TYPE node_bcachefs_data_read_promote_total counter +node_bcachefs_data_read_promote_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.19833053184e+11 +# HELP node_bcachefs_data_read_retry_total Bcachefs counter data_read_retry since filesystem creation. +# TYPE node_bcachefs_data_read_retry_total counter +node_bcachefs_data_read_retry_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.2404675e+07 +# HELP node_bcachefs_data_read_reuse_race_total Bcachefs counter data_read_reuse_race since filesystem creation. +# TYPE node_bcachefs_data_read_reuse_race_total counter +node_bcachefs_data_read_reuse_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 201095 +# HELP node_bcachefs_data_read_split_total Bcachefs counter data_read_split since filesystem creation. +# TYPE node_bcachefs_data_read_split_total counter +node_bcachefs_data_read_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.18590695e+08 +# HELP node_bcachefs_data_read_total Bcachefs counter data_read since filesystem creation. +# TYPE node_bcachefs_data_read_total counter +node_bcachefs_data_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8928267436032e+13 +# HELP node_bcachefs_data_update_fail_total Bcachefs counter data_update_fail since filesystem creation. +# TYPE node_bcachefs_data_update_fail_total counter +node_bcachefs_data_update_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.138166333e+09 +# HELP node_bcachefs_data_update_in_flight_total Bcachefs counter data_update_in_flight since filesystem creation. +# TYPE node_bcachefs_data_update_in_flight_total counter +node_bcachefs_data_update_in_flight_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.978784e+06 +# HELP node_bcachefs_data_update_key_fail_total Bcachefs counter data_update_key_fail since filesystem creation. +# TYPE node_bcachefs_data_update_key_fail_total counter +node_bcachefs_data_update_key_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4373939404e+10 +# HELP node_bcachefs_data_update_key_total Bcachefs counter data_update_key since filesystem creation. +# TYPE node_bcachefs_data_update_key_total counter +node_bcachefs_data_update_key_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00275460453171e+14 +# HELP node_bcachefs_data_update_no_io_total Bcachefs counter data_update_no_io since filesystem creation. +# TYPE node_bcachefs_data_update_no_io_total counter +node_bcachefs_data_update_no_io_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.00824357273e+11 +# HELP node_bcachefs_data_update_noop_obsolete_total Bcachefs counter data_update_noop_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_noop_obsolete_total counter +node_bcachefs_data_update_noop_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_data_update_pred_total Bcachefs counter data_update_pred since filesystem creation. +# TYPE node_bcachefs_data_update_pred_total counter +node_bcachefs_data_update_pred_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.947802324992e+13 +# HELP node_bcachefs_data_update_read_total Bcachefs counter data_update_read since filesystem creation. +# TYPE node_bcachefs_data_update_read_total counter +node_bcachefs_data_update_read_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.9390295338188e+13 +# HELP node_bcachefs_data_update_start_fail_obsolete_total Bcachefs counter data_update_start_fail_obsolete since filesystem creation. +# TYPE node_bcachefs_data_update_start_fail_obsolete_total counter +node_bcachefs_data_update_start_fail_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.14018822443e+11 +# HELP node_bcachefs_data_update_total Bcachefs counter data_update since filesystem creation. +# TYPE node_bcachefs_data_update_total counter +node_bcachefs_data_update_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.4206847997116416e+16 +# HELP node_bcachefs_data_update_useless_write_fail_total Bcachefs counter data_update_useless_write_fail since filesystem creation. +# TYPE node_bcachefs_data_update_useless_write_fail_total counter +node_bcachefs_data_update_useless_write_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.30428461e+09 +# HELP node_bcachefs_data_update_write_total Bcachefs counter data_update_write since filesystem creation. +# TYPE node_bcachefs_data_update_write_total counter +node_bcachefs_data_update_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.7163493018828e+13 +# HELP node_bcachefs_data_write_total Bcachefs counter data_write since filesystem creation. +# TYPE node_bcachefs_data_write_total counter +node_bcachefs_data_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.0780769764966e+13 +# HELP node_bcachefs_device_bucket_size_bytes Bucket size in bytes. +# TYPE node_bcachefs_device_bucket_size_bytes gauge +node_bcachefs_device_bucket_size_bytes{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 524288 +node_bcachefs_device_bucket_size_bytes{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +node_bcachefs_device_bucket_size_bytes{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.097152e+06 +# HELP node_bcachefs_device_buckets Total number of buckets. +# TYPE node_bcachefs_device_buckets gauge +node_bcachefs_device_buckets{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953880 +node_bcachefs_device_buckets{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.629824e+06 +node_bcachefs_device_buckets{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 953864 +node_bcachefs_device_buckets{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.907723e+06 +node_bcachefs_device_buckets{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.384637e+06 +# HELP node_bcachefs_device_durability Device durability setting. +# TYPE node_bcachefs_device_durability gauge +node_bcachefs_device_durability{device="10",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="4",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="6",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="7",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_durability{device="8",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_info Device information. +# TYPE node_bcachefs_device_info gauge +node_bcachefs_device_info{device="10",label="disk-10",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="4",label="disk-4",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="6",label="disk-6",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="7",label="disk-7",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_info{device="8",label="disk-8",state="[rw] ro evacuating spare",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_device_io_done_bytes_total IO bytes by operation type and data type. +# TYPE node_bcachefs_device_io_done_bytes_total counter +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.24288e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 16384 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.193358848e+09 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 589824 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.912896e+06 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.767671263232e+12 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.82753624064e+11 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="btree",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="cached",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.432028966912e+12 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="journal",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_discard",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="need_gc_gens",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="parity",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 677376 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 86016 +node_bcachefs_device_io_done_bytes_total{data_type="sb",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 645120 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="stripe",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="unstriped",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.02313054208e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="10",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.52377698304e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.770452246528e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="4",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.258285805568e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.10019098624e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="6",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.62070339584e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.53932742656e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="7",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.8382641152e+11 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.115020546048e+12 +node_bcachefs_device_io_done_bytes_total{data_type="user",device="8",operation="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.072510210048e+12 +# HELP node_bcachefs_device_io_errors_total IO errors by error type. +# TYPE node_bcachefs_device_io_errors_total counter +node_bcachefs_device_io_errors_total{device="10",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="10",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="4",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 197416 +node_bcachefs_device_io_errors_total{device="4",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 205 +node_bcachefs_device_io_errors_total{device="6",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5 +node_bcachefs_device_io_errors_total{device="6",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18828 +node_bcachefs_device_io_errors_total{device="6",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +node_bcachefs_device_io_errors_total{device="7",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 18 +node_bcachefs_device_io_errors_total{device="7",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="7",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="checksum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="read",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +node_bcachefs_device_io_errors_total{device="8",type="write",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_error_throw_total Bcachefs counter error_throw since filesystem creation. +# TYPE node_bcachefs_error_throw_total counter +node_bcachefs_error_throw_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.719910958e+09 +# HELP node_bcachefs_errors_total Error count by error type. +# TYPE node_bcachefs_errors_total counter +node_bcachefs_errors_total{error_type="accounting_mismatch",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6 +node_bcachefs_errors_total{error_type="alloc_key_cached_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="alloc_key_data_type_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4415 +node_bcachefs_errors_total{error_type="alloc_key_dirty_sectors_wrong",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4538 +node_bcachefs_errors_total{error_type="alloc_key_to_missing_lru_entry",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4517 +node_bcachefs_errors_total{error_type="backpointer_to_missing_ptr",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 45480 +node_bcachefs_errors_total{error_type="bset_bad_csum",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_data_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="btree_node_topology_bad_max_key",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_io_opts_not_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.1299659571772285e+19 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="extent_ptrs_all_invalid_but_cached",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44612 +node_bcachefs_errors_total{error_type="lru_entry_bad",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4537 +node_bcachefs_errors_total{error_type="ptr_to_missing_backpointer",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 44112 +node_bcachefs_errors_total{error_type="reconcile_work_incorrectly_set",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 113913 +node_bcachefs_errors_total{error_type="subvol_missing",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 194 +node_bcachefs_errors_total{error_type="validate_error_in_commit",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +node_bcachefs_errors_total{error_type="vfs_bad_inode_rm",uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 121 +# HELP node_bcachefs_evacuate_bucket_total Bcachefs counter evacuate_bucket since filesystem creation. +# TYPE node_bcachefs_evacuate_bucket_total counter +node_bcachefs_evacuate_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.735247e+06 +# HELP node_bcachefs_fsync_total Bcachefs counter fsync since filesystem creation. +# TYPE node_bcachefs_fsync_total counter +node_bcachefs_fsync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.515147e+06 +# HELP node_bcachefs_gc_gens_end_total Bcachefs counter gc_gens_end since filesystem creation. +# TYPE node_bcachefs_gc_gens_end_total counter +node_bcachefs_gc_gens_end_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_gc_gens_start_total Bcachefs counter gc_gens_start since filesystem creation. +# TYPE node_bcachefs_gc_gens_start_total counter +node_bcachefs_gc_gens_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3 +# HELP node_bcachefs_info Filesystem information. +# TYPE node_bcachefs_info gauge +node_bcachefs_info{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1 +# HELP node_bcachefs_journal_full_total Bcachefs counter journal_full since filesystem creation. +# TYPE node_bcachefs_journal_full_total counter +node_bcachefs_journal_full_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 94587 +# HELP node_bcachefs_journal_reclaim_finish_total Bcachefs counter journal_reclaim_finish since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_finish_total counter +node_bcachefs_journal_reclaim_finish_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_reclaim_start_total Bcachefs counter journal_reclaim_start since filesystem creation. +# TYPE node_bcachefs_journal_reclaim_start_total counter +node_bcachefs_journal_reclaim_start_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.06994135e+08 +# HELP node_bcachefs_journal_res_get_blocked_total Bcachefs counter journal_res_get_blocked since filesystem creation. +# TYPE node_bcachefs_journal_res_get_blocked_total counter +node_bcachefs_journal_res_get_blocked_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 74696 +# HELP node_bcachefs_journal_write_total Bcachefs counter journal_write since filesystem creation. +# TYPE node_bcachefs_journal_write_total counter +node_bcachefs_journal_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.5458801e+07 +# HELP node_bcachefs_open_bucket_alloc_fail_total Bcachefs counter open_bucket_alloc_fail since filesystem creation. +# TYPE node_bcachefs_open_bucket_alloc_fail_total counter +node_bcachefs_open_bucket_alloc_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_btree_total Bcachefs counter reconcile_btree since filesystem creation. +# TYPE node_bcachefs_reconcile_btree_total counter +node_bcachefs_reconcile_btree_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.158221066e+09 +# HELP node_bcachefs_reconcile_clear_scan_total Bcachefs counter reconcile_clear_scan since filesystem creation. +# TYPE node_bcachefs_reconcile_clear_scan_total counter +node_bcachefs_reconcile_clear_scan_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 11 +# HELP node_bcachefs_reconcile_data_total Bcachefs counter reconcile_data since filesystem creation. +# TYPE node_bcachefs_reconcile_data_total counter +node_bcachefs_reconcile_data_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_phys_total Bcachefs counter reconcile_phys since filesystem creation. +# TYPE node_bcachefs_reconcile_phys_total counter +node_bcachefs_reconcile_phys_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.9928939526553e+13 +# HELP node_bcachefs_reconcile_scan_device_total Bcachefs counter reconcile_scan_device since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_device_total counter +node_bcachefs_reconcile_scan_device_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 8.3562883710976e+13 +# HELP node_bcachefs_reconcile_scan_fs_total Bcachefs counter reconcile_scan_fs since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_fs_total counter +node_bcachefs_reconcile_scan_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_inum_total Bcachefs counter reconcile_scan_inum since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_inum_total counter +node_bcachefs_reconcile_scan_inum_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_metadata_total Bcachefs counter reconcile_scan_metadata since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_metadata_total counter +node_bcachefs_reconcile_scan_metadata_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_scan_pending_total Bcachefs counter reconcile_scan_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_scan_pending_total counter +node_bcachefs_reconcile_scan_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_reconcile_set_pending_total Bcachefs counter reconcile_set_pending since filesystem creation. +# TYPE node_bcachefs_reconcile_set_pending_total counter +node_bcachefs_reconcile_set_pending_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 3.1138512896e+10 +# HELP node_bcachefs_sectors_alloc_total Bcachefs counter sectors_alloc since filesystem creation. +# TYPE node_bcachefs_sectors_alloc_total counter +node_bcachefs_sectors_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.2534432556646e+13 +# HELP node_bcachefs_stripe_alloc_total Bcachefs counter stripe_alloc since filesystem creation. +# TYPE node_bcachefs_stripe_alloc_total counter +node_bcachefs_stripe_alloc_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_fail_total Bcachefs counter stripe_create_fail since filesystem creation. +# TYPE node_bcachefs_stripe_create_fail_total counter +node_bcachefs_stripe_create_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_create_total Bcachefs counter stripe_create since filesystem creation. +# TYPE node_bcachefs_stripe_create_total counter +node_bcachefs_stripe_create_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_delete_total Bcachefs counter stripe_delete since filesystem creation. +# TYPE node_bcachefs_stripe_delete_total counter +node_bcachefs_stripe_delete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_reuse_total Bcachefs counter stripe_reuse since filesystem creation. +# TYPE node_bcachefs_stripe_reuse_total counter +node_bcachefs_stripe_reuse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_bucket_total Bcachefs counter stripe_update_bucket since filesystem creation. +# TYPE node_bcachefs_stripe_update_bucket_total counter +node_bcachefs_stripe_update_bucket_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_fail_total Bcachefs counter stripe_update_extent_fail since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_fail_total counter +node_bcachefs_stripe_update_extent_fail_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_stripe_update_extent_total Bcachefs counter stripe_update_extent since filesystem creation. +# TYPE node_bcachefs_stripe_update_extent_total counter +node_bcachefs_stripe_update_extent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_sync_fs_total Bcachefs counter sync_fs since filesystem creation. +# TYPE node_bcachefs_sync_fs_total counter +node_bcachefs_sync_fs_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 42023 +# HELP node_bcachefs_trans_blocked_journal_reclaim_total Bcachefs counter trans_blocked_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_blocked_journal_reclaim_total counter +node_bcachefs_trans_blocked_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 78 +# HELP node_bcachefs_trans_restart_btree_node_reused_total Bcachefs counter trans_restart_btree_node_reused since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_reused_total counter +node_bcachefs_trans_restart_btree_node_reused_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 53354 +# HELP node_bcachefs_trans_restart_btree_node_split_total Bcachefs counter trans_restart_btree_node_split since filesystem creation. +# TYPE node_bcachefs_trans_restart_btree_node_split_total counter +node_bcachefs_trans_restart_btree_node_split_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 100190 +# HELP node_bcachefs_trans_restart_fault_inject_total Bcachefs counter trans_restart_fault_inject since filesystem creation. +# TYPE node_bcachefs_trans_restart_fault_inject_total counter +node_bcachefs_trans_restart_fault_inject_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_injected_total Bcachefs counter trans_restart_injected since filesystem creation. +# TYPE node_bcachefs_trans_restart_injected_total counter +node_bcachefs_trans_restart_injected_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_iter_upgrade_total Bcachefs counter trans_restart_iter_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_iter_upgrade_total counter +node_bcachefs_trans_restart_iter_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_preres_get_total Bcachefs counter trans_restart_journal_preres_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_preres_get_total counter +node_bcachefs_trans_restart_journal_preres_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_reclaim_total Bcachefs counter trans_restart_journal_reclaim since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_reclaim_total counter +node_bcachefs_trans_restart_journal_reclaim_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_journal_res_get_total Bcachefs counter trans_restart_journal_res_get since filesystem creation. +# TYPE node_bcachefs_trans_restart_journal_res_get_total counter +node_bcachefs_trans_restart_journal_res_get_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_key_realloced_total Bcachefs counter trans_restart_key_cache_key_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_key_realloced_total counter +node_bcachefs_trans_restart_key_cache_key_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_raced_total Bcachefs counter trans_restart_key_cache_raced since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_raced_total counter +node_bcachefs_trans_restart_key_cache_raced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_key_cache_upgrade_total Bcachefs counter trans_restart_key_cache_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_key_cache_upgrade_total counter +node_bcachefs_trans_restart_key_cache_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mark_replicas_total Bcachefs counter trans_restart_mark_replicas since filesystem creation. +# TYPE node_bcachefs_trans_restart_mark_replicas_total counter +node_bcachefs_trans_restart_mark_replicas_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_mem_realloced_total Bcachefs counter trans_restart_mem_realloced since filesystem creation. +# TYPE node_bcachefs_trans_restart_mem_realloced_total counter +node_bcachefs_trans_restart_mem_realloced_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6111 +# HELP node_bcachefs_trans_restart_memory_allocation_failure_total Bcachefs counter trans_restart_memory_allocation_failure since filesystem creation. +# TYPE node_bcachefs_trans_restart_memory_allocation_failure_total counter +node_bcachefs_trans_restart_memory_allocation_failure_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.7513334e+07 +# HELP node_bcachefs_trans_restart_relock_after_fill_total Bcachefs counter trans_restart_relock_after_fill since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_after_fill_total counter +node_bcachefs_trans_restart_relock_after_fill_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total Bcachefs counter trans_restart_relock_key_cache_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_key_cache_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_relock_next_node_total Bcachefs counter trans_restart_relock_next_node since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_next_node_total counter +node_bcachefs_trans_restart_relock_next_node_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 22087 +# HELP node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total Bcachefs counter trans_restart_relock_parent_for_fill_obsolete since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total counter +node_bcachefs_trans_restart_relock_parent_for_fill_obsolete_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2581 +# HELP node_bcachefs_trans_restart_relock_path_intent_total Bcachefs counter trans_restart_relock_path_intent since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_intent_total counter +node_bcachefs_trans_restart_relock_path_intent_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 298090 +# HELP node_bcachefs_trans_restart_relock_path_total Bcachefs counter trans_restart_relock_path since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_path_total counter +node_bcachefs_trans_restart_relock_path_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.752728e+07 +# HELP node_bcachefs_trans_restart_relock_total Bcachefs counter trans_restart_relock since filesystem creation. +# TYPE node_bcachefs_trans_restart_relock_total counter +node_bcachefs_trans_restart_relock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2.806875e+06 +# HELP node_bcachefs_trans_restart_split_race_total Bcachefs counter trans_restart_split_race since filesystem creation. +# TYPE node_bcachefs_trans_restart_split_race_total counter +node_bcachefs_trans_restart_split_race_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_too_many_iters_total Bcachefs counter trans_restart_too_many_iters since filesystem creation. +# TYPE node_bcachefs_trans_restart_too_many_iters_total counter +node_bcachefs_trans_restart_too_many_iters_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_traverse_total Bcachefs counter trans_restart_traverse since filesystem creation. +# TYPE node_bcachefs_trans_restart_traverse_total counter +node_bcachefs_trans_restart_traverse_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_upgrade_total Bcachefs counter trans_restart_upgrade since filesystem creation. +# TYPE node_bcachefs_trans_restart_upgrade_total counter +node_bcachefs_trans_restart_upgrade_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.055154e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_recursion_limit_total Bcachefs counter trans_restart_would_deadlock_recursion_limit since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_recursion_limit_total counter +node_bcachefs_trans_restart_would_deadlock_recursion_limit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 0 +# HELP node_bcachefs_trans_restart_would_deadlock_total Bcachefs counter trans_restart_would_deadlock since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_total counter +node_bcachefs_trans_restart_would_deadlock_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 1.025983e+06 +# HELP node_bcachefs_trans_restart_would_deadlock_write_total Bcachefs counter trans_restart_would_deadlock_write since filesystem creation. +# TYPE node_bcachefs_trans_restart_would_deadlock_write_total counter +node_bcachefs_trans_restart_would_deadlock_write_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 2 +# HELP node_bcachefs_trans_restart_write_buffer_flush_total Bcachefs counter trans_restart_write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_trans_restart_write_buffer_flush_total counter +node_bcachefs_trans_restart_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 5.1706894e+07 +# HELP node_bcachefs_trans_traverse_all_total Bcachefs counter trans_traverse_all since filesystem creation. +# TYPE node_bcachefs_trans_traverse_all_total counter +node_bcachefs_trans_traverse_all_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 7.8477746e+07 +# HELP node_bcachefs_transaction_commit_total Bcachefs counter transaction_commit since filesystem creation. +# TYPE node_bcachefs_transaction_commit_total counter +node_bcachefs_transaction_commit_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.338059022e+09 +# HELP node_bcachefs_write_buffer_flush_slowpath_total Bcachefs counter write_buffer_flush_slowpath since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_slowpath_total counter +node_bcachefs_write_buffer_flush_slowpath_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 21031 +# HELP node_bcachefs_write_buffer_flush_sync_total Bcachefs counter write_buffer_flush_sync since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_sync_total counter +node_bcachefs_write_buffer_flush_sync_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 6.024402e+06 +# HELP node_bcachefs_write_buffer_flush_total Bcachefs counter write_buffer_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_flush_total counter +node_bcachefs_write_buffer_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.8370568e+07 +# HELP node_bcachefs_write_buffer_maybe_flush_total Bcachefs counter write_buffer_maybe_flush since filesystem creation. +# TYPE node_bcachefs_write_buffer_maybe_flush_total counter +node_bcachefs_write_buffer_maybe_flush_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 4.7412849e+07 +# HELP node_bcachefs_write_super_total Bcachefs counter write_super since filesystem creation. +# TYPE node_bcachefs_write_super_total counter +node_bcachefs_write_super_total{uuid="deadbeef-1234-5678-9012-abcdefabcdef"} 30277 # HELP node_bonding_active Number of active slaves per bonding interface. # TYPE node_bonding_active gauge node_bonding_active{master="bond0"} 0 @@ -3081,6 +3672,7 @@ node_schedstat_waiting_seconds_total{cpu="1"} 364107.263788241 # TYPE node_scrape_collector_success gauge node_scrape_collector_success{collector="arp"} 1 node_scrape_collector_success{collector="bcache"} 1 +node_scrape_collector_success{collector="bcachefs"} 1 node_scrape_collector_success{collector="bonding"} 1 node_scrape_collector_success{collector="btrfs"} 1 node_scrape_collector_success{collector="buddyinfo"} 1 diff --git a/collector/fixtures/sys.ttar b/collector/fixtures/sys.ttar index f8a453fe..bc8744cb 100644 --- a/collector/fixtures/sys.ttar +++ b/collector/fixtures/sys.ttar @@ -3409,8 +3409,8 @@ Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/config Lines: 2 - -TNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE!PNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEEOF +�� +TNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE��NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE��!PNULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTEEOF Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/consistent_dma_mask_bits @@ -5213,7 +5213,7 @@ Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/config Lines: 1 -"4NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEPNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEEOF +"4NULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTE������NULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEPNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTE�NULLBYTENULLBYTEEOF Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:00/0000:00:02.1/consistent_dma_mask_bits @@ -8004,8 +8004,8 @@ Mode: 444 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Path: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/vpd Lines: 2 -:NULLBYTEIntel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0dNULLBYTEV1:Intel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0PN -K53978-004SN 6805CAF0CB12V24521RVxEOF +�:NULLBYTEIntel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0�dNULLBYTEV1:Intel (r) Ethernet Network Adapter I350-T4 for OCP NIC 3.0PN +K53978-004SN 6805CAF0CB12V24521RV�xEOF Mode: 600 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/devices/pci0000:40/0000:40:01.3/0000:45:00.0/wakeup @@ -9644,6 +9644,1172 @@ Lines: 1 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/btree_cache_size +Lines: 1 +2.05G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/btree_write_stats +Lines: 6 + nr size +initial: 3298401 100k +init_next_bset: 4055926 28.2k +cache_reclaim: 14401 720 +journal_reclaim: 66903805 697 +interior: 3035363 1.26k +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/compression_stats +Lines: 6 +typetype compressed uncompressed average extent size +lz4_old 0 0 0 +gzip 0 0 0 +lz4 48.9G 71.2G 62.5k +zstd 226G 603G 115k +incompressible 10.8T 10.8T 90.4k +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/accounting_key_to_wb_slowpath +Lines: 2 +since mount: 39816825 +since filesystem creation: 44105502 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bkey_pack_pos_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize +Lines: 2 +since mount: 0 +since filesystem creation: 26587339 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize_lock +Lines: 2 +since mount: 3070115 +since filesystem creation: 62061408 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize_lock_fail +Lines: 2 +since mount: 2540 +since filesystem creation: 24213 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_cannibalize_unlock +Lines: 2 +since mount: 3070115 +since filesystem creation: 36260384 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_reap +Lines: 2 +since mount: 10555604 +since filesystem creation: 69068459 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_cache_scan +Lines: 2 +since mount: 137595 +since filesystem creation: 427545 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_key_cache_fill +Lines: 2 +since mount: 19814483 +since filesystem creation: 169308144 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_alloc +Lines: 2 +since mount: 3298401 +since filesystem creation: 8665587 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_compact +Lines: 2 +since mount: 2620840 +since filesystem creation: 5554425 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_free +Lines: 2 +since mount: 5926033 +since filesystem creation: 14112667 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_merge +Lines: 2 +since mount: 224564 +since filesystem creation: 559684 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_merge_attempt +Lines: 2 +since mount: 13549164 +since filesystem creation: 15868895 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_read +Lines: 2 +since mount: 10566234 +since filesystem creation: 70225874 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_rewrite +Lines: 2 +since mount: 8227 +since filesystem creation: 1130316 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_set_root +Lines: 2 +since mount: 7779 +since filesystem creation: 77958 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_split +Lines: 2 +since mount: 222385 +since filesystem creation: 710571 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_node_write +Lines: 2 +since mount: 77307915 +since filesystem creation: 147968490 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_path_relock_fail +Lines: 2 +since mount: 2972086 +since filesystem creation: 56213103 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_path_upgrade_fail +Lines: 2 +since mount: 683421 +since filesystem creation: 2103667 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/btree_reserve_get_fail +Lines: 2 +since mount: 71 +since filesystem creation: 11706 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_alloc +Lines: 2 +since mount: 7224514 +since filesystem creation: 37363674 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_alloc_fail +Lines: 2 +since mount: 0 +since filesystem creation: 11156091 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_alloc_from_stripe +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard +Lines: 2 +since mount: 5662938 +since filesystem creation: 24751388 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard_fast +Lines: 2 +since mount: 3812 +since filesystem creation: 10204 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard_fast_worker +Lines: 2 +since mount: 3812 +since filesystem creation: 4012 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_discard_worker +Lines: 2 +since mount: 2584384 +since filesystem creation: 7021501 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/bucket_invalidate +Lines: 2 +since mount: 23630 +since filesystem creation: 3483205 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/cached_ptr_drop +Lines: 2 +since mount: 0 +since filesystem creation: 2.05G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/copygc +Lines: 2 +since mount: 7 +since filesystem creation: 424790 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/copygc_wait_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 537321 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read +Lines: 2 +since mount: 475G +since filesystem creation: 44.5T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_bounce +Lines: 2 +since mount: 1918904 +since filesystem creation: 250520580 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_fail_and_poison +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_hole +Lines: 2 +since mount: 7.04G +since filesystem creation: 1.69T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_inline +Lines: 2 +since mount: 710M +since filesystem creation: 14.9G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_narrow_crcs +Lines: 2 +since mount: 0 +since filesystem creation: 18529 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_narrow_crcs_fail +Lines: 2 +since mount: 0 +since filesystem creation: 1779 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote +Lines: 2 +since mount: 8963785 +since filesystem creation: 242468868 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_already_promoted +Lines: 2 +since mount: 8890276 +since filesystem creation: 211037452 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_congested +Lines: 2 +since mount: 64143 +since filesystem creation: 2913847 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_may_not +Lines: 2 +since mount: 0 +since filesystem creation: 20206095 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_nopromote_unwritten +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_promote +Lines: 2 +since mount: 12.8G +since filesystem creation: 391G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_retry +Lines: 2 +since mount: 183 +since filesystem creation: 22404675 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_reuse_race +Lines: 2 +since mount: 25 +since filesystem creation: 201095 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_read_split +Lines: 2 +since mount: 464596 +since filesystem creation: 218590695 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update +Lines: 2 +since mount: 61.8T +since filesystem creation: 21.5P +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_fail +Lines: 2 +since mount: 2.44M +since filesystem creation: 1.06G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_in_flight +Lines: 2 +since mount: 2532017 +since filesystem creation: 3978784 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_key +Lines: 2 +since mount: 61.8T +since filesystem creation: 91.2T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_key_fail +Lines: 2 +since mount: 22.4G +since filesystem creation: 22.7G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_no_io +Lines: 2 +since mount: 80.2G +since filesystem creation: 93.9G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_noop_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_pred +Lines: 2 +since mount: 8.64M +since filesystem creation: 45.0T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_read +Lines: 2 +since mount: 6.94T +since filesystem creation: 81.3T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_start_fail_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 314018822443 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_useless_write_fail +Lines: 2 +since mount: 4.87G +since filesystem creation: 4.94G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_update_write +Lines: 2 +since mount: 6.96T +since filesystem creation: 33.8T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/data_write +Lines: 2 +since mount: 346G +since filesystem creation: 18.9T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/error_throw +Lines: 2 +since mount: 2252331183 +since filesystem creation: 4719910958 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/evacuate_bucket +Lines: 2 +since mount: 112 +since filesystem creation: 6735247 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/fsync +Lines: 2 +since mount: 302707 +since filesystem creation: 1515147 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/gc_gens_end +Lines: 2 +since mount: 0 +since filesystem creation: 3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/gc_gens_start +Lines: 2 +since mount: 0 +since filesystem creation: 3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_full +Lines: 2 +since mount: 1459 +since filesystem creation: 94587 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_reclaim_finish +Lines: 2 +since mount: 93364037 +since filesystem creation: 406994135 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_reclaim_start +Lines: 2 +since mount: 93364037 +since filesystem creation: 406994135 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_res_get_blocked +Lines: 2 +since mount: 27723 +since filesystem creation: 74696 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/journal_write +Lines: 2 +since mount: 5081352 +since filesystem creation: 15458801 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/open_bucket_alloc_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_btree +Lines: 2 +since mount: 2.00G +since filesystem creation: 2.01G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_clear_scan +Lines: 2 +since mount: 2 +since filesystem creation: 11 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_data +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_phys +Lines: 2 +since mount: 62.7T +since filesystem creation: 63.6T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_device +Lines: 2 +since mount: 1.03T +since filesystem creation: 76.0T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_fs +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_inum +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_metadata +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_scan_pending +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/reconcile_set_pending +Lines: 2 +since mount: 0 +since filesystem creation: 29.0G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/sectors_alloc +Lines: 2 +since mount: 8.08T +since filesystem creation: 11.4T +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_alloc +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_create +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_create_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_delete +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_reuse +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_update_bucket +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_update_extent +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/stripe_update_extent_fail +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/sync_fs +Lines: 2 +since mount: 5732 +since filesystem creation: 42023 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_blocked_journal_reclaim +Lines: 2 +since mount: 13 +since filesystem creation: 78 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_btree_node_reused +Lines: 2 +since mount: 38290 +since filesystem creation: 53354 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_btree_node_split +Lines: 2 +since mount: 19007 +since filesystem creation: 100190 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_fault_inject +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_injected +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_iter_upgrade +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_journal_preres_get +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_journal_reclaim +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_journal_res_get +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_key_cache_key_realloced +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_key_cache_raced +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_key_cache_upgrade +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_mark_replicas +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_mem_realloced +Lines: 2 +since mount: 73 +since filesystem creation: 6111 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_memory_allocation_failure +Lines: 2 +since mount: 0 +since filesystem creation: 27513334 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock +Lines: 2 +since mount: 912579 +since filesystem creation: 2806875 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_after_fill +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_key_cache_fill_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_next_node +Lines: 2 +since mount: 0 +since filesystem creation: 22087 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_parent_for_fill_obsolete +Lines: 2 +since mount: 0 +since filesystem creation: 2581 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_path +Lines: 2 +since mount: 10664021 +since filesystem creation: 47527280 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_relock_path_intent +Lines: 2 +since mount: 0 +since filesystem creation: 298090 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_split_race +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_too_many_iters +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_traverse +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_upgrade +Lines: 2 +since mount: 200974 +since filesystem creation: 1055154 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_would_deadlock +Lines: 2 +since mount: 135555 +since filesystem creation: 1025983 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_would_deadlock_recursion_limit +Lines: 2 +since mount: 0 +since filesystem creation: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_would_deadlock_write +Lines: 2 +since mount: 2 +since filesystem creation: 2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_restart_write_buffer_flush +Lines: 2 +since mount: 47215660 +since filesystem creation: 51706894 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/trans_traverse_all +Lines: 2 +since mount: 17672014 +since filesystem creation: 78477746 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/transaction_commit +Lines: 2 +since mount: 1289297181 +since filesystem creation: 4338059022 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_flush +Lines: 2 +since mount: 47596631 +since filesystem creation: 48370568 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_flush_slowpath +Lines: 2 +since mount: 0 +since filesystem creation: 21031 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_flush_sync +Lines: 2 +since mount: 15 +since filesystem creation: 6024402 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_buffer_maybe_flush +Lines: 2 +since mount: 47215669 +since filesystem creation: 47412849 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/counters/write_super +Lines: 2 +since mount: 21 +since filesystem creation: 30277 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/bucket_size +Lines: 1 +512k +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/durability +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 5242880 +user :102313054208 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal : 0 +btree : 16384 +user :252377698304 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/io_errors +Lines: 8 +IO errors since filesystem creation + read: 0 + write: 0 + checksum:0 +IO errors since 8 y ago + read: 0 + write: 0 + checksum:0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/label +Lines: 1 +disk-10 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/nbuckets +Lines: 1 +953880 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-10/state +Lines: 1 +[rw] ro evacuating spare +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/bucket_size +Lines: 1 +2.00M +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/durability +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 2193358848 +user :3770452246528 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal : 0 +btree : 589824 +user :6258285805568 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/io_errors +Lines: 8 +IO errors since filesystem creation + read: 197416 + write: 205 + checksum:0 +IO errors since 8 y ago + read: 197416 + write: 205 + checksum:0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/label +Lines: 1 +disk-4 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/nbuckets +Lines: 1 +7629824 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-4/state +Lines: 1 +[rw] ro evacuating spare +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/bucket_size +Lines: 1 +2.00M +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/durability +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 8912896 +user :610019098624 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 677376 +journal : 0 +btree : 0 +user :562070339584 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/io_errors +Lines: 8 +IO errors since filesystem creation + read: 18828 + write: 1 + checksum:5 +IO errors since 8 y ago + read: 18828 + write: 1 + checksum:5 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/label +Lines: 1 +disk-6 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/nbuckets +Lines: 1 +953864 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-6/state +Lines: 1 +[rw] ro evacuating spare +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/bucket_size +Lines: 1 +2.00M +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/durability +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree :2767671263232 +user :553932742656 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal :2432028966912 +btree :782753624064 +user :383826411520 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/io_errors +Lines: 8 +IO errors since filesystem creation + read: 0 + write: 0 + checksum:18 +IO errors since 8 y ago + read: 0 + write: 0 + checksum:18 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/label +Lines: 1 +disk-7 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/nbuckets +Lines: 1 +1907723 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-7/state +Lines: 1 +[rw] ro evacuating spare +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/bucket_size +Lines: 1 +2.00M +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/durability +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/io_done +Lines: 22 +read: +sb : 86016 +journal : 0 +btree : 0 +user :3115020546048 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +write: +sb : 645120 +journal : 0 +btree : 0 +user :6072510210048 +cached : 0 +parity : 0 +stripe : 0 +need_gc_gens: 0 +need_discard: 0 +unstriped : 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/io_errors +Lines: 8 +IO errors since filesystem creation + read: 0 + write: 0 + checksum:0 +IO errors since 8 y ago + read: 0 + write: 0 + checksum:0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/label +Lines: 1 +disk-8 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/nbuckets +Lines: 1 +2384637 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/dev-8/state +Lines: 1 +[rw] ro evacuating spare +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: sys/fs/bcachefs/deadbeef-1234-5678-9012-abcdefabcdef/errors +Lines: 18 +btree_node_data_missing 2 1753593586 +bset_bad_csum 2 1767112063 +btree_node_topology_bad_max_key 2 1767080711 +alloc_key_to_missing_lru_entry 4517 1771754289 +alloc_key_data_type_wrong 4415 1771753607 +alloc_key_dirty_sectors_wrong 4538 1771753607 +alloc_key_cached_sectors_wrong 4537 1771753607 +backpointer_to_missing_ptr 45480 1771754172 +lru_entry_bad 4537 1771753700 +ptr_to_missing_backpointer 44112 1771754284 +accounting_mismatch 6 1771753608 +subvol_missing 194 1761076737 +reconcile_work_incorrectly_set 113913 1771755828 +vfs_bad_inode_rm 121 1758960176 +validate_error_in_commit 2 1771750773 +extent_io_opts_not_set 11299659571772285102 +extent_ptrs_all_invalid 2 1771750773 +extent_ptrs_all_invalid_but_cached 44612 1771753458 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Directory: sys/fs/btrfs Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/end-to-end-test.sh b/end-to-end-test.sh index de490bff..bd967956 100755 --- a/end-to-end-test.sh +++ b/end-to-end-test.sh @@ -37,6 +37,7 @@ supported_collectors() { enabled_collectors=$(cat << COLLECTORS arp bcache + bcachefs bonding btrfs buddyinfo From 4c337ddcd43feb86b21789ab0a61d82ae03e3c33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 16:18:44 +0000 Subject: [PATCH 108/109] build(deps): bump actions/setup-go from 6.2.0 to 6.3.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5...4b73464bb391d4059bd26b0524d20df3927bd417) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index dc8ffd02..e3738aa3 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -30,7 +30,7 @@ jobs: with: persist-credentials: false - name: Install Go - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 + uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: go-version: 1.26.x - name: Install snmp_exporter/generator dependencies From 0f5c15834bcfe027be499abe34673e869d4d5386 Mon Sep 17 00:00:00 2001 From: PrometheusBot Date: Thu, 19 Mar 2026 19:54:55 +0100 Subject: [PATCH 109/109] Update common Prometheus files (#3584) Signed-off-by: prombot --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index e3738aa3..dc8ffd02 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -30,7 +30,7 @@ jobs: with: persist-credentials: false - name: Install Go - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 + uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: go-version: 1.26.x - name: Install snmp_exporter/generator dependencies