lijian 2 лет назад
Родитель
Сommit
8815519014

+ 1 - 0
pkg/server/promethues.go

@@ -70,6 +70,7 @@ func (p *Prometheus) RegisterMetrics(sub string, metrics ...*Metric) {
 		if err := prometheus.Register(metric); err != nil {
 			Log.Errorf("%s could not be registered in prometheus", m.Name)
 		}
+		m.MetricCollector = metric
 	}
 }
 

+ 4 - 0
pkg/server/server.go

@@ -308,3 +308,7 @@ func addCallCount() {
 		serverInstance.prome.CallCnt.WithLabelValues(serverInstance.name).Inc()
 	}
 }
+
+func RegisterMetric(metrics ...*Metric) {
+	serverInstance.prome.RegisterMetrics("", metrics...)
+}

+ 11 - 1
services/mqttaccess/main.go

@@ -1,10 +1,13 @@
 package main
 
 import (
+	"github.com/prometheus/client_golang/prometheus"
 	"sparrow/pkg/rpcs"
 	"sparrow/pkg/server"
 )
 
+var deviceOnlineCount prometheus.Gauge
+
 func main() {
 	// init server
 	err := server.Init(rpcs.MQTTAccessName)
@@ -32,7 +35,14 @@ func main() {
 		server.Log.Errorf("Register TCP service Error: %s", err)
 		return
 	}
-
+	m := &server.Metric{
+		ID:          "device_online_count",
+		Name:        "device_online_count",
+		Description: "MQTT Device Online Count",
+		Type:        "gauge",
+	}
+	server.RegisterMetric(m)
+	deviceOnlineCount = m.MetricCollector.(prometheus.Gauge)
 	// start to run
 	err = server.Run()
 	if err != nil {

+ 2 - 0
services/mqttaccess/mqtt_provider.go

@@ -40,6 +40,7 @@ func (mp *MQTTProvider) OnDeviceOnline(args rpcs.ArgsGetOnline, VendorId string)
 	if err = server.RPCCallByName(nil, rpcs.ControllerName, "Controller.Online", &cArgs, &cReply); err != nil {
 		return err
 	}
+	deviceOnlineCount.Inc()
 	return err
 }
 func (mp *MQTTProvider) OnDeviceOffline(deviceid string, vendorId string) error {
@@ -59,6 +60,7 @@ func (mp *MQTTProvider) OnDeviceOffline(deviceid string, vendorId string) error
 	if err = server.RPCCallByName(nil, rpcs.ControllerName, "Controller.Offline", &cArgs, &cReply); err != nil {
 		return err
 	}
+	deviceOnlineCount.Dec()
 	return err
 }
 func (mp *MQTTProvider) OnDeviceHeartBeat(deviceid string) error {

+ 2 - 1
tests/device/main.go

@@ -9,6 +9,7 @@ var (
 	testURL        = flag.String("url", "http://192.168.0.160:8088", "login url")
 	testProductKey = flag.String("productkey", "958daf8b3a533f0d9516ac8fd17ef0cb06b439e664787a2a89608a10eeee8eb3c35c82c505d19f8a4417e530de0678fd", "product key")
 	testProtocol   = flag.String("protocol", "mqtt", "access protocol")
+	testDeviceCode = flag.String("dvc", "", "device code")
 )
 
 func main() {
@@ -18,7 +19,7 @@ func main() {
 		return
 	}
 
-	dev := NewDevice(*testURL, *testProductKey, "5566", "1.2.5", *testProtocol)
+	dev := NewDevice(*testURL, *testProductKey, *testDeviceCode, "1.2.3", *testProtocol)
 
 	err := dev.DoRegister()
 	if err != nil {