blob: d6276b44db7d5cf354c8ab819c8b763ba6e4f3b2 [file] [log] [blame]
Matteo Scandoloa8bd93e2018-09-13 13:36:50 -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
Matteo Scandolo189526a2018-07-13 09:10:23 -070015package main
16
17import (
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053018 "io/ioutil"
19 "log"
Matteo Scandolo189526a2018-07-13 09:10:23 -070020 "net/http"
kartikey dubey72ef3b82019-05-27 06:50:04 +000021 "strconv"
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053022 "strings"
Matteo Scandoloaab36db2018-10-09 19:54:11 -070023 "sync"
kesavand2cde6582020-06-22 04:56:23 -040024
25 "gerrit.opencord.org/kafka-topic-exporter/common/logger"
26 "github.com/Shopify/sarama"
27 "github.com/prometheus/client_golang/prometheus"
28 "github.com/prometheus/client_golang/prometheus/promhttp"
29 "gopkg.in/yaml.v2"
Matteo Scandolo189526a2018-07-13 09:10:23 -070030)
31
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053032func kafkaInit(broker BrokerInfo) {
Matteo Scandolo189526a2018-07-13 09:10:23 -070033 config := sarama.NewConfig()
34 config.Consumer.Return.Errors = true
Matteo Scandoloaab36db2018-10-09 19:54:11 -070035 var wg sync.WaitGroup
36
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053037 master, err := sarama.NewConsumer([]string{broker.Host}, config)
kartikey dubey72ef3b82019-05-27 06:50:04 +000038
Matteo Scandolo189526a2018-07-13 09:10:23 -070039 if err != nil {
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053040 logger.Panic("kafkaInit panic")
Matteo Scandolo189526a2018-07-13 09:10:23 -070041 panic(err)
42 }
43 defer func() {
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053044 logger.Debug("kafkaInit close connection")
Matteo Scandolo189526a2018-07-13 09:10:23 -070045 if err := master.Close(); err != nil {
46 panic(err)
47 }
48 }()
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053049
50 // read topics from config
51 topics := broker.Topics
52
53 // we are spinning threads for each topic, we need to wait for
54 // them to exit before stopping the kafka connection
55 wg.Add(len(topics))
56
57 for _, topic := range topics {
58 t := topic
59 go topicListener(&t, master, wg)
60 }
Matteo Scandolo189526a2018-07-13 09:10:23 -070061
Matteo Scandoloaab36db2018-10-09 19:54:11 -070062 wg.Wait()
Matteo Scandolo189526a2018-07-13 09:10:23 -070063}
64
Ganesh Bhure8d0c9942019-05-24 11:42:09 +053065func runServer(target TargetInfo) {
66 if target.Port == 0 {
67 logger.Warn("Prometheus target port not configured, using default 8080")
68 target.Port = 8080
69 }
70 logger.Debug("Starting HTTP Server on %d port", target.Port)
Ganesh Bhure0f2449c2019-07-15 10:31:38 +053071 http.Handle("/metrics", promhttp.Handler())
72 err := http.ListenAndServe(":"+strconv.Itoa(target.Port), nil)
73 if err != nil {
74 logger.Error("HTTP Server Error: %s", err.Error())
kesavand6753e5e2020-04-28 03:34:21 -040075 }
Matteo Scandolo189526a2018-07-13 09:10:23 -070076}
77
78func init() {
Matteo Scandolo189526a2018-07-13 09:10:23 -070079 // register metrics within Prometheus
kesavand6753e5e2020-04-28 03:34:21 -040080 prometheus.MustRegister(volthaOltTxBytesTotal)
81 prometheus.MustRegister(volthaOltRxBytesTotal)
82 prometheus.MustRegister(volthaOltTxPacketsTotal)
83 prometheus.MustRegister(volthaOltRxPacketsTotal)
84 prometheus.MustRegister(volthaOltTxErrorPacketsTotal)
85 prometheus.MustRegister(volthaOltRxErrorPacketsTotal)
86 prometheus.MustRegister(volthaOltTxBroadcastPacketsTotal)
87 prometheus.MustRegister(volthaOltTxUnicastPacketsTotal)
88 prometheus.MustRegister(volthaOltTxMulticastPacketsTotal)
89 prometheus.MustRegister(volthaOltRxBroadcastPacketsTotal)
90 prometheus.MustRegister(volthaOltRxUnicastPacketsTotal)
91 prometheus.MustRegister(volthaOltRxMulticastPacketsTotal)
Matteo Scandoloaab36db2018-10-09 19:54:11 -070092
Ganesh Bhure967018e2019-07-29 14:48:32 +053093 prometheus.MustRegister(VolthaOnuLaserBiasCurrent)
94 prometheus.MustRegister(volthaOnuTemperature)
95 prometheus.MustRegister(VolthaOnuPowerFeedVoltage)
96 prometheus.MustRegister(VolthaOnuMeanOpticalLaunchPower)
97 prometheus.MustRegister(VolthaOnuReceivedOpticalPower)
kesavand6753e5e2020-04-28 03:34:21 -040098 prometheus.MustRegister(VolthaOnuTransmtOpticalPower)
99
100 prometheus.MustRegister(volthaOnuFecCorrectedCodewordsTotal)
101 prometheus.MustRegister(volthaOnuFecCodewordsTotal)
102 prometheus.MustRegister(volthaOnuFecCorrectedBytesTotal)
103 prometheus.MustRegister(volthaOnuFecSecondsTotal)
104 prometheus.MustRegister(volthaOnuFecUncorrectablewordsTotal)
105
106 prometheus.MustRegister(volthaEthernetUniSingleCollisionTotal)
107 prometheus.MustRegister(volthaEthernetUniMacLayerTramsmitErrorTotal)
108 prometheus.MustRegister(volthaEthernetUniMultiCollisionTotal)
109 prometheus.MustRegister(volthaEthernetUniFramestooLongTotal)
110 prometheus.MustRegister(volthaEthernetUniAlignmentErrorTotal)
111 prometheus.MustRegister(volthaEthernetUniCarrierErrorTotal)
112 prometheus.MustRegister(volthaEthernetUniExcessiveCollisionErrorTotal)
113 prometheus.MustRegister(volthaEthernetUniDeferredTxTotal)
114 prometheus.MustRegister(volthaEthernetUniLateCollisionTotal)
115 prometheus.MustRegister(volthaEthernetUniBufferOverflowsRxErrorTotal)
116 prometheus.MustRegister(volthaEthernetUniFcsErrorTotal)
117 prometheus.MustRegister(volthaEthernetUniSqeErrorTotal)
118 prometheus.MustRegister(volthaEthernetUniBufferOverflowsTxErrorTotal)
119
120 prometheus.MustRegister(volthaOnuBridgePortRxBytesTotal)
121 prometheus.MustRegister(volthaOnuBridgePortRxPacketsTotal)
122 prometheus.MustRegister(volthaOnuBridgePort_64octetRxPacketsTotal)
123 prometheus.MustRegister(volthaOnuBridgePort_65_127_octetRxPacketsTotal)
124 prometheus.MustRegister(volthaOnuBridgePort_128_255_octetRxPacketsTotal)
125 prometheus.MustRegister(volthaOnuBridgePort_256_511_octetRxPacketsTotal)
126 prometheus.MustRegister(volthaOnuBridgePort_512_1023_octetRxPacketsTotal)
127 prometheus.MustRegister(volthaOnuBridgePort_1024_1518_octetRxPacketsTotal)
128 prometheus.MustRegister(volthaOnuBridgePortRxMulticastPacketsTotal)
129 prometheus.MustRegister(volthaOnuBridgePortRxBroadcastPacketsTotal)
130 prometheus.MustRegister(volthaOnuBridgePortRxOversizePacketsTotal)
131 prometheus.MustRegister(volthaOnuBridgePortRxCrcErrorPacketsTotal)
132 prometheus.MustRegister(volthaOnuBridgePortRxUndersizePacketsTotal)
133 prometheus.MustRegister(volthaOnuBridgePortRxDropEventsTotal)
134
135 prometheus.MustRegister(volthaOnuBridgePortTxBytesTotal)
136 prometheus.MustRegister(volthaOnuBridgePortTxPacketsTotal)
137 prometheus.MustRegister(volthaOnuBridgePort_64octetTxPacketsTotal)
138 prometheus.MustRegister(volthaOnuBridgePort_65_127_octetTxPacketsTotal)
139 prometheus.MustRegister(volthaOnuBridgePort_128_255_octetTxPacketsTotal)
140 prometheus.MustRegister(volthaOnuBridgePort_256_511_octetTxPacketsTotal)
141 prometheus.MustRegister(volthaOnuBridgePort_512_1023_octetTxPacketsTotal)
142 prometheus.MustRegister(volthaOnuBridgePort_1024_1518_octetTxPacketsTotal)
143 prometheus.MustRegister(volthaOnuBridgePortTxMulticastPacketsTotal)
144 prometheus.MustRegister(volthaOnuBridgePortTxBroadcastPacketsTotal)
145 prometheus.MustRegister(volthaOnuBridgePortTxOversizePacketsTotal)
146 prometheus.MustRegister(volthaOnuBridgePortTxCrcErrorPacketsTotal)
147 prometheus.MustRegister(volthaOnuBridgePortTxUndersizePacketsTotal)
148 prometheus.MustRegister(volthaOnuBridgePortTxDropEventsTotal)
Ganesh Bhure967018e2019-07-29 14:48:32 +0530149
Matteo Scandoloaab36db2018-10-09 19:54:11 -0700150 prometheus.MustRegister(onosTxBytesTotal)
151 prometheus.MustRegister(onosRxBytesTotal)
152 prometheus.MustRegister(onosTxPacketsTotal)
153 prometheus.MustRegister(onosRxPacketsTotal)
154 prometheus.MustRegister(onosTxDropPacketsTotal)
155 prometheus.MustRegister(onosRxDropPacketsTotal)
kartikey dubey72ef3b82019-05-27 06:50:04 +0000156
157 prometheus.MustRegister(onosaaaRxAcceptResponses)
158 prometheus.MustRegister(onosaaaRxRejectResponses)
159 prometheus.MustRegister(onosaaaRxChallengeResponses)
160 prometheus.MustRegister(onosaaaTxAccessRequests)
161 prometheus.MustRegister(onosaaaRxInvalidValidators)
162 prometheus.MustRegister(onosaaaRxUnknownType)
163 prometheus.MustRegister(onosaaaPendingRequests)
164 prometheus.MustRegister(onosaaaRxDroppedResponses)
165 prometheus.MustRegister(onosaaaRxMalformedResponses)
166 prometheus.MustRegister(onosaaaRxUnknownserver)
167 prometheus.MustRegister(onosaaaRequestRttMillis)
168 prometheus.MustRegister(onosaaaRequestReTx)
Daniele Morobe242582019-10-01 14:02:46 -0700169
Daniele Moro707c2092019-12-06 16:39:18 -0800170 prometheus.MustRegister(onosBngUpTxBytes)
171 prometheus.MustRegister(onosBngUpTxPackets)
172 prometheus.MustRegister(onosBngUpDropBytes)
173 prometheus.MustRegister(onosBngUpDropPackets)
174 prometheus.MustRegister(onosBngControlPackets)
175 prometheus.MustRegister(onosBngDownRxBytes)
176 prometheus.MustRegister(onosBngDownRxPackets)
177 prometheus.MustRegister(onosBngDownTxBytes)
178 prometheus.MustRegister(onosBngDownTxPackets)
179 prometheus.MustRegister(onosBngDownDropPackets)
180 prometheus.MustRegister(onosBngDownDropBytes)
Ganesh Bhuref15383e2019-11-11 15:15:14 +0530181
182 prometheus.MustRegister(deviceLaserBiasCurrent)
183 prometheus.MustRegister(deviceTemperature)
184 prometheus.MustRegister(deviceTxPower)
185 prometheus.MustRegister(deviceVoltage)
Shubham Sharma57600bf2019-08-09 07:09:57 +0000186
187 prometheus.MustRegister(onosaaaRxEapolLogoff)
188 prometheus.MustRegister(onosaaaTxEapolResIdentityMsg)
189 prometheus.MustRegister(onosaaaTxAuthSuccess)
190 prometheus.MustRegister(onosaaaTxAuthFailure)
191 prometheus.MustRegister(onosaaaTxStartReq)
192 prometheus.MustRegister(onosaaaEapPktTxAuthChooseEap)
193 prometheus.MustRegister(onosaaaTxRespnotNak)
shubham sharmae7f85752019-09-16 13:37:18 +0000194
kesavand6753e5e2020-04-28 03:34:21 -0400195 prometheus.MustRegister(onosaaaEapolFramesTx)
shubham sharmae7f85752019-09-16 13:37:18 +0000196 prometheus.MustRegister(onosaaaAuthStateIdle)
197 prometheus.MustRegister(onosaaaRequestIdFramesTx)
198 prometheus.MustRegister(onosaaaRequestEapFramesTx)
199 prometheus.MustRegister(onosaaaInvalidPktType)
200 prometheus.MustRegister(onosaaaInvalidBodyLength)
201 prometheus.MustRegister(onosaaaValidEapolFramesRx)
202 prometheus.MustRegister(onosaaaPendingResSupplicant)
203 prometheus.MustRegister(onosaaaRxResIdEapFrames)
kesavand2cde6582020-06-22 04:56:23 -0400204
205 //device metrics
206 //TODO: Check if component level temperatures are supported by Devices,If not remove in later versions of exporter
207 prometheus.MustRegister(oltDeviceCpuTemp)
208 prometheus.MustRegister(oltDeviceCpuUsagePercent)
209 prometheus.MustRegister(oltDeviceFanSpeed)
210 prometheus.MustRegister(oltDeviceDiskTemp)
211 prometheus.MustRegister(oltDeviceDiskUsagePercent)
212 prometheus.MustRegister(oltDeviceRamTemp)
213 prometheus.MustRegister(oltDeviceRamUsagePercent)
214 prometheus.MustRegister(oltDevicePowerUsagePercent)
215 prometheus.MustRegister(oltDeviceInnerSurroundTemp)
216 prometheus.MustRegister(oltDevicePowerUsage)
Matteo Scandolo189526a2018-07-13 09:10:23 -0700217}
218
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530219func loadConfigFile() Config {
220 m := Config{}
221 // this file path is configmap mounted in pod yaml
222 yamlFile, err := ioutil.ReadFile("/etc/config/conf.yaml")
223 if err != nil {
224 log.Printf("yamlFile.Get err: %v ", err)
225 }
226 err = yaml.Unmarshal(yamlFile, &m)
227 if err != nil {
228 log.Fatalf("Unmarshal: %v", err)
229 }
230 return m
Matteo Scandolo189526a2018-07-13 09:10:23 -0700231}
Ganesh Bhure8d0c9942019-05-24 11:42:09 +0530232
233func main() {
234 // load configuration
235 conf := loadConfigFile()
236
237 // logger setup
238 logger.Setup(conf.Logger.Host, strings.ToUpper(conf.Logger.LogLevel))
239 logger.Info("Connecting to broker: [%s]", conf.Broker.Host)
240
241 go kafkaInit(conf.Broker)
242 runServer(conf.Target)
Ganesh Bhure0f2449c2019-07-15 10:31:38 +0530243}