mirror of
https://github.com/prometheus/node_exporter.git
synced 2025-08-20 18:33:52 -07:00
Merge 7df3a8b94c
into be19d537cd
This commit is contained in:
commit
f03f1540bb
|
@ -22,16 +22,22 @@ import (
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
)
|
)
|
||||||
|
|
||||||
type bondingCollector struct {
|
type bondingCollector struct {
|
||||||
slaves, active typedDesc
|
slaves, active, miimon typedDesc
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type bondingStats struct {
|
||||||
|
name string
|
||||||
|
slaves, active, miimon int
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registerCollector("bonding", defaultEnabled, NewBondingCollector)
|
registerCollector("bonding", defaultEnabled, NewBondingCollector)
|
||||||
}
|
}
|
||||||
|
@ -50,6 +56,11 @@ func NewBondingCollector(logger *slog.Logger) (Collector, error) {
|
||||||
"Number of active slaves per bonding interface.",
|
"Number of active slaves per bonding interface.",
|
||||||
[]string{"master"}, nil,
|
[]string{"master"}, nil,
|
||||||
), prometheus.GaugeValue},
|
), prometheus.GaugeValue},
|
||||||
|
miimon: typedDesc{prometheus.NewDesc(
|
||||||
|
prometheus.BuildFQName(namespace, "bonding", "miimon"),
|
||||||
|
"MII link monitoring frequency in milliseconds.",
|
||||||
|
[]string{"master"}, nil,
|
||||||
|
), prometheus.GaugeValue},
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -65,15 +76,16 @@ func (c *bondingCollector) Update(ch chan<- prometheus.Metric) error {
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for master, status := range bondingStats {
|
for _, bond := range bondingStats {
|
||||||
ch <- c.slaves.mustNewConstMetric(float64(status[0]), master)
|
ch <- c.slaves.mustNewConstMetric(float64(bond.slaves), bond.name)
|
||||||
ch <- c.active.mustNewConstMetric(float64(status[1]), master)
|
ch <- c.active.mustNewConstMetric(float64(bond.active), bond.name)
|
||||||
|
ch <- c.miimon.mustNewConstMetric(float64(bond.miimon), bond.name)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readBondingStats(root string) (status map[string][2]int, err error) {
|
func readBondingStats(root string) (status []bondingStats, err error) {
|
||||||
status = map[string][2]int{}
|
status = []bondingStats{}
|
||||||
masters, err := os.ReadFile(filepath.Join(root, "bonding_masters"))
|
masters, err := os.ReadFile(filepath.Join(root, "bonding_masters"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -98,7 +110,22 @@ func readBondingStats(root string) (status map[string][2]int, err error) {
|
||||||
sstat[1]++
|
sstat[1]++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
status[master] = sstat
|
|
||||||
|
miimon, err := os.ReadFile(filepath.Join(root, master, "bonding", "miimon"))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
intMiimon, err := strconv.Atoi(strings.TrimSpace(string(miimon)))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
status = append(status, bondingStats{
|
||||||
|
name: master,
|
||||||
|
slaves: sstat[0],
|
||||||
|
active: sstat[1],
|
||||||
|
miimon: intMiimon,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
return status, err
|
return status, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,15 +25,15 @@ func TestBonding(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if bondingStats["bond0"][0] != 0 || bondingStats["bond0"][1] != 0 {
|
if bondingStats[0].name != "bond0" || bondingStats[0].slaves != 0 || bondingStats[0].active != 0 || bondingStats[0].miimon != 100 {
|
||||||
t.Fatal("bond0 in unexpected state")
|
t.Fatal("bond0 in unexpected state")
|
||||||
}
|
}
|
||||||
|
|
||||||
if bondingStats["int"][0] != 2 || bondingStats["int"][1] != 1 {
|
if bondingStats[1].name != "dmz" || bondingStats[1].slaves != 2 || bondingStats[1].active != 2 || bondingStats[1].miimon != 0 {
|
||||||
t.Fatal("int in unexpected state")
|
|
||||||
}
|
|
||||||
|
|
||||||
if bondingStats["dmz"][0] != 2 || bondingStats["dmz"][1] != 2 {
|
|
||||||
t.Fatal("dmz in unexpected state")
|
t.Fatal("dmz in unexpected state")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if bondingStats[2].name != "int" || bondingStats[2].slaves != 2 || bondingStats[2].active != 1 || bondingStats[2].miimon != 200 {
|
||||||
|
t.Fatal("int in unexpected state")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1723,6 +1723,11 @@ Path: sys/class/net/bond0/bonding/slaves
|
||||||
Lines: 0
|
Lines: 0
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/class/net/bond0/bonding/miimon
|
||||||
|
Lines: 1
|
||||||
|
100
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Path: sys/class/net/bond0/broadcast
|
Path: sys/class/net/bond0/broadcast
|
||||||
Lines: 1
|
Lines: 1
|
||||||
ff:ff:ff:ff:ff:ff
|
ff:ff:ff:ff:ff:ff
|
||||||
|
@ -1865,6 +1870,11 @@ Lines: 1
|
||||||
eth0 eth4
|
eth0 eth4
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/class/net/dmz/bonding/miimon
|
||||||
|
Lines: 1
|
||||||
|
0
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Path: sys/class/net/dmz/broadcast
|
Path: sys/class/net/dmz/broadcast
|
||||||
Lines: 1
|
Lines: 1
|
||||||
ff:ff:ff:ff:ff:ff
|
ff:ff:ff:ff:ff:ff
|
||||||
|
@ -2037,6 +2047,11 @@ Lines: 1
|
||||||
eth5 eth1
|
eth5 eth1
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/class/net/int/bonding/miimon
|
||||||
|
Lines: 1
|
||||||
|
200
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Path: sys/class/net/int/broadcast
|
Path: sys/class/net/int/broadcast
|
||||||
Lines: 1
|
Lines: 1
|
||||||
ff:ff:ff:ff:ff:ff
|
ff:ff:ff:ff:ff:ff
|
||||||
|
|
Loading…
Reference in a new issue