blob: 4532c283d070c211cae538d209dbcf30b6fe5ed7 [file] [log] [blame]
Matteo Scandoloaab36db2018-10-09 19:54:11 -07001// Copyright 2018 Open Networking Foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package main
16
17import (
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053018 "encoding/json"
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053019 "gerrit.opencord.org/kafka-topic-exporter/common/logger"
Ganesh Bhure74fb7b02019-06-28 16:16:26 +053020 "github.com/prometheus/client_golang/prometheus"
Daniele Morobe242582019-10-01 14:02:46 -070021 log "github.com/sirupsen/logrus"
22 "strconv"
Ganesh Bhuref15383e2019-11-11 15:15:14 +053023 "strings"
Matteo Scandoloaab36db2018-10-09 19:54:11 -070024)
25
26var (
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053027 // voltha kpis
Matteo Scandoloaab36db2018-10-09 19:54:11 -070028 volthaTxBytesTotal = prometheus.NewGaugeVec(
29 prometheus.GaugeOpts{
30 Name: "voltha_tx_bytes_total",
31 Help: "Number of total bytes transmitted",
32 },
33 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
34 )
35 volthaRxBytesTotal = prometheus.NewGaugeVec(
36 prometheus.GaugeOpts{
37 Name: "voltha_rx_bytes_total",
38 Help: "Number of total bytes received",
39 },
40 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
41 )
42 volthaTxPacketsTotal = prometheus.NewGaugeVec(
43 prometheus.GaugeOpts{
44 Name: "voltha_tx_packets_total",
45 Help: "Number of total packets transmitted",
46 },
47 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
48 )
49 volthaRxPacketsTotal = prometheus.NewGaugeVec(
50 prometheus.GaugeOpts{
51 Name: "voltha_rx_packets_total",
52 Help: "Number of total packets received",
53 },
54 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
55 )
56
57 volthaTxErrorPacketsTotal = prometheus.NewGaugeVec(
58 prometheus.GaugeOpts{
59 Name: "voltha_tx_error_packets_total",
60 Help: "Number of total transmitted packets error",
61 },
62 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
63 )
64
65 volthaRxErrorPacketsTotal = prometheus.NewGaugeVec(
66 prometheus.GaugeOpts{
67 Name: "voltha_rx_error_packets_total",
68 Help: "Number of total received packets error",
69 },
70 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
71 )
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053072
Ganesh Bhure967018e2019-07-29 14:48:32 +053073 // optical parameters
74 VolthaOnuLaserBiasCurrent = prometheus.NewGaugeVec(
75 prometheus.GaugeOpts{
76 Name: "voltha_onu_laser_bias_current",
77 Help: "ONU Laser bias current value",
78 },
79 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
80 )
81
82 volthaOnuTemperature = prometheus.NewGaugeVec(
83 prometheus.GaugeOpts{
84 Name: "voltha_onu_temperature",
85 Help: "ONU temperature value",
86 },
87 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
88 )
89
90 VolthaOnuPowerFeedVoltage = prometheus.NewGaugeVec(
91 prometheus.GaugeOpts{
92 Name: "voltha_onu_power_feed_voltage",
93 Help: "ONU power feed voltage",
94 },
95 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
96 )
97
98 VolthaOnuMeanOpticalLaunchPower = prometheus.NewGaugeVec(
99 prometheus.GaugeOpts{
100 Name: "voltha_onu_mean_optical_launch_power",
101 Help: "ONU mean optical launch power",
102 },
103 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
104 )
105
106 VolthaOnuReceivedOpticalPower = prometheus.NewGaugeVec(
107 prometheus.GaugeOpts{
108 Name: "voltha_onu_received_optical_power",
109 Help: "ONU received optical power",
110 },
111 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
112 )
113
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530114 // onos kpis
115 onosTxBytesTotal = prometheus.NewGaugeVec(
116 prometheus.GaugeOpts{
117 Name: "onos_tx_bytes_total",
118 Help: "Number of total bytes transmitted",
119 },
120 []string{"device_id", "port_id"},
121 )
122 onosRxBytesTotal = prometheus.NewGaugeVec(
123 prometheus.GaugeOpts{
124 Name: "onos_rx_bytes_total",
125 Help: "Number of total bytes received",
126 },
127 []string{"device_id", "port_id"},
128 )
129 onosTxPacketsTotal = prometheus.NewGaugeVec(
130 prometheus.GaugeOpts{
131 Name: "onos_tx_packets_total",
132 Help: "Number of total packets transmitted",
133 },
134 []string{"device_id", "port_id"},
135 )
136 onosRxPacketsTotal = prometheus.NewGaugeVec(
137 prometheus.GaugeOpts{
138 Name: "onos_rx_packets_total",
139 Help: "Number of total packets received",
140 },
141 []string{"device_id", "port_id"},
142 )
143
144 onosTxDropPacketsTotal = prometheus.NewGaugeVec(
145 prometheus.GaugeOpts{
146 Name: "onos_tx_drop_packets_total",
147 Help: "Number of total transmitted packets dropped",
148 },
149 []string{"device_id", "port_id"},
150 )
151
152 onosRxDropPacketsTotal = prometheus.NewGaugeVec(
153 prometheus.GaugeOpts{
154 Name: "onos_rx_drop_packets_total",
155 Help: "Number of total received packets dropped",
156 },
157 []string{"device_id", "port_id"},
158 )
kartikey dubey72ef3b82019-05-27 06:50:04 +0000159
160 // onos.aaa kpis
161 onosaaaRxAcceptResponses = prometheus.NewGauge(
162 prometheus.GaugeOpts{
163 Name: "onosaaa_rx_accept_responses",
164 Help: "Number of access accept packets received from the server",
165 })
166 onosaaaRxRejectResponses = prometheus.NewGauge(
167 prometheus.GaugeOpts{
168 Name: "onosaaa_rx_reject_responses",
169 Help: "Number of access reject packets received from the server",
170 })
171 onosaaaRxChallengeResponses = prometheus.NewGauge(
172 prometheus.GaugeOpts{
173 Name: "onosaaa_rx_challenge_response",
174 Help: "Number of access challenge packets received from the server",
175 })
176 onosaaaTxAccessRequests = prometheus.NewGauge(
177 prometheus.GaugeOpts{
178 Name: "onosaaa_tx_access_requests",
179 Help: "Number of access request packets sent to the server",
180 })
181 onosaaaRxInvalidValidators = prometheus.NewGauge(
182 prometheus.GaugeOpts{
183 Name: "onosaaa_rx_invalid_validators",
184 Help: "Number of access response packets received from the server with an invalid validator",
185 })
186 onosaaaRxUnknownType = prometheus.NewGauge(
187 prometheus.GaugeOpts{
188 Name: "onosaaa_rx_unknown_type",
189 Help: "Number of packets of an unknown RADIUS type received from the accounting server",
190 })
191 onosaaaPendingRequests = prometheus.NewGauge(
192 prometheus.GaugeOpts{
193 Name: "onosaaa_pending_responses",
194 Help: "Number of access request packets pending a response from the server",
195 })
196 onosaaaRxDroppedResponses = prometheus.NewGauge(
197 prometheus.GaugeOpts{
198 Name: "onosaaa_rx_dropped_responses",
199 Help: "Number of dropped packets received from the accounting server",
200 })
201 onosaaaRxMalformedResponses = prometheus.NewGauge(
202 prometheus.GaugeOpts{
203 Name: "onosaaa_rx_malformed_responses",
204 Help: "Number of malformed access response packets received from the server",
205 })
206 onosaaaRxUnknownserver = prometheus.NewGauge(
207 prometheus.GaugeOpts{
208 Name: "onosaaa_rx_from_unknown_server",
209 Help: "Number of packets received from an unknown server",
210 })
211 onosaaaRequestRttMillis = prometheus.NewGauge(
212 prometheus.GaugeOpts{
213 Name: "onosaaa_request_rttmillis",
214 Help: "Roundtrip packet time to the accounting server in Miliseconds",
215 })
216 onosaaaRequestReTx = prometheus.NewGauge(
217 prometheus.GaugeOpts{
218 Name: "onosaaa_request_re_tx",
219 Help: "Number of access request packets retransmitted to the server",
220 })
Daniele Morobe242582019-10-01 14:02:46 -0700221
Daniele Moro707c2092019-12-06 16:39:18 -0800222 // ONOS BNG kpis
Daniele Morobe242582019-10-01 14:02:46 -0700223
Daniele Moro707c2092019-12-06 16:39:18 -0800224 // --------------------- BNG UPSTREAM STATISTICS -----------------------------------------
225 onosBngUpTxBytes = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700226 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800227 Name: "onosBngUpTxBytes",
228 Help: "onosBngUpTxBytes",
Daniele Morobe242582019-10-01 14:02:46 -0700229 },
Daniele Moro707c2092019-12-06 16:39:18 -0800230 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700231 )
Daniele Moro707c2092019-12-06 16:39:18 -0800232 onosBngUpTxPackets = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700233 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800234 Name: "onosBngUpTxPackets",
235 Help: "onosBngUpTxPackets",
Daniele Morobe242582019-10-01 14:02:46 -0700236 },
Daniele Moro707c2092019-12-06 16:39:18 -0800237 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700238 )
Daniele Moro707c2092019-12-06 16:39:18 -0800239
240 onosBngUpRxBytes = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700241 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800242 Name: "onosBngUpRxBytes",
243 Help: "onosBngUpRxBytes",
Daniele Morobe242582019-10-01 14:02:46 -0700244 },
Daniele Moro707c2092019-12-06 16:39:18 -0800245 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700246 )
Daniele Moro707c2092019-12-06 16:39:18 -0800247
248 onosBngUpRxPackets = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700249 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800250 Name: "onosBngUpRxPackets",
251 Help: "onosBngUpRxPackets",
Daniele Morobe242582019-10-01 14:02:46 -0700252 },
Daniele Moro707c2092019-12-06 16:39:18 -0800253 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700254 )
Daniele Moro707c2092019-12-06 16:39:18 -0800255 onosBngUpDropBytes = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700256 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800257 Name: "onosBngUpDropBytes",
258 Help: "onosBngUpDropBytes",
Daniele Morobe242582019-10-01 14:02:46 -0700259 },
Daniele Moro707c2092019-12-06 16:39:18 -0800260 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700261 )
Daniele Moro707c2092019-12-06 16:39:18 -0800262 onosBngUpDropPackets = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700263 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800264 Name: "onosBngUpDropPackets",
265 Help: "onosBngUpDropPackets",
Daniele Morobe242582019-10-01 14:02:46 -0700266 },
Daniele Moro707c2092019-12-06 16:39:18 -0800267 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700268 )
Daniele Moro707c2092019-12-06 16:39:18 -0800269
270 // --------------------- BNG CONTROL STATISTICS ------------------------------------------
271 onosBngControlPackets = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700272 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800273 Name: "onosBngControlPackets",
274 Help: "onosBngControlPackets",
Daniele Morobe242582019-10-01 14:02:46 -0700275 },
Daniele Moro707c2092019-12-06 16:39:18 -0800276 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700277 )
Daniele Moro707c2092019-12-06 16:39:18 -0800278
279 // -------------------- BNG DOWNSTREAM STATISTICS ----------------------------------------
280 onosBngDownTxBytes = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700281 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800282 Name: "onosBngDownTxBytes",
283 Help: "onosBngDownTxBytes",
Daniele Morobe242582019-10-01 14:02:46 -0700284 },
Daniele Moro707c2092019-12-06 16:39:18 -0800285 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700286 )
Daniele Moro707c2092019-12-06 16:39:18 -0800287 onosBngDownTxPackets = prometheus.NewGaugeVec(
Daniele Morobe242582019-10-01 14:02:46 -0700288 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800289 Name: "onosBngDownTxPackets",
290 Help: "onosBngDownTxPackets",
Daniele Morobe242582019-10-01 14:02:46 -0700291 },
Daniele Moro707c2092019-12-06 16:39:18 -0800292 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
Daniele Morobe242582019-10-01 14:02:46 -0700293 )
Daniele Moro707c2092019-12-06 16:39:18 -0800294
295 onosBngDownRxBytes = prometheus.NewGaugeVec(
296 prometheus.GaugeOpts{
297 Name: "onosBngDownRxBytes",
298 Help: "onosBngDownRxBytes",
299 },
300 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
301 )
302 onosBngDownRxPackets = prometheus.NewGaugeVec(
303 prometheus.GaugeOpts{
304 Name: "onosBngDownRxPackets",
305 Help: "onosBngDownRxPackets",
306 },
307 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
308 )
309
310 onosBngDownDropBytes = prometheus.NewGaugeVec(
311 prometheus.GaugeOpts{
312 Name: "onosBngDownDropBytes",
313 Help: "onosBngDownDropBytes",
314 },
315 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
316 )
317 onosBngDownDropPackets = prometheus.NewGaugeVec(
318 prometheus.GaugeOpts{
319 Name: "onosBngDownDropPackets",
320 Help: "onosBngDownDropPackets",
321 },
322 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial", "type"},
323 )
324
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530325 deviceLaserBiasCurrent = prometheus.NewGaugeVec(
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530326 prometheus.GaugeOpts{
Daniele Moro707c2092019-12-06 16:39:18 -0800327 Name: "device_laser_bias_current",
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530328 Help: "Device Laser Bias Current",
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530329 },
330 []string{"port_id"},
331 )
332 deviceTemperature = prometheus.NewGaugeVec(
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530333 prometheus.GaugeOpts{
334 Name: "device_temperature",
335 Help: "Device Temperature",
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530336 },
337 []string{"port_id"},
338 )
339 deviceTxPower = prometheus.NewGaugeVec(
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530340 prometheus.GaugeOpts{
341 Name: "device_tx_power",
342 Help: "Device Tx Power",
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530343 },
344 []string{"port_id"},
345 )
346 deviceVoltage = prometheus.NewGaugeVec(
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530347 prometheus.GaugeOpts{
348 Name: "device_voltage",
349 Help: "Device Voltage",
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530350 },
351 []string{"port_id"},
352 )
353
Shubham Sharma57600bf2019-08-09 07:09:57 +0000354 onosaaaRxEapolLogoff = prometheus.NewGauge(
355 prometheus.GaugeOpts{
356 Name: "onosaaa_rx_eapol_Logoff",
357 Help: "Number of EAPOL logoff messages received resulting in disconnected state",
358 })
359 onosaaaTxEapolResIdentityMsg = prometheus.NewGauge(
360 prometheus.GaugeOpts{
361 Name: "onosaaa_tx_eapol_Res_IdentityMsg",
362 Help: "Number of authenticating transitions due to EAP response or identity message",
363 })
364 onosaaaTxAuthSuccess = prometheus.NewGauge(
365 prometheus.GaugeOpts{
366 Name: "onosaaa_tx_auth_Success",
367 Help: "Number of authenticated transitions due to successful authentication",
368 })
369 onosaaaTxAuthFailure = prometheus.NewGauge(
370 prometheus.GaugeOpts{
371 Name: "onosaaa_tx_auth_Failure",
372 Help: "Number of transitions to held due to authentication failure",
373 })
374 onosaaaTxStartReq = prometheus.NewGauge(
375 prometheus.GaugeOpts{
376 Name: "onosaaa_tx_start_Req",
377 Help: "Number of transitions to connecting due to start request",
378 })
379 onosaaaEapPktTxAuthChooseEap = prometheus.NewGauge(
380 prometheus.GaugeOpts{
381 Name: "onosaaa_eap_Pkt_tx_auth_choosing_Eap",
382 Help: "Number of EAP request packets sent due to the authenticator choosing the EAP method",
383 })
384 onosaaaTxRespnotNak = prometheus.NewGauge(
385 prometheus.GaugeOpts{
386 Name: "onosaaa_tx_Resp_not_Nak",
387 Help: "Number of transitions to response (received response other that NAK)",
Daniele Moro707c2092019-12-06 16:39:18 -0800388 })
shubham sharmae7f85752019-09-16 13:37:18 +0000389 onosaaaEapolFramesTx = prometheus.NewGauge(
390 prometheus.GaugeOpts{
391 Name: "onosaaa_eapol_frames_tx",
392 Help: "Number of EAPOL frames transmitted",
393 })
394 onosaaaAuthStateIdle = prometheus.NewGauge(
395 prometheus.GaugeOpts{
396 Name: "onosaaa_auth_state_idle",
397 Help: "Number of state machine status as Idle",
398 })
399 onosaaaRequestIdFramesTx = prometheus.NewGauge(
400 prometheus.GaugeOpts{
401 Name: "onosaaa_tx_request_id_frames",
402 Help: "Number of request ID EAP frames transmitted",
403 })
404 onosaaaRequestEapFramesTx = prometheus.NewGauge(
405 prometheus.GaugeOpts{
406 Name: "onosaaa_tx_request_eap_frames",
407 Help: "Number of request EAP frames transmitted",
408 })
409 onosaaaInvalidPktType = prometheus.NewGauge(
410 prometheus.GaugeOpts{
411 Name: "onosaaa_invalid_pkt_type",
412 Help: "Number of EAPOL frames received with invalid frame(Packet) type",
413 })
414 onosaaaInvalidBodyLength = prometheus.NewGauge(
415 prometheus.GaugeOpts{
416 Name: "onosaaa_invalid_body_length",
417 Help: "Number of EAPOL frames received with invalid body length",
418 })
419 onosaaaValidEapolFramesRx = prometheus.NewGauge(
420 prometheus.GaugeOpts{
421 Name: "onosaaa_rx_valid_eapol_frames",
422 Help: "Number of valid EAPOL frames received",
423 })
424 onosaaaPendingResSupplicant = prometheus.NewGauge(
425 prometheus.GaugeOpts{
426 Name: "onosaaa_pending_response_supplicant",
427 Help: "Number of request pending response from supplicant",
428 })
429 onosaaaRxResIdEapFrames = prometheus.NewGauge(
430 prometheus.GaugeOpts{
431 Name: "onosaaa_rx_res_id_eap_frames",
432 Help: "Number of response ID EAP frames received",
Shubham Sharma57600bf2019-08-09 07:09:57 +0000433 })
Matteo Scandoloaab36db2018-10-09 19:54:11 -0700434)
435
436func exportVolthaKPI(kpi VolthaKPI) {
437
438 for _, data := range kpi.SliceDatas {
439 switch title := data.Metadata.Title; title {
440 case "Ethernet", "PON":
441 volthaTxBytesTotal.WithLabelValues(
442 data.Metadata.LogicalDeviceID,
443 data.Metadata.SerialNumber,
444 data.Metadata.DeviceID,
445 data.Metadata.Context.InterfaceID,
446 data.Metadata.Context.PonID,
447 data.Metadata.Context.PortNumber,
448 data.Metadata.Title,
449 ).Set(data.Metrics.TxBytes)
450
451 volthaRxBytesTotal.WithLabelValues(
452 data.Metadata.LogicalDeviceID,
453 data.Metadata.SerialNumber,
454 data.Metadata.DeviceID,
455 data.Metadata.Context.InterfaceID,
456 data.Metadata.Context.PonID,
457 data.Metadata.Context.PortNumber,
458 data.Metadata.Title,
459 ).Set(data.Metrics.RxBytes)
460
461 volthaTxPacketsTotal.WithLabelValues(
462 data.Metadata.LogicalDeviceID,
463 data.Metadata.SerialNumber,
464 data.Metadata.DeviceID,
465 data.Metadata.Context.InterfaceID,
466 data.Metadata.Context.PonID,
467 data.Metadata.Context.PortNumber,
468 data.Metadata.Title,
469 ).Set(data.Metrics.TxPackets)
470
471 volthaRxPacketsTotal.WithLabelValues(
472 data.Metadata.LogicalDeviceID,
473 data.Metadata.SerialNumber,
474 data.Metadata.DeviceID,
475 data.Metadata.Context.InterfaceID,
476 data.Metadata.Context.PonID,
477 data.Metadata.Context.PortNumber,
478 data.Metadata.Title,
479 ).Set(data.Metrics.RxPackets)
480
481 volthaTxErrorPacketsTotal.WithLabelValues(
482 data.Metadata.LogicalDeviceID,
483 data.Metadata.SerialNumber,
484 data.Metadata.DeviceID,
485 data.Metadata.Context.InterfaceID,
486 data.Metadata.Context.PonID,
487 data.Metadata.Context.PortNumber,
488 data.Metadata.Title,
489 ).Set(data.Metrics.TxErrorPackets)
490
491 volthaRxErrorPacketsTotal.WithLabelValues(
492 data.Metadata.LogicalDeviceID,
493 data.Metadata.SerialNumber,
494 data.Metadata.DeviceID,
495 data.Metadata.Context.InterfaceID,
496 data.Metadata.Context.PonID,
497 data.Metadata.Context.PortNumber,
498 data.Metadata.Title,
499 ).Set(data.Metrics.RxErrorPackets)
500
501 // TODO add metrics for:
502 // TxBcastPackets
503 // TxUnicastPackets
504 // TxMulticastPackets
505 // RxBcastPackets
506 // RxMulticastPackets
507
508 case "Ethernet_Bridge_Port_History":
509 if data.Metadata.Context.Upstream == "True" {
510 // ONU. Extended Ethernet statistics.
511 volthaTxPacketsTotal.WithLabelValues(
512 data.Metadata.LogicalDeviceID,
513 data.Metadata.SerialNumber,
514 data.Metadata.DeviceID,
515 "NA", // InterfaceID
516 "NA", // PonID
517 "NA", // PortNumber
518 data.Metadata.Title,
519 ).Add(data.Metrics.Packets)
520
521 volthaTxBytesTotal.WithLabelValues(
522 data.Metadata.LogicalDeviceID,
523 data.Metadata.SerialNumber,
524 data.Metadata.DeviceID,
525 "NA", // InterfaceID
526 "NA", // PonID
527 "NA", // PortNumber
528 data.Metadata.Title,
529 ).Add(data.Metrics.Octets)
530 } else {
531 // ONU. Extended Ethernet statistics.
532 volthaRxPacketsTotal.WithLabelValues(
533 data.Metadata.LogicalDeviceID,
534 data.Metadata.SerialNumber,
535 data.Metadata.DeviceID,
536 "NA", // InterfaceID
537 "NA", // PonID
538 "NA", // PortNumber
539 data.Metadata.Title,
540 ).Add(data.Metrics.Packets)
541
542 volthaRxBytesTotal.WithLabelValues(
543 data.Metadata.LogicalDeviceID,
544 data.Metadata.SerialNumber,
545 data.Metadata.DeviceID,
546 "NA", // InterfaceID
547 "NA", // PonID
548 "NA", // PortNumber
549 data.Metadata.Title,
550 ).Add(data.Metrics.Octets)
551 }
552
Ganesh Bhure967018e2019-07-29 14:48:32 +0530553 case "PON_Optical":
554 VolthaOnuLaserBiasCurrent.WithLabelValues(
555 data.Metadata.LogicalDeviceID,
556 data.Metadata.SerialNumber,
557 data.Metadata.DeviceID,
558 data.Metadata.Context.InterfaceID,
559 data.Metadata.Context.PonID,
560 data.Metadata.Context.PortNumber,
561 data.Metadata.Title,
562 ).Set(data.Metrics.LaserBiasCurrent)
563
564 volthaOnuTemperature.WithLabelValues(
565 data.Metadata.LogicalDeviceID,
566 data.Metadata.SerialNumber,
567 data.Metadata.DeviceID,
568 data.Metadata.Context.InterfaceID,
569 data.Metadata.Context.PonID,
570 data.Metadata.Context.PortNumber,
571 data.Metadata.Title,
572 ).Set(data.Metrics.Temperature)
573
574 VolthaOnuPowerFeedVoltage.WithLabelValues(
575 data.Metadata.LogicalDeviceID,
576 data.Metadata.SerialNumber,
577 data.Metadata.DeviceID,
578 data.Metadata.Context.InterfaceID,
579 data.Metadata.Context.PonID,
580 data.Metadata.Context.PortNumber,
581 data.Metadata.Title,
582 ).Set(data.Metrics.PowerFeedVoltage)
583
584 VolthaOnuMeanOpticalLaunchPower.WithLabelValues(
585 data.Metadata.LogicalDeviceID,
586 data.Metadata.SerialNumber,
587 data.Metadata.DeviceID,
588 data.Metadata.Context.InterfaceID,
589 data.Metadata.Context.PonID,
590 data.Metadata.Context.PortNumber,
591 data.Metadata.Title,
592 ).Set(data.Metrics.MeanOpticalLaunchPower)
593
594 VolthaOnuReceivedOpticalPower.WithLabelValues(
595 data.Metadata.LogicalDeviceID,
596 data.Metadata.SerialNumber,
597 data.Metadata.DeviceID,
598 data.Metadata.Context.InterfaceID,
599 data.Metadata.Context.PonID,
600 data.Metadata.Context.PortNumber,
601 data.Metadata.Title,
602 ).Set(data.Metrics.ReceivedOpticalPower)
603
Matteo Scandoloaab36db2018-10-09 19:54:11 -0700604 case "Ethernet_UNI_History":
605 // ONU. Do nothing.
606
607 case "FEC_History":
608 // ONU. Do Nothing.
609
610 volthaTxBytesTotal.WithLabelValues(
611 data.Metadata.LogicalDeviceID,
612 data.Metadata.SerialNumber,
613 data.Metadata.DeviceID,
614 data.Metadata.Context.InterfaceID,
615 data.Metadata.Context.PonID,
616 data.Metadata.Context.PortNumber,
617 data.Metadata.Title,
618 ).Set(data.Metrics.TxBytes)
619
620 volthaRxBytesTotal.WithLabelValues(
621 data.Metadata.LogicalDeviceID,
622 data.Metadata.SerialNumber,
623 data.Metadata.DeviceID,
624 data.Metadata.Context.InterfaceID,
625 data.Metadata.Context.PonID,
626 data.Metadata.Context.PortNumber,
627 data.Metadata.Title,
628 ).Set(data.Metrics.RxBytes)
629
630 volthaTxPacketsTotal.WithLabelValues(
631 data.Metadata.LogicalDeviceID,
632 data.Metadata.SerialNumber,
633 data.Metadata.DeviceID,
634 data.Metadata.Context.InterfaceID,
635 data.Metadata.Context.PonID,
636 data.Metadata.Context.PortNumber,
637 data.Metadata.Title,
638 ).Set(data.Metrics.TxPackets)
639
640 volthaRxPacketsTotal.WithLabelValues(
641 data.Metadata.LogicalDeviceID,
642 data.Metadata.SerialNumber,
643 data.Metadata.DeviceID,
644 data.Metadata.Context.InterfaceID,
645 data.Metadata.Context.PonID,
646 data.Metadata.Context.PortNumber,
647 data.Metadata.Title,
648 ).Set(data.Metrics.RxPackets)
649
650 volthaTxErrorPacketsTotal.WithLabelValues(
651 data.Metadata.LogicalDeviceID,
652 data.Metadata.SerialNumber,
653 data.Metadata.DeviceID,
654 data.Metadata.Context.InterfaceID,
655 data.Metadata.Context.PonID,
656 data.Metadata.Context.PortNumber,
657 data.Metadata.Title,
658 ).Set(data.Metrics.TxErrorPackets)
659
660 volthaRxErrorPacketsTotal.WithLabelValues(
661 data.Metadata.LogicalDeviceID,
662 data.Metadata.SerialNumber,
663 data.Metadata.DeviceID,
664 data.Metadata.Context.InterfaceID,
665 data.Metadata.Context.PonID,
666 data.Metadata.Context.PortNumber,
667 data.Metadata.Title,
668 ).Set(data.Metrics.RxErrorPackets)
669
670 // TODO add metrics for:
671 // TxBcastPackets
672 // TxUnicastPackets
673 // TxMulticastPackets
674 // RxBcastPackets
675 // RxMulticastPackets
676
677 case "voltha.internal":
678 // Voltha Internal. Do nothing.
679 }
680 }
681}
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530682
683func exportOnosKPI(kpi OnosKPI) {
684
685 for _, data := range kpi.Ports {
686
687 onosTxBytesTotal.WithLabelValues(
688 kpi.DeviceID,
689 data.PortID,
690 ).Set(data.TxBytes)
691
692 onosRxBytesTotal.WithLabelValues(
693 kpi.DeviceID,
694 data.PortID,
695 ).Set(data.RxBytes)
696
697 onosTxPacketsTotal.WithLabelValues(
698 kpi.DeviceID,
699 data.PortID,
700 ).Set(data.TxPackets)
701
702 onosRxPacketsTotal.WithLabelValues(
703 kpi.DeviceID,
704 data.PortID,
705 ).Set(data.RxPackets)
706
707 onosTxDropPacketsTotal.WithLabelValues(
708 kpi.DeviceID,
709 data.PortID,
710 ).Set(data.TxPacketsDrop)
711
712 onosRxDropPacketsTotal.WithLabelValues(
713 kpi.DeviceID,
714 data.PortID,
715 ).Set(data.RxPacketsDrop)
716 }
717}
718
719func exportImporterKPI(kpi ImporterKPI) {
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530720 deviceLaserBiasCurrent.WithLabelValues(
721 kpi.PortId,
722 ).Set(kpi.LaserBiasCurrent)
723 deviceTemperature.WithLabelValues(
724 kpi.PortId,
725 ).Set(kpi.Temperature)
726 deviceTxPower.WithLabelValues(
727 kpi.PortId,
728 ).Set(kpi.TxPower)
729 deviceVoltage.WithLabelValues(
730 kpi.PortId,
731 ).Set(kpi.Voltage)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530732}
733
kartikey dubey72ef3b82019-05-27 06:50:04 +0000734func exportOnosAaaKPI(kpi OnosAaaKPI) {
735
736 onosaaaRxAcceptResponses.Set(kpi.RxAcceptResponses)
737
738 onosaaaRxRejectResponses.Set(kpi.RxRejectResponses)
739
740 onosaaaRxChallengeResponses.Set(kpi.RxChallengeResponses)
741
742 onosaaaTxAccessRequests.Set(kpi.TxAccessRequests)
743
744 onosaaaRxInvalidValidators.Set(kpi.RxInvalidValidators)
745
746 onosaaaRxUnknownType.Set(kpi.RxUnknownType)
747
748 onosaaaPendingRequests.Set(kpi.PendingRequests)
749
750 onosaaaRxDroppedResponses.Set(kpi.RxDroppedResponses)
751
752 onosaaaRxMalformedResponses.Set(kpi.RxMalformedResponses)
753
754 onosaaaRxUnknownserver.Set(kpi.RxUnknownserver)
755
756 onosaaaRequestRttMillis.Set(kpi.RequestRttMillis)
757
758 onosaaaRequestReTx.Set(kpi.RequestReTx)
Shubham Sharma57600bf2019-08-09 07:09:57 +0000759
760 onosaaaRxEapolLogoff.Set(kpi.RxEapolLogoff)
761
762 onosaaaTxEapolResIdentityMsg.Set(kpi.TxEapolResIdentityMsg)
763
764 onosaaaTxAuthSuccess.Set(kpi.TxAuthSuccess)
765
766 onosaaaTxAuthFailure.Set(kpi.TxAuthFailure)
767
768 onosaaaTxStartReq.Set(kpi.TxStartReq)
769
770 onosaaaEapPktTxAuthChooseEap.Set(kpi.EapPktTxAuthChooseEap)
771
772 onosaaaTxRespnotNak.Set(kpi.TxResponseNotNak)
shubham sharmae7f85752019-09-16 13:37:18 +0000773
774 onosaaaEapolFramesTx.Set(kpi.EapolFramesTx)
775
776 onosaaaAuthStateIdle.Set(kpi.AuthStateIdle)
777
778 onosaaaRequestIdFramesTx.Set(kpi.RequestIdFramesTx)
779
780 onosaaaRequestEapFramesTx.Set(kpi.RequestEapFramesTx)
781
782 onosaaaInvalidPktType.Set(kpi.InvalidPktType)
783
784 onosaaaInvalidBodyLength.Set(kpi.InvalidBodyLength)
785
786 onosaaaValidEapolFramesRx.Set(kpi.ValidEapolFramesRx)
787
788 onosaaaPendingResSupplicant.Set(kpi.PendingResSupplicant)
789
790 onosaaaRxResIdEapFrames.Set(kpi.RxResIdEapFrames)
kartikey dubey72ef3b82019-05-27 06:50:04 +0000791}
792
Daniele Moro707c2092019-12-06 16:39:18 -0800793func exportOnosBngKPI(kpi OnosBngKPI) {
794 logger.WithFields(log.Fields{
795 "Mac": kpi.Mac,
796 "Ip": kpi.Ip,
797 "PppoeSessionId": strconv.Itoa(kpi.PppoeSessionId),
798 "AttachmentType": kpi.AttachmentType,
799 "STag": strconv.Itoa(kpi.STag),
800 "CTag": strconv.Itoa(kpi.CTag),
801 "onuSerialNumber": kpi.OnuSerialNumber,
802 }).Trace("Received OnosBngKPI message")
Daniele Morobe242582019-10-01 14:02:46 -0700803
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530804 if kpi.UpTxBytes != nil {
Daniele Moro707c2092019-12-06 16:39:18 -0800805 onosBngUpTxBytes.WithLabelValues(
806 kpi.Mac,
807 kpi.Ip,
808 strconv.Itoa(kpi.PppoeSessionId),
809 strconv.Itoa(kpi.STag),
810 strconv.Itoa(kpi.CTag),
811 kpi.OnuSerialNumber,
812 kpi.AttachmentType,
813 ).Set(*kpi.UpTxBytes)
814 }
815 if kpi.UpTxPackets != nil {
816 onosBngUpTxPackets.WithLabelValues(
817 kpi.Mac,
818 kpi.Ip,
819 strconv.Itoa(kpi.PppoeSessionId),
820 strconv.Itoa(kpi.STag),
821 strconv.Itoa(kpi.CTag),
822 kpi.OnuSerialNumber,
823 kpi.AttachmentType,
824 ).Set(*kpi.UpTxPackets)
825 }
826 if kpi.UpRxBytes != nil {
827 onosBngUpRxBytes.WithLabelValues(
828 kpi.Mac,
829 kpi.Ip,
830 strconv.Itoa(kpi.PppoeSessionId),
831 strconv.Itoa(kpi.STag),
832 strconv.Itoa(kpi.CTag),
833 kpi.OnuSerialNumber,
834 kpi.AttachmentType,
835 ).Set(*kpi.UpRxBytes)
836 }
837 if kpi.UpRxPackets != nil {
838 onosBngUpRxPackets.WithLabelValues(
839 kpi.Mac,
840 kpi.Ip,
841 strconv.Itoa(kpi.PppoeSessionId),
842 strconv.Itoa(kpi.STag),
843 strconv.Itoa(kpi.CTag),
844 kpi.OnuSerialNumber,
845 kpi.AttachmentType,
846 ).Set(*kpi.UpRxPackets)
847 }
Daniele Morobe242582019-10-01 14:02:46 -0700848
Daniele Moro707c2092019-12-06 16:39:18 -0800849 if kpi.UpDropBytes != nil {
850 onosBngUpDropBytes.WithLabelValues(
851 kpi.Mac,
852 kpi.Ip,
853 strconv.Itoa(kpi.PppoeSessionId),
854 strconv.Itoa(kpi.STag),
855 strconv.Itoa(kpi.CTag),
856 kpi.OnuSerialNumber,
857 kpi.AttachmentType,
858 ).Set(*kpi.UpDropBytes)
859 }
860 if kpi.UpDropPackets != nil {
861 onosBngUpDropPackets.WithLabelValues(
862 kpi.Mac,
863 kpi.Ip,
864 strconv.Itoa(kpi.PppoeSessionId),
865 strconv.Itoa(kpi.STag),
866 strconv.Itoa(kpi.CTag),
867 kpi.OnuSerialNumber,
868 kpi.AttachmentType,
869 ).Set(*kpi.UpDropPackets)
870 }
871
872 if kpi.ControlPackets != nil {
873 onosBngControlPackets.WithLabelValues(
874 kpi.Mac,
875 kpi.Ip,
876 strconv.Itoa(kpi.PppoeSessionId),
877 strconv.Itoa(kpi.STag),
878 strconv.Itoa(kpi.CTag),
879 kpi.OnuSerialNumber,
880 kpi.AttachmentType,
881 ).Set(*kpi.ControlPackets)
882 }
883
884 if kpi.DownTxBytes != nil {
885 onosBngDownTxBytes.WithLabelValues(
886 kpi.Mac,
887 kpi.Ip,
888 strconv.Itoa(kpi.PppoeSessionId),
889 strconv.Itoa(kpi.STag),
890 strconv.Itoa(kpi.CTag),
891 kpi.OnuSerialNumber,
892 kpi.AttachmentType,
893 ).Set(*kpi.DownTxBytes)
894 }
895 if kpi.DownTxPackets != nil {
896 onosBngDownTxPackets.WithLabelValues(
897 kpi.Mac,
898 kpi.Ip,
899 strconv.Itoa(kpi.PppoeSessionId),
900 strconv.Itoa(kpi.STag),
901 strconv.Itoa(kpi.CTag),
902 kpi.OnuSerialNumber,
903 kpi.AttachmentType,
904 ).Set(*kpi.DownTxPackets)
905 }
906
907 if kpi.DownRxBytes != nil {
908 onosBngDownRxBytes.WithLabelValues(
909 kpi.Mac,
910 kpi.Ip,
911 strconv.Itoa(kpi.PppoeSessionId),
912 strconv.Itoa(kpi.STag),
913 strconv.Itoa(kpi.CTag),
914 kpi.OnuSerialNumber,
915 kpi.AttachmentType,
916 ).Set(*kpi.DownRxBytes)
917 }
918 if kpi.DownRxPackets != nil {
919 onosBngDownRxPackets.WithLabelValues(
920 kpi.Mac,
921 kpi.Ip,
922 strconv.Itoa(kpi.PppoeSessionId),
923 strconv.Itoa(kpi.STag),
924 strconv.Itoa(kpi.CTag),
925 kpi.OnuSerialNumber,
926 kpi.AttachmentType,
927 ).Set(*kpi.DownRxPackets)
928 }
929
930 if kpi.DownDropBytes != nil {
931 onosBngDownDropBytes.WithLabelValues(
932 kpi.Mac,
933 kpi.Ip,
934 strconv.Itoa(kpi.PppoeSessionId),
935 strconv.Itoa(kpi.STag),
936 strconv.Itoa(kpi.CTag),
937 kpi.OnuSerialNumber,
938 kpi.AttachmentType,
939 ).Set(*kpi.DownDropBytes)
940 }
941 if kpi.DownDropPackets != nil {
942 onosBngDownDropPackets.WithLabelValues(
943 kpi.Mac,
944 kpi.Ip,
945 strconv.Itoa(kpi.PppoeSessionId),
946 strconv.Itoa(kpi.STag),
947 strconv.Itoa(kpi.CTag),
948 kpi.OnuSerialNumber,
949 kpi.AttachmentType,
950 ).Set(*kpi.DownDropPackets)
Daniele Morobe242582019-10-01 14:02:46 -0700951 }
952}
953
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530954func export(topic *string, data []byte) {
955 switch *topic {
956 case "voltha.kpis":
957 kpi := VolthaKPI{}
958 err := json.Unmarshal(data, &kpi)
959 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530960 logger.Error("Invalid msg on voltha.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530961 break
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530962 }
963 exportVolthaKPI(kpi)
964 case "onos.kpis":
965 kpi := OnosKPI{}
966 err := json.Unmarshal(data, &kpi)
967 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530968 logger.Error("Invalid msg on onos.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530969 break
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530970 }
971 exportOnosKPI(kpi)
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530972 case "importer":
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530973 kpi := ImporterKPI{}
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530974 strData := string(data)
975 idx := strings.Index(strData, "{")
976 strData = strData[idx:]
977
978 var m map[string]interface{}
979 err := json.Unmarshal([]byte(strData), &m)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530980 if err != nil {
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530981 logger.Error("Invalid msg on importer: %s", err.Error())
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530982 logger.Debug("Unprocessed Msg: %s", strData)
983 break
984 }
985 if val, ok := m["TransceiverStatistics"]; ok {
986 stats := val.(map[string]interface{})
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530987 kpi.LaserBiasCurrent = stats["BiasCurrent"].(map[string]interface{})["Reading"].(float64)
988 kpi.Temperature = stats["Temperature"].(map[string]interface{})["Reading"].(float64)
989 kpi.TxPower = stats["TxPower"].(map[string]interface{})["Reading"].(float64)
990 kpi.Voltage = stats["Voltage"].(map[string]interface{})["Reading"].(float64)
991 } else {
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530992 logger.Error("Optical stats (TransceiverStatistics) information missing [topic=importer")
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530993 logger.Debug("Unprocessed Msg: %s", strData)
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530994 break
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530995 }
Ganesh Bhure7f9eccb2019-11-27 16:24:24 +0530996 kpi.PortId = m["Id"].(string)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530997 exportImporterKPI(kpi)
kartikey dubey72ef3b82019-05-27 06:50:04 +0000998 case "onos.aaa.stats.kpis":
999 kpi := OnosAaaKPI{}
1000 err := json.Unmarshal(data, &kpi)
1001 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +05301002 logger.Error("Invalid msg on onos.aaa.stats.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +05301003 break
kartikey dubey72ef3b82019-05-27 06:50:04 +00001004 }
1005 exportOnosAaaKPI(kpi)
Daniele Moro707c2092019-12-06 16:39:18 -08001006 case "bng.stats":
1007 kpi := OnosBngKPI{}
Daniele Morobe242582019-10-01 14:02:46 -07001008 err := json.Unmarshal(data, &kpi)
1009 if err != nil {
Daniele Moro707c2092019-12-06 16:39:18 -08001010 logger.Error("Invalid msg on bng.stats: %s, Unprocessed Msg: %s", err.Error(), string(data))
Daniele Morobe242582019-10-01 14:02:46 -07001011 break
1012 }
Daniele Moro707c2092019-12-06 16:39:18 -08001013 exportOnosBngKPI(kpi)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +05301014 default:
Ganesh Bhure74fb7b02019-06-28 16:16:26 +05301015 logger.Warn("Unexpected export. Topic [%s] not supported. Should not come here", *topic)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +05301016 }
1017}