seba-599:redfish-stats
Change-Id: I8b6614d9e3c532140aa9bb077180664eda838e53
diff --git a/topic-exporter.go b/topic-exporter.go
index 5d33458..f8d9d70 100644
--- a/topic-exporter.go
+++ b/topic-exporter.go
@@ -20,6 +20,7 @@
"github.com/prometheus/client_golang/prometheus"
log "github.com/sirupsen/logrus"
"strconv"
+ "strings"
)
var (
@@ -283,6 +284,26 @@
},
[]string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
)
+ deviceLaserBiasCurrent = prometheus.NewGauge(
+ prometheus.GaugeOpts{
+ Name: "device_laser_bias_current",
+ Help: "Device Laser Bias Current",
+ })
+ deviceTemperature = prometheus.NewGauge(
+ prometheus.GaugeOpts{
+ Name: "device_temperature",
+ Help: "Device Temperature",
+ })
+ deviceTxPower = prometheus.NewGauge(
+ prometheus.GaugeOpts{
+ Name: "device_tx_power",
+ Help: "Device Tx Power",
+ })
+ deviceVoltage = prometheus.NewGauge(
+ prometheus.GaugeOpts{
+ Name: "device_voltage",
+ Help: "Device Voltage",
+ })
)
func exportVolthaKPI(kpi VolthaKPI) {
@@ -569,8 +590,10 @@
}
func exportImporterKPI(kpi ImporterKPI) {
- // TODO: add metrics for importer data
- logger.Info("To be implemented")
+ deviceLaserBiasCurrent.Set(kpi.LaserBiasCurrent)
+ deviceTemperature.Set(kpi.Temperature)
+ deviceTxPower.Set(kpi.TxPower)
+ deviceVoltage.Set(kpi.Voltage)
}
func exportOnosAaaKPI(kpi OnosAaaKPI) {
@@ -707,9 +730,27 @@
exportOnosKPI(kpi)
case "importer.kpis":
kpi := ImporterKPI{}
- err := json.Unmarshal(data, &kpi)
+ strData := string(data)
+ idx := strings.Index(strData, "{")
+ strData = strData[idx:]
+
+ var m map[string]interface{}
+ err := json.Unmarshal([]byte(strData), &m)
if err != nil {
- logger.Error("Invalid msg on importer.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
+ logger.Error("Invalid msg on importer.kpis: %s", err.Error())
+ logger.Debug("Unprocessed Msg: %s", strData)
+ break
+ }
+ if val, ok := m["TransceiverStatistics"]; ok {
+ stats := val.(map[string]interface{})
+ //kpi.Timestamp = time.Now().UnixNano()
+ kpi.LaserBiasCurrent = stats["BiasCurrent"].(map[string]interface{})["Reading"].(float64)
+ kpi.Temperature = stats["Temperature"].(map[string]interface{})["Reading"].(float64)
+ kpi.TxPower = stats["TxPower"].(map[string]interface{})["Reading"].(float64)
+ kpi.Voltage = stats["Voltage"].(map[string]interface{})["Reading"].(float64)
+ } else {
+ logger.Error("Optical stats (TransceiverStatistics) information missing [topic=importer.kpis")
+ logger.Debug("Unprocessed Msg: %s", strData)
break
}
exportImporterKPI(kpi)