main.go 1.4 KB

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