main.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package main
  2. import (
  3. "github.com/prometheus/client_golang/prometheus"
  4. _ "net/http/pprof"
  5. "sparrow/pkg/rpcs"
  6. "sparrow/pkg/server"
  7. )
  8. var deviceOnlineCount prometheus.Gauge
  9. var deviceMessageCount *prometheus.CounterVec
  10. func main() {
  11. //go func() {
  12. // pprofPort := "6060"
  13. // server.Log.Infof("pprof server started at :%s/debug/pprof", pprofPort)
  14. // if err := http.ListenAndServe(":"+pprofPort, nil); err != nil {
  15. // server.Log.Errorf("pprof server failed: %v", err)
  16. // }
  17. //}()
  18. // init server
  19. err := server.Init(rpcs.MQTTAccessName)
  20. if err != nil {
  21. server.Log.Fatal(err)
  22. return
  23. }
  24. a, err := NewAccess()
  25. if err != nil {
  26. server.Log.Fatal(err)
  27. return
  28. }
  29. // register a rpc service
  30. err = server.RegisterRPCHandler(a)
  31. if err != nil {
  32. server.Log.Errorf("Register RPC service Error: %s", err)
  33. return
  34. }
  35. // register a tcp service for mqtt
  36. err = server.RegisterTCPHandler(a.MqttBroker)
  37. if err != nil {
  38. server.Log.Errorf("Register TCP service Error: %s", err)
  39. return
  40. }
  41. deviceOnlineMetric := &server.Metric{
  42. ID: "device_online_count",
  43. Name: "device_online_count",
  44. Description: "MQTT Device Online Count",
  45. Type: "gauge",
  46. }
  47. recvMessageCount := &server.Metric{
  48. ID: "device_message_total",
  49. Name: "device_message_total",
  50. Description: "device report message total count",
  51. Type: "counter_vec",
  52. Args: []string{"device_code"},
  53. }
  54. server.RegisterMetric(deviceOnlineMetric, recvMessageCount)
  55. deviceOnlineCount = deviceOnlineMetric.MetricCollector.(prometheus.Gauge)
  56. deviceMessageCount = recvMessageCount.MetricCollector.(*prometheus.CounterVec)
  57. // start to run
  58. err = server.Run()
  59. if err != nil {
  60. server.Log.Fatal(err)
  61. }
  62. }