package main import ( "github.com/prometheus/client_golang/prometheus" _ "net/http/pprof" "sparrow/pkg/rpcs" "sparrow/pkg/server" ) var deviceOnlineCount prometheus.Gauge var deviceMessageCount *prometheus.CounterVec func main() { //go func() { // pprofPort := "6060" // server.Log.Infof("pprof server started at :%s/debug/pprof", pprofPort) // if err := http.ListenAndServe(":"+pprofPort, nil); err != nil { // server.Log.Errorf("pprof server failed: %v", err) // } //}() // init server err := server.Init(rpcs.MQTTAccessName) if err != nil { server.Log.Fatal(err) return } a, err := NewAccess() if err != nil { server.Log.Fatal(err) return } // register a rpc service err = server.RegisterRPCHandler(a) if err != nil { server.Log.Errorf("Register RPC service Error: %s", err) return } // register a tcp service for mqtt err = server.RegisterTCPHandler(a.MqttBroker) if err != nil { server.Log.Errorf("Register TCP service Error: %s", err) return } deviceOnlineMetric := &server.Metric{ ID: "device_online_count", Name: "device_online_count", Description: "MQTT Device Online Count", Type: "gauge", } recvMessageCount := &server.Metric{ ID: "device_message_total", Name: "device_message_total", Description: "device report message total count", Type: "counter_vec", Args: []string{"device_code"}, } server.RegisterMetric(deviceOnlineMetric, recvMessageCount) deviceOnlineCount = deviceOnlineMetric.MetricCollector.(prometheus.Gauge) deviceMessageCount = recvMessageCount.MetricCollector.(*prometheus.CounterVec) // start to run err = server.Run() if err != nil { server.Log.Fatal(err) } }