blob: 5d3345801d42058bba2736115da43936ac73c32e [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"
Matteo Scandoloaab36db2018-10-09 19:54:11 -070023)
24
25var (
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053026 // voltha kpis
Matteo Scandoloaab36db2018-10-09 19:54:11 -070027 volthaTxBytesTotal = prometheus.NewGaugeVec(
28 prometheus.GaugeOpts{
29 Name: "voltha_tx_bytes_total",
30 Help: "Number of total bytes transmitted",
31 },
32 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
33 )
34 volthaRxBytesTotal = prometheus.NewGaugeVec(
35 prometheus.GaugeOpts{
36 Name: "voltha_rx_bytes_total",
37 Help: "Number of total bytes received",
38 },
39 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
40 )
41 volthaTxPacketsTotal = prometheus.NewGaugeVec(
42 prometheus.GaugeOpts{
43 Name: "voltha_tx_packets_total",
44 Help: "Number of total packets transmitted",
45 },
46 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
47 )
48 volthaRxPacketsTotal = prometheus.NewGaugeVec(
49 prometheus.GaugeOpts{
50 Name: "voltha_rx_packets_total",
51 Help: "Number of total packets received",
52 },
53 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
54 )
55
56 volthaTxErrorPacketsTotal = prometheus.NewGaugeVec(
57 prometheus.GaugeOpts{
58 Name: "voltha_tx_error_packets_total",
59 Help: "Number of total transmitted packets error",
60 },
61 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
62 )
63
64 volthaRxErrorPacketsTotal = prometheus.NewGaugeVec(
65 prometheus.GaugeOpts{
66 Name: "voltha_rx_error_packets_total",
67 Help: "Number of total received packets error",
68 },
69 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
70 )
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053071
Ganesh Bhure967018e2019-07-29 14:48:32 +053072 // optical parameters
73 VolthaOnuLaserBiasCurrent = prometheus.NewGaugeVec(
74 prometheus.GaugeOpts{
75 Name: "voltha_onu_laser_bias_current",
76 Help: "ONU Laser bias current value",
77 },
78 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
79 )
80
81 volthaOnuTemperature = prometheus.NewGaugeVec(
82 prometheus.GaugeOpts{
83 Name: "voltha_onu_temperature",
84 Help: "ONU temperature value",
85 },
86 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
87 )
88
89 VolthaOnuPowerFeedVoltage = prometheus.NewGaugeVec(
90 prometheus.GaugeOpts{
91 Name: "voltha_onu_power_feed_voltage",
92 Help: "ONU power feed voltage",
93 },
94 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
95 )
96
97 VolthaOnuMeanOpticalLaunchPower = prometheus.NewGaugeVec(
98 prometheus.GaugeOpts{
99 Name: "voltha_onu_mean_optical_launch_power",
100 Help: "ONU mean optical launch power",
101 },
102 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
103 )
104
105 VolthaOnuReceivedOpticalPower = prometheus.NewGaugeVec(
106 prometheus.GaugeOpts{
107 Name: "voltha_onu_received_optical_power",
108 Help: "ONU received optical power",
109 },
110 []string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
111 )
112
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530113 // onos kpis
114 onosTxBytesTotal = prometheus.NewGaugeVec(
115 prometheus.GaugeOpts{
116 Name: "onos_tx_bytes_total",
117 Help: "Number of total bytes transmitted",
118 },
119 []string{"device_id", "port_id"},
120 )
121 onosRxBytesTotal = prometheus.NewGaugeVec(
122 prometheus.GaugeOpts{
123 Name: "onos_rx_bytes_total",
124 Help: "Number of total bytes received",
125 },
126 []string{"device_id", "port_id"},
127 )
128 onosTxPacketsTotal = prometheus.NewGaugeVec(
129 prometheus.GaugeOpts{
130 Name: "onos_tx_packets_total",
131 Help: "Number of total packets transmitted",
132 },
133 []string{"device_id", "port_id"},
134 )
135 onosRxPacketsTotal = prometheus.NewGaugeVec(
136 prometheus.GaugeOpts{
137 Name: "onos_rx_packets_total",
138 Help: "Number of total packets received",
139 },
140 []string{"device_id", "port_id"},
141 )
142
143 onosTxDropPacketsTotal = prometheus.NewGaugeVec(
144 prometheus.GaugeOpts{
145 Name: "onos_tx_drop_packets_total",
146 Help: "Number of total transmitted packets dropped",
147 },
148 []string{"device_id", "port_id"},
149 )
150
151 onosRxDropPacketsTotal = prometheus.NewGaugeVec(
152 prometheus.GaugeOpts{
153 Name: "onos_rx_drop_packets_total",
154 Help: "Number of total received packets dropped",
155 },
156 []string{"device_id", "port_id"},
157 )
kartikey dubey72ef3b82019-05-27 06:50:04 +0000158
159 // onos.aaa kpis
160 onosaaaRxAcceptResponses = prometheus.NewGauge(
161 prometheus.GaugeOpts{
162 Name: "onosaaa_rx_accept_responses",
163 Help: "Number of access accept packets received from the server",
164 })
165 onosaaaRxRejectResponses = prometheus.NewGauge(
166 prometheus.GaugeOpts{
167 Name: "onosaaa_rx_reject_responses",
168 Help: "Number of access reject packets received from the server",
169 })
170 onosaaaRxChallengeResponses = prometheus.NewGauge(
171 prometheus.GaugeOpts{
172 Name: "onosaaa_rx_challenge_response",
173 Help: "Number of access challenge packets received from the server",
174 })
175 onosaaaTxAccessRequests = prometheus.NewGauge(
176 prometheus.GaugeOpts{
177 Name: "onosaaa_tx_access_requests",
178 Help: "Number of access request packets sent to the server",
179 })
180 onosaaaRxInvalidValidators = prometheus.NewGauge(
181 prometheus.GaugeOpts{
182 Name: "onosaaa_rx_invalid_validators",
183 Help: "Number of access response packets received from the server with an invalid validator",
184 })
185 onosaaaRxUnknownType = prometheus.NewGauge(
186 prometheus.GaugeOpts{
187 Name: "onosaaa_rx_unknown_type",
188 Help: "Number of packets of an unknown RADIUS type received from the accounting server",
189 })
190 onosaaaPendingRequests = prometheus.NewGauge(
191 prometheus.GaugeOpts{
192 Name: "onosaaa_pending_responses",
193 Help: "Number of access request packets pending a response from the server",
194 })
195 onosaaaRxDroppedResponses = prometheus.NewGauge(
196 prometheus.GaugeOpts{
197 Name: "onosaaa_rx_dropped_responses",
198 Help: "Number of dropped packets received from the accounting server",
199 })
200 onosaaaRxMalformedResponses = prometheus.NewGauge(
201 prometheus.GaugeOpts{
202 Name: "onosaaa_rx_malformed_responses",
203 Help: "Number of malformed access response packets received from the server",
204 })
205 onosaaaRxUnknownserver = prometheus.NewGauge(
206 prometheus.GaugeOpts{
207 Name: "onosaaa_rx_from_unknown_server",
208 Help: "Number of packets received from an unknown server",
209 })
210 onosaaaRequestRttMillis = prometheus.NewGauge(
211 prometheus.GaugeOpts{
212 Name: "onosaaa_request_rttmillis",
213 Help: "Roundtrip packet time to the accounting server in Miliseconds",
214 })
215 onosaaaRequestReTx = prometheus.NewGauge(
216 prometheus.GaugeOpts{
217 Name: "onosaaa_request_re_tx",
218 Help: "Number of access request packets retransmitted to the server",
219 })
Daniele Morobe242582019-10-01 14:02:46 -0700220
221 // ONOS PPPoE kpis
222
223 onosPppoeUpTermBytes = prometheus.NewGaugeVec(
224 prometheus.GaugeOpts{
225 Name: "onosPppoeupTermBytes",
226 Help: "onosPppoeupTermBytes",
227 },
228 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
229 )
230 onosPppoeUpTermPackets = prometheus.NewGaugeVec(
231 prometheus.GaugeOpts{
232 Name: "onosPppoeupTermPackets",
233 Help: "onosPppoeupTermPackets",
234 },
235 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
236 )
237 onosPppoeUpDropBytes = prometheus.NewGaugeVec(
238 prometheus.GaugeOpts{
239 Name: "onosPppoeupDropBytes",
240 Help: "onosPppoeupDropBytes",
241 },
242 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
243 )
244 onosPppoeUpDropPackets = prometheus.NewGaugeVec(
245 prometheus.GaugeOpts{
246 Name: "onosPppoeupDropPackets",
247 Help: "onosPppoeupDropPackets",
248 },
249 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
250 )
251 onosPppoeUpControlPackets = prometheus.NewGaugeVec(
252 prometheus.GaugeOpts{
253 Name: "onosPppoeupControlPackets",
254 Help: "onosPppoeupControlPackets",
255 },
256 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
257 )
258 onosPppoeDownRxBytes = prometheus.NewGaugeVec(
259 prometheus.GaugeOpts{
260 Name: "onosPppoedownRxBytes",
261 Help: "onosPppoedownRxBytes",
262 },
263 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
264 )
265 onosPppoeDownRxPackets = prometheus.NewGaugeVec(
266 prometheus.GaugeOpts{
267 Name: "onosPppoedownRxPackets",
268 Help: "onosPppoedownRxPackets",
269 },
270 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
271 )
272 onosPppoeDownTxBytes = prometheus.NewGaugeVec(
273 prometheus.GaugeOpts{
274 Name: "onosPppoedownTxBytes",
275 Help: "onosPppoedownTxBytes",
276 },
277 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
278 )
279 onosPppoeDownTxPackets = prometheus.NewGaugeVec(
280 prometheus.GaugeOpts{
281 Name: "onosPppoedownTxPackets",
282 Help: "onosPppoedownTxPackets",
283 },
284 []string{"mac_address", "ip", "session_id", "s_tag", "c_tag", "onu_serial"},
285 )
Matteo Scandoloaab36db2018-10-09 19:54:11 -0700286)
287
288func exportVolthaKPI(kpi VolthaKPI) {
289
290 for _, data := range kpi.SliceDatas {
291 switch title := data.Metadata.Title; title {
292 case "Ethernet", "PON":
293 volthaTxBytesTotal.WithLabelValues(
294 data.Metadata.LogicalDeviceID,
295 data.Metadata.SerialNumber,
296 data.Metadata.DeviceID,
297 data.Metadata.Context.InterfaceID,
298 data.Metadata.Context.PonID,
299 data.Metadata.Context.PortNumber,
300 data.Metadata.Title,
301 ).Set(data.Metrics.TxBytes)
302
303 volthaRxBytesTotal.WithLabelValues(
304 data.Metadata.LogicalDeviceID,
305 data.Metadata.SerialNumber,
306 data.Metadata.DeviceID,
307 data.Metadata.Context.InterfaceID,
308 data.Metadata.Context.PonID,
309 data.Metadata.Context.PortNumber,
310 data.Metadata.Title,
311 ).Set(data.Metrics.RxBytes)
312
313 volthaTxPacketsTotal.WithLabelValues(
314 data.Metadata.LogicalDeviceID,
315 data.Metadata.SerialNumber,
316 data.Metadata.DeviceID,
317 data.Metadata.Context.InterfaceID,
318 data.Metadata.Context.PonID,
319 data.Metadata.Context.PortNumber,
320 data.Metadata.Title,
321 ).Set(data.Metrics.TxPackets)
322
323 volthaRxPacketsTotal.WithLabelValues(
324 data.Metadata.LogicalDeviceID,
325 data.Metadata.SerialNumber,
326 data.Metadata.DeviceID,
327 data.Metadata.Context.InterfaceID,
328 data.Metadata.Context.PonID,
329 data.Metadata.Context.PortNumber,
330 data.Metadata.Title,
331 ).Set(data.Metrics.RxPackets)
332
333 volthaTxErrorPacketsTotal.WithLabelValues(
334 data.Metadata.LogicalDeviceID,
335 data.Metadata.SerialNumber,
336 data.Metadata.DeviceID,
337 data.Metadata.Context.InterfaceID,
338 data.Metadata.Context.PonID,
339 data.Metadata.Context.PortNumber,
340 data.Metadata.Title,
341 ).Set(data.Metrics.TxErrorPackets)
342
343 volthaRxErrorPacketsTotal.WithLabelValues(
344 data.Metadata.LogicalDeviceID,
345 data.Metadata.SerialNumber,
346 data.Metadata.DeviceID,
347 data.Metadata.Context.InterfaceID,
348 data.Metadata.Context.PonID,
349 data.Metadata.Context.PortNumber,
350 data.Metadata.Title,
351 ).Set(data.Metrics.RxErrorPackets)
352
353 // TODO add metrics for:
354 // TxBcastPackets
355 // TxUnicastPackets
356 // TxMulticastPackets
357 // RxBcastPackets
358 // RxMulticastPackets
359
360 case "Ethernet_Bridge_Port_History":
361 if data.Metadata.Context.Upstream == "True" {
362 // ONU. Extended Ethernet statistics.
363 volthaTxPacketsTotal.WithLabelValues(
364 data.Metadata.LogicalDeviceID,
365 data.Metadata.SerialNumber,
366 data.Metadata.DeviceID,
367 "NA", // InterfaceID
368 "NA", // PonID
369 "NA", // PortNumber
370 data.Metadata.Title,
371 ).Add(data.Metrics.Packets)
372
373 volthaTxBytesTotal.WithLabelValues(
374 data.Metadata.LogicalDeviceID,
375 data.Metadata.SerialNumber,
376 data.Metadata.DeviceID,
377 "NA", // InterfaceID
378 "NA", // PonID
379 "NA", // PortNumber
380 data.Metadata.Title,
381 ).Add(data.Metrics.Octets)
382 } else {
383 // ONU. Extended Ethernet statistics.
384 volthaRxPacketsTotal.WithLabelValues(
385 data.Metadata.LogicalDeviceID,
386 data.Metadata.SerialNumber,
387 data.Metadata.DeviceID,
388 "NA", // InterfaceID
389 "NA", // PonID
390 "NA", // PortNumber
391 data.Metadata.Title,
392 ).Add(data.Metrics.Packets)
393
394 volthaRxBytesTotal.WithLabelValues(
395 data.Metadata.LogicalDeviceID,
396 data.Metadata.SerialNumber,
397 data.Metadata.DeviceID,
398 "NA", // InterfaceID
399 "NA", // PonID
400 "NA", // PortNumber
401 data.Metadata.Title,
402 ).Add(data.Metrics.Octets)
403 }
404
Ganesh Bhure967018e2019-07-29 14:48:32 +0530405 case "PON_Optical":
406 VolthaOnuLaserBiasCurrent.WithLabelValues(
407 data.Metadata.LogicalDeviceID,
408 data.Metadata.SerialNumber,
409 data.Metadata.DeviceID,
410 data.Metadata.Context.InterfaceID,
411 data.Metadata.Context.PonID,
412 data.Metadata.Context.PortNumber,
413 data.Metadata.Title,
414 ).Set(data.Metrics.LaserBiasCurrent)
415
416 volthaOnuTemperature.WithLabelValues(
417 data.Metadata.LogicalDeviceID,
418 data.Metadata.SerialNumber,
419 data.Metadata.DeviceID,
420 data.Metadata.Context.InterfaceID,
421 data.Metadata.Context.PonID,
422 data.Metadata.Context.PortNumber,
423 data.Metadata.Title,
424 ).Set(data.Metrics.Temperature)
425
426 VolthaOnuPowerFeedVoltage.WithLabelValues(
427 data.Metadata.LogicalDeviceID,
428 data.Metadata.SerialNumber,
429 data.Metadata.DeviceID,
430 data.Metadata.Context.InterfaceID,
431 data.Metadata.Context.PonID,
432 data.Metadata.Context.PortNumber,
433 data.Metadata.Title,
434 ).Set(data.Metrics.PowerFeedVoltage)
435
436 VolthaOnuMeanOpticalLaunchPower.WithLabelValues(
437 data.Metadata.LogicalDeviceID,
438 data.Metadata.SerialNumber,
439 data.Metadata.DeviceID,
440 data.Metadata.Context.InterfaceID,
441 data.Metadata.Context.PonID,
442 data.Metadata.Context.PortNumber,
443 data.Metadata.Title,
444 ).Set(data.Metrics.MeanOpticalLaunchPower)
445
446 VolthaOnuReceivedOpticalPower.WithLabelValues(
447 data.Metadata.LogicalDeviceID,
448 data.Metadata.SerialNumber,
449 data.Metadata.DeviceID,
450 data.Metadata.Context.InterfaceID,
451 data.Metadata.Context.PonID,
452 data.Metadata.Context.PortNumber,
453 data.Metadata.Title,
454 ).Set(data.Metrics.ReceivedOpticalPower)
455
Matteo Scandoloaab36db2018-10-09 19:54:11 -0700456 case "Ethernet_UNI_History":
457 // ONU. Do nothing.
458
459 case "FEC_History":
460 // ONU. Do Nothing.
461
462 volthaTxBytesTotal.WithLabelValues(
463 data.Metadata.LogicalDeviceID,
464 data.Metadata.SerialNumber,
465 data.Metadata.DeviceID,
466 data.Metadata.Context.InterfaceID,
467 data.Metadata.Context.PonID,
468 data.Metadata.Context.PortNumber,
469 data.Metadata.Title,
470 ).Set(data.Metrics.TxBytes)
471
472 volthaRxBytesTotal.WithLabelValues(
473 data.Metadata.LogicalDeviceID,
474 data.Metadata.SerialNumber,
475 data.Metadata.DeviceID,
476 data.Metadata.Context.InterfaceID,
477 data.Metadata.Context.PonID,
478 data.Metadata.Context.PortNumber,
479 data.Metadata.Title,
480 ).Set(data.Metrics.RxBytes)
481
482 volthaTxPacketsTotal.WithLabelValues(
483 data.Metadata.LogicalDeviceID,
484 data.Metadata.SerialNumber,
485 data.Metadata.DeviceID,
486 data.Metadata.Context.InterfaceID,
487 data.Metadata.Context.PonID,
488 data.Metadata.Context.PortNumber,
489 data.Metadata.Title,
490 ).Set(data.Metrics.TxPackets)
491
492 volthaRxPacketsTotal.WithLabelValues(
493 data.Metadata.LogicalDeviceID,
494 data.Metadata.SerialNumber,
495 data.Metadata.DeviceID,
496 data.Metadata.Context.InterfaceID,
497 data.Metadata.Context.PonID,
498 data.Metadata.Context.PortNumber,
499 data.Metadata.Title,
500 ).Set(data.Metrics.RxPackets)
501
502 volthaTxErrorPacketsTotal.WithLabelValues(
503 data.Metadata.LogicalDeviceID,
504 data.Metadata.SerialNumber,
505 data.Metadata.DeviceID,
506 data.Metadata.Context.InterfaceID,
507 data.Metadata.Context.PonID,
508 data.Metadata.Context.PortNumber,
509 data.Metadata.Title,
510 ).Set(data.Metrics.TxErrorPackets)
511
512 volthaRxErrorPacketsTotal.WithLabelValues(
513 data.Metadata.LogicalDeviceID,
514 data.Metadata.SerialNumber,
515 data.Metadata.DeviceID,
516 data.Metadata.Context.InterfaceID,
517 data.Metadata.Context.PonID,
518 data.Metadata.Context.PortNumber,
519 data.Metadata.Title,
520 ).Set(data.Metrics.RxErrorPackets)
521
522 // TODO add metrics for:
523 // TxBcastPackets
524 // TxUnicastPackets
525 // TxMulticastPackets
526 // RxBcastPackets
527 // RxMulticastPackets
528
529 case "voltha.internal":
530 // Voltha Internal. Do nothing.
531 }
532 }
533}
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530534
535func exportOnosKPI(kpi OnosKPI) {
536
537 for _, data := range kpi.Ports {
538
539 onosTxBytesTotal.WithLabelValues(
540 kpi.DeviceID,
541 data.PortID,
542 ).Set(data.TxBytes)
543
544 onosRxBytesTotal.WithLabelValues(
545 kpi.DeviceID,
546 data.PortID,
547 ).Set(data.RxBytes)
548
549 onosTxPacketsTotal.WithLabelValues(
550 kpi.DeviceID,
551 data.PortID,
552 ).Set(data.TxPackets)
553
554 onosRxPacketsTotal.WithLabelValues(
555 kpi.DeviceID,
556 data.PortID,
557 ).Set(data.RxPackets)
558
559 onosTxDropPacketsTotal.WithLabelValues(
560 kpi.DeviceID,
561 data.PortID,
562 ).Set(data.TxPacketsDrop)
563
564 onosRxDropPacketsTotal.WithLabelValues(
565 kpi.DeviceID,
566 data.PortID,
567 ).Set(data.RxPacketsDrop)
568 }
569}
570
571func exportImporterKPI(kpi ImporterKPI) {
572 // TODO: add metrics for importer data
573 logger.Info("To be implemented")
574}
575
kartikey dubey72ef3b82019-05-27 06:50:04 +0000576func exportOnosAaaKPI(kpi OnosAaaKPI) {
577
578 onosaaaRxAcceptResponses.Set(kpi.RxAcceptResponses)
579
580 onosaaaRxRejectResponses.Set(kpi.RxRejectResponses)
581
582 onosaaaRxChallengeResponses.Set(kpi.RxChallengeResponses)
583
584 onosaaaTxAccessRequests.Set(kpi.TxAccessRequests)
585
586 onosaaaRxInvalidValidators.Set(kpi.RxInvalidValidators)
587
588 onosaaaRxUnknownType.Set(kpi.RxUnknownType)
589
590 onosaaaPendingRequests.Set(kpi.PendingRequests)
591
592 onosaaaRxDroppedResponses.Set(kpi.RxDroppedResponses)
593
594 onosaaaRxMalformedResponses.Set(kpi.RxMalformedResponses)
595
596 onosaaaRxUnknownserver.Set(kpi.RxUnknownserver)
597
598 onosaaaRequestRttMillis.Set(kpi.RequestRttMillis)
599
600 onosaaaRequestReTx.Set(kpi.RequestReTx)
601}
602
Daniele Morobe242582019-10-01 14:02:46 -0700603func exportOnosPppoeKPI(kpi OnosPppoeKPI) {
604 for _, s := range kpi.Subscribers {
605
606 logger.WithFields(log.Fields{
607 "Mac": s.Mac,
608 "Ip": s.Ip,
609 "SessionId": strconv.Itoa(s.SessionId),
610 "STag": strconv.Itoa(s.STag),
611 "CTag": strconv.Itoa(s.CTag),
612 "onuSerialNumber": s.SerialNumber,
613 }).Trace("Received OnosPppoeKPI message")
614
615 onosPppoeUpTermBytes.WithLabelValues(
616 s.Mac,
617 s.Ip,
618 strconv.Itoa(s.SessionId),
619 strconv.Itoa(s.STag),
620 strconv.Itoa(s.CTag),
621 s.SerialNumber,
622 ).Set(s.UpTermBytes)
623 onosPppoeUpTermPackets.WithLabelValues(
624 s.Mac,
625 s.Ip,
626 strconv.Itoa(s.SessionId),
627 strconv.Itoa(s.STag),
628 strconv.Itoa(s.CTag),
629 s.SerialNumber,
630 ).Set(s.UpTermPackets)
631 onosPppoeUpDropBytes.WithLabelValues(
632 s.Mac,
633 s.Ip,
634 strconv.Itoa(s.SessionId),
635 strconv.Itoa(s.STag),
636 strconv.Itoa(s.CTag),
637 s.SerialNumber,
638 ).Set(s.UpDropBytes)
639 onosPppoeUpDropPackets.WithLabelValues(
640 s.Mac,
641 s.Ip,
642 strconv.Itoa(s.SessionId),
643 strconv.Itoa(s.STag),
644 strconv.Itoa(s.CTag),
645 s.SerialNumber,
646 ).Set(s.UpDropPackets)
647 onosPppoeUpControlPackets.WithLabelValues(
648 s.Mac,
649 s.Ip,
650 strconv.Itoa(s.SessionId),
651 strconv.Itoa(s.STag),
652 strconv.Itoa(s.CTag),
653 s.SerialNumber,
654 ).Set(s.UpControlPackets)
655 onosPppoeDownRxBytes.WithLabelValues(
656 s.Mac,
657 s.Ip,
658 strconv.Itoa(s.SessionId),
659 strconv.Itoa(s.STag),
660 strconv.Itoa(s.CTag),
661 s.SerialNumber,
662 ).Set(s.DownRxBytes)
663 onosPppoeDownRxPackets.WithLabelValues(
664 s.Mac,
665 s.Ip,
666 strconv.Itoa(s.SessionId),
667 strconv.Itoa(s.STag),
668 strconv.Itoa(s.CTag),
669 s.SerialNumber,
670 ).Set(s.DownRxPackets)
671 onosPppoeDownTxBytes.WithLabelValues(
672 s.Mac,
673 s.Ip,
674 strconv.Itoa(s.SessionId),
675 strconv.Itoa(s.STag),
676 strconv.Itoa(s.CTag),
677 s.SerialNumber,
678 ).Set(s.DownTxBytes)
679 onosPppoeDownTxPackets.WithLabelValues(
680 s.Mac,
681 s.Ip,
682 strconv.Itoa(s.SessionId),
683 strconv.Itoa(s.STag),
684 strconv.Itoa(s.CTag),
685 s.SerialNumber,
686 ).Set(s.DownTxPackets)
687 }
688}
689
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530690func export(topic *string, data []byte) {
691 switch *topic {
692 case "voltha.kpis":
693 kpi := VolthaKPI{}
694 err := json.Unmarshal(data, &kpi)
695 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530696 logger.Error("Invalid msg on voltha.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530697 break
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530698 }
699 exportVolthaKPI(kpi)
700 case "onos.kpis":
701 kpi := OnosKPI{}
702 err := json.Unmarshal(data, &kpi)
703 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530704 logger.Error("Invalid msg on onos.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530705 break
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530706 }
707 exportOnosKPI(kpi)
708 case "importer.kpis":
709 kpi := ImporterKPI{}
710 err := json.Unmarshal(data, &kpi)
711 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530712 logger.Error("Invalid msg on importer.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530713 break
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530714 }
715 exportImporterKPI(kpi)
kartikey dubey72ef3b82019-05-27 06:50:04 +0000716 case "onos.aaa.stats.kpis":
717 kpi := OnosAaaKPI{}
718 err := json.Unmarshal(data, &kpi)
719 if err != nil {
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530720 logger.Error("Invalid msg on onos.aaa.stats.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530721 break
kartikey dubey72ef3b82019-05-27 06:50:04 +0000722 }
723 exportOnosAaaKPI(kpi)
Daniele Morobe242582019-10-01 14:02:46 -0700724 case "pppoe.stats":
725 kpi := OnosPppoeKPI{}
726 err := json.Unmarshal(data, &kpi)
727 if err != nil {
728 logger.Error("Invalid msg on pppoe.stats: %s, Unprocessed Msg: %s", err.Error(), string(data))
729 break
730 }
731 exportOnosPppoeKPI(kpi)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530732 default:
Ganesh Bhure74fb7b02019-06-28 16:16:26 +0530733 logger.Warn("Unexpected export. Topic [%s] not supported. Should not come here", *topic)
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530734 }
735}