seba-599:redfish-stats
Change-Id: I8b6614d9e3c532140aa9bb077180664eda838e53
diff --git a/VERSION b/VERSION
index 4dfdebd..9897421 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.5-dev
+1.2.6-dev
diff --git a/main.go b/main.go
index 46f6df0..9c86008 100644
--- a/main.go
+++ b/main.go
@@ -118,6 +118,11 @@
prometheus.MustRegister(onosPppoeDownRxPackets)
prometheus.MustRegister(onosPppoeDownTxBytes)
prometheus.MustRegister(onosPppoeDownTxPackets)
+
+ prometheus.MustRegister(deviceLaserBiasCurrent)
+ prometheus.MustRegister(deviceTemperature)
+ prometheus.MustRegister(deviceTxPower)
+ prometheus.MustRegister(deviceVoltage)
}
func loadConfigFile() Config {
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)
diff --git a/types.go b/types.go
index 6185064..ece3953 100644
--- a/types.go
+++ b/types.go
@@ -112,8 +112,11 @@
}
type ImporterKPI struct {
- DeviceID string `json: "deviceId"`
- // TODO: add metrics data
+ Timestamp int64
+ LaserBiasCurrent float64
+ Temperature float64
+ TxPower float64
+ Voltage float64
}
type OnosAaaKPI struct {