Merge pull request #872 from jimmidyson/prom-multiple-interfaces

Expose all interfaces in Prometheus metrics.
This commit is contained in:
Vish Kannan 2015-09-01 11:05:49 -07:00
commit cefada41b8
3 changed files with 117 additions and 40 deletions

View File

@ -287,60 +287,124 @@ func NewPrometheusCollector(infoProvider subcontainersInfoProvider) *PrometheusC
}) })
}, },
}, { }, {
name: "container_network_receive_bytes_total", name: "container_network_receive_bytes_total",
help: "Cumulative count of bytes received", help: "Cumulative count of bytes received",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.RxBytes)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.RxBytes),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_receive_packets_total", name: "container_network_receive_packets_total",
help: "Cumulative count of packets received", help: "Cumulative count of packets received",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.RxPackets)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.RxPackets),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_receive_packets_dropped_total", name: "container_network_receive_packets_dropped_total",
help: "Cumulative count of packets dropped while receiving", help: "Cumulative count of packets dropped while receiving",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.RxDropped)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.RxDropped),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_receive_errors_total", name: "container_network_receive_errors_total",
help: "Cumulative count of errors encountered while receiving", help: "Cumulative count of errors encountered while receiving",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.RxErrors)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.RxErrors),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_transmit_bytes_total", name: "container_network_transmit_bytes_total",
help: "Cumulative count of bytes transmitted", help: "Cumulative count of bytes transmitted",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.TxBytes)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.TxBytes),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_transmit_packets_total", name: "container_network_transmit_packets_total",
help: "Cumulative count of packets transmitted", help: "Cumulative count of packets transmitted",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.TxPackets)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.TxPackets),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_transmit_packets_dropped_total", name: "container_network_transmit_packets_dropped_total",
help: "Cumulative count of packets dropped while transmitting", help: "Cumulative count of packets dropped while transmitting",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.TxDropped)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.TxDropped),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_network_transmit_errors_total", name: "container_network_transmit_errors_total",
help: "Cumulative count of errors encountered while transmitting", help: "Cumulative count of errors encountered while transmitting",
valueType: prometheus.CounterValue, valueType: prometheus.CounterValue,
extraLabels: []string{"interface"},
getValues: func(s *info.ContainerStats) metricValues { getValues: func(s *info.ContainerStats) metricValues {
return metricValues{{value: float64(s.Network.TxErrors)}} values := make(metricValues, 0, len(s.Network.Interfaces))
for _, value := range s.Network.Interfaces {
values = append(values, metricValue{
value: float64(value.TxErrors),
labels: []string{value.Name},
})
}
return values
}, },
}, { }, {
name: "container_tasks_state", name: "container_tasks_state",

View File

@ -71,6 +71,19 @@ func (p testSubcontainersInfoProvider) SubcontainersInfo(string, *info.Container
TxErrors: 20, TxErrors: 20,
TxDropped: 21, TxDropped: 21,
}, },
Interfaces: []info.InterfaceStats{
{
Name: "eth0",
RxBytes: 14,
RxPackets: 15,
RxErrors: 16,
RxDropped: 17,
TxBytes: 18,
TxPackets: 19,
TxErrors: 20,
TxDropped: 21,
},
},
}, },
Filesystem: []info.FsStats{ Filesystem: []info.FsStats{
{ {

View File

@ -79,28 +79,28 @@ container_memory_usage_bytes{id="testcontainer",image="test",name="testcontainer
container_memory_working_set_bytes{id="testcontainer",image="test",name="testcontainer"} 9 container_memory_working_set_bytes{id="testcontainer",image="test",name="testcontainer"} 9
# HELP container_network_receive_bytes_total Cumulative count of bytes received # HELP container_network_receive_bytes_total Cumulative count of bytes received
# TYPE container_network_receive_bytes_total counter # TYPE container_network_receive_bytes_total counter
container_network_receive_bytes_total{id="testcontainer",image="test",name="testcontainer"} 14 container_network_receive_bytes_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 14
# HELP container_network_receive_errors_total Cumulative count of errors encountered while receiving # HELP container_network_receive_errors_total Cumulative count of errors encountered while receiving
# TYPE container_network_receive_errors_total counter # TYPE container_network_receive_errors_total counter
container_network_receive_errors_total{id="testcontainer",image="test",name="testcontainer"} 16 container_network_receive_errors_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 16
# HELP container_network_receive_packets_dropped_total Cumulative count of packets dropped while receiving # HELP container_network_receive_packets_dropped_total Cumulative count of packets dropped while receiving
# TYPE container_network_receive_packets_dropped_total counter # TYPE container_network_receive_packets_dropped_total counter
container_network_receive_packets_dropped_total{id="testcontainer",image="test",name="testcontainer"} 17 container_network_receive_packets_dropped_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 17
# HELP container_network_receive_packets_total Cumulative count of packets received # HELP container_network_receive_packets_total Cumulative count of packets received
# TYPE container_network_receive_packets_total counter # TYPE container_network_receive_packets_total counter
container_network_receive_packets_total{id="testcontainer",image="test",name="testcontainer"} 15 container_network_receive_packets_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 15
# HELP container_network_transmit_bytes_total Cumulative count of bytes transmitted # HELP container_network_transmit_bytes_total Cumulative count of bytes transmitted
# TYPE container_network_transmit_bytes_total counter # TYPE container_network_transmit_bytes_total counter
container_network_transmit_bytes_total{id="testcontainer",image="test",name="testcontainer"} 18 container_network_transmit_bytes_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 18
# HELP container_network_transmit_errors_total Cumulative count of errors encountered while transmitting # HELP container_network_transmit_errors_total Cumulative count of errors encountered while transmitting
# TYPE container_network_transmit_errors_total counter # TYPE container_network_transmit_errors_total counter
container_network_transmit_errors_total{id="testcontainer",image="test",name="testcontainer"} 20 container_network_transmit_errors_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 20
# HELP container_network_transmit_packets_dropped_total Cumulative count of packets dropped while transmitting # HELP container_network_transmit_packets_dropped_total Cumulative count of packets dropped while transmitting
# TYPE container_network_transmit_packets_dropped_total counter # TYPE container_network_transmit_packets_dropped_total counter
container_network_transmit_packets_dropped_total{id="testcontainer",image="test",name="testcontainer"} 21 container_network_transmit_packets_dropped_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 21
# HELP container_network_transmit_packets_total Cumulative count of packets transmitted # HELP container_network_transmit_packets_total Cumulative count of packets transmitted
# TYPE container_network_transmit_packets_total counter # TYPE container_network_transmit_packets_total counter
container_network_transmit_packets_total{id="testcontainer",image="test",name="testcontainer"} 19 container_network_transmit_packets_total{id="testcontainer",image="test",interface="eth0",name="testcontainer"} 19
# HELP container_scrape_error 1 if there was an error while getting container metrics, 0 otherwise # HELP container_scrape_error 1 if there was an error while getting container metrics, 0 otherwise
# TYPE container_scrape_error gauge # TYPE container_scrape_error gauge
container_scrape_error 0 container_scrape_error 0