SEBA-267 Add ONU Performance Metrics to Kafka Exporter
Change-Id: I18902935a4654c3a241284093b8a456a226f707f
diff --git a/prometheus.go b/prometheus.go
index 15ce599..a1bc327 100644
--- a/prometheus.go
+++ b/prometheus.go
@@ -14,7 +14,9 @@
package main
-import "github.com/prometheus/client_golang/prometheus"
+import (
+ "github.com/prometheus/client_golang/prometheus"
+)
var (
txBytesTotal = prometheus.NewGaugeVec(
@@ -66,72 +68,128 @@
func export(kpi KPI) {
for _, data := range kpi.SliceDatas {
- txBytesTotal.WithLabelValues(
- data.Metadata.LogicalDeviceID,
- data.Metadata.SerialNumber,
- data.Metadata.DeviceID,
- data.Metadata.Context.InterfaceID,
- data.Metadata.Context.PonID,
- data.Metadata.Context.PortNumber,
- data.Metadata.Title,
- ).Set(data.Metrics.TxBytes)
+ switch title := data.Metadata.Title; title {
+ case "Ethernet", "PON":
+ txBytesTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ data.Metadata.Context.InterfaceID,
+ data.Metadata.Context.PonID,
+ data.Metadata.Context.PortNumber,
+ data.Metadata.Title,
+ ).Set(data.Metrics.TxBytes)
- rxBytesTotal.WithLabelValues(
- data.Metadata.LogicalDeviceID,
- data.Metadata.SerialNumber,
- data.Metadata.DeviceID,
- data.Metadata.Context.InterfaceID,
- data.Metadata.Context.PonID,
- data.Metadata.Context.PortNumber,
- data.Metadata.Title,
- ).Set(data.Metrics.RxBytes)
+ rxBytesTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ data.Metadata.Context.InterfaceID,
+ data.Metadata.Context.PonID,
+ data.Metadata.Context.PortNumber,
+ data.Metadata.Title,
+ ).Set(data.Metrics.RxBytes)
- txPacketsTotal.WithLabelValues(
- data.Metadata.LogicalDeviceID,
- data.Metadata.SerialNumber,
- data.Metadata.DeviceID,
- data.Metadata.Context.InterfaceID,
- data.Metadata.Context.PonID,
- data.Metadata.Context.PortNumber,
- data.Metadata.Title,
- ).Set(data.Metrics.TxPackets)
+ txPacketsTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ data.Metadata.Context.InterfaceID,
+ data.Metadata.Context.PonID,
+ data.Metadata.Context.PortNumber,
+ data.Metadata.Title,
+ ).Set(data.Metrics.TxPackets)
- rxPacketsTotal.WithLabelValues(
- data.Metadata.LogicalDeviceID,
- data.Metadata.SerialNumber,
- data.Metadata.DeviceID,
- data.Metadata.Context.InterfaceID,
- data.Metadata.Context.PonID,
- data.Metadata.Context.PortNumber,
- data.Metadata.Title,
- ).Set(data.Metrics.RxPackets)
+ rxPacketsTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ data.Metadata.Context.InterfaceID,
+ data.Metadata.Context.PonID,
+ data.Metadata.Context.PortNumber,
+ data.Metadata.Title,
+ ).Set(data.Metrics.RxPackets)
- txErrorPacketsTotal.WithLabelValues(
- data.Metadata.LogicalDeviceID,
- data.Metadata.SerialNumber,
- data.Metadata.DeviceID,
- data.Metadata.Context.InterfaceID,
- data.Metadata.Context.PonID,
- data.Metadata.Context.PortNumber,
- data.Metadata.Title,
- ).Set(data.Metrics.TxErrorPackets)
+ txErrorPacketsTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ data.Metadata.Context.InterfaceID,
+ data.Metadata.Context.PonID,
+ data.Metadata.Context.PortNumber,
+ data.Metadata.Title,
+ ).Set(data.Metrics.TxErrorPackets)
- rxErrorPacketsTotal.WithLabelValues(
- data.Metadata.LogicalDeviceID,
- data.Metadata.SerialNumber,
- data.Metadata.DeviceID,
- data.Metadata.Context.InterfaceID,
- data.Metadata.Context.PonID,
- data.Metadata.Context.PortNumber,
- data.Metadata.Title,
- ).Set(data.Metrics.RxErrorPackets)
+ rxErrorPacketsTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ data.Metadata.Context.InterfaceID,
+ data.Metadata.Context.PonID,
+ data.Metadata.Context.PortNumber,
+ data.Metadata.Title,
+ ).Set(data.Metrics.RxErrorPackets)
- // TODO add metrics for:
- // TxBcastPackets
- // TxUnicastPackets
- // TxMulticastPackets
- // RxBcastPackets
- // RxMulticastPackets
+ // TODO add metrics for:
+ // TxBcastPackets
+ // TxUnicastPackets
+ // TxMulticastPackets
+ // RxBcastPackets
+ // RxMulticastPackets
+ case "Ethernet_Bridge_Port_History":
+ if data.Metadata.Context.Upstream == "True" {
+ // ONU. Extended Ethernet statistics.
+ txPacketsTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ "NA", // InterfaceID
+ "NA", // PonID
+ "NA", // PortNumber
+ data.Metadata.Title,
+ ).Add(data.Metrics.Packets)
+
+ txBytesTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ "NA", // InterfaceID
+ "NA", // PonID
+ "NA", // PortNumber
+ data.Metadata.Title,
+ ).Add(data.Metrics.Octets)
+ } else {
+ // ONU. Extended Ethernet statistics.
+ rxPacketsTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ "NA", // InterfaceID
+ "NA", // PonID
+ "NA", // PortNumber
+ data.Metadata.Title,
+ ).Add(data.Metrics.Packets)
+
+ rxBytesTotal.WithLabelValues(
+ data.Metadata.LogicalDeviceID,
+ data.Metadata.SerialNumber,
+ data.Metadata.DeviceID,
+ "NA", // InterfaceID
+ "NA", // PonID
+ "NA", // PortNumber
+ data.Metadata.Title,
+ ).Add(data.Metrics.Octets)
+ }
+
+ case "Ethernet_UNI_History":
+ // ONU. Do nothing.
+
+ case "FEC_History":
+ // ONU. Do Nothing.
+
+ case "voltha.internal":
+ // Voltha Internal. Do nothing.
+ }
}
}