main.go 1.7 KB

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