@@ -93,15 +93,15 @@ func NewNetDevCollector(logger log.Logger) (Collector, error) {
9393 }, nil
9494}
9595
96- func (c * netDevCollector ) metricDesc (key string ) * prometheus.Desc {
96+ func (c * netDevCollector ) metricDesc (key string , labels [] string ) * prometheus.Desc {
9797 c .metricDescsMutex .Lock ()
9898 defer c .metricDescsMutex .Unlock ()
9999
100100 if _ , ok := c .metricDescs [key ]; ! ok {
101101 c .metricDescs [key ] = prometheus .NewDesc (
102102 prometheus .BuildFQName (namespace , c .subsystem , key + "_total" ),
103103 fmt .Sprintf ("Network device statistic %s." , key ),
104- [] string { "device" } ,
104+ labels ,
105105 nil ,
106106 )
107107 }
@@ -114,13 +114,28 @@ func (c *netDevCollector) Update(ch chan<- prometheus.Metric) error {
114114 if err != nil {
115115 return fmt .Errorf ("couldn't get netstats: %w" , err )
116116 }
117+
118+ netDevLabels , err := getNetDevLabels ()
119+ if err != nil {
120+ return fmt .Errorf ("couldn't get netdev labels: %w" , err )
121+ }
122+
117123 for dev , devStats := range netDev {
118124 if ! * netdevDetailedMetrics {
119125 legacy (devStats )
120126 }
121127 for key , value := range devStats {
122- desc := c .metricDesc (key )
123- ch <- prometheus .MustNewConstMetric (desc , prometheus .CounterValue , float64 (value ), dev )
128+ labels := []string {"device" }
129+ labelValues := []string {dev }
130+ if devLabels , exists := netDevLabels [dev ]; exists {
131+ for labelName , labelValue := range devLabels {
132+ labels = append (labels , labelName )
133+ labelValues = append (labelValues , labelValue )
134+ }
135+ }
136+
137+ desc := c .metricDesc (key , labels )
138+ ch <- prometheus .MustNewConstMetric (desc , prometheus .CounterValue , float64 (value ), labelValues ... )
124139 }
125140 }
126141 if * netdevAddressInfo {
0 commit comments