Skip to content

Commit d4241aa

Browse files
committed
netdev_common: Add ifAlias label
1 parent b9d0932 commit d4241aa

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

collector/netdev_common.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ import (
2121
"errors"
2222
"fmt"
2323
"net"
24+
"os"
2425
"strconv"
26+
"strings"
2527
"sync"
2628

2729
"github.com/alecthomas/kingpin/v2"
@@ -37,6 +39,7 @@ var (
3739
oldNetdevDeviceExclude = kingpin.Flag("collector.netdev.device-blacklist", "DEPRECATED: Use collector.netdev.device-exclude").Hidden().String()
3840
netdevAddressInfo = kingpin.Flag("collector.netdev.address-info", "Collect address-info for every device").Bool()
3941
netdevDetailedMetrics = kingpin.Flag("collector.netdev.enable-detailed-metrics", "Use (incompatible) metric names that provide more detailed stats on Linux").Bool()
42+
netdevLabelIfAlias = kingpin.Flag("collector.netdev.label-ifalias", "Add ifAlias label").Bool()
4043
)
4144

4245
type netDevCollector struct {
@@ -98,10 +101,15 @@ func (c *netDevCollector) metricDesc(key string) *prometheus.Desc {
98101
defer c.metricDescsMutex.Unlock()
99102

100103
if _, ok := c.metricDescs[key]; !ok {
104+
labels := []string{"device"}
105+
if *netdevLabelIfAlias {
106+
labels = append(labels, "ifalias")
107+
}
108+
101109
c.metricDescs[key] = prometheus.NewDesc(
102110
prometheus.BuildFQName(namespace, c.subsystem, key+"_total"),
103111
fmt.Sprintf("Network device statistic %s.", key),
104-
[]string{"device"},
112+
labels,
105113
nil,
106114
)
107115
}
@@ -120,7 +128,13 @@ func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error {
120128
}
121129
for key, value := range devStats {
122130
desc := c.metricDesc(key)
123-
ch <- prometheus.MustNewConstMetric(desc, prometheus.CounterValue, float64(value), dev)
131+
132+
labelValues := []string{dev}
133+
if *netdevLabelIfAlias {
134+
labelValues = append(labelValues, getIfAlias(dev))
135+
}
136+
137+
ch <- prometheus.MustNewConstMetric(desc, prometheus.CounterValue, float64(value), labelValues...)
124138
}
125139
}
126140
if *netdevAddressInfo {
@@ -239,3 +253,13 @@ func popz(m map[string]uint64, key string) uint64 {
239253
}
240254
return 0
241255
}
256+
257+
func getIfAlias(dev string) string {
258+
IfAliasPath := fmt.Sprintf("/sys/class/net/%s/ifalias", dev)
259+
IfAliasBytes, err := os.ReadFile(IfAliasPath)
260+
if err != nil {
261+
return ""
262+
}
263+
264+
return strings.TrimSpace(string(IfAliasBytes))
265+
}

0 commit comments

Comments
 (0)