From e35ee695880d46c1f9b7beabe9b9cd2a96c77177 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Tue, 10 May 2022 16:53:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9C=A8=E7=BA=BF=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configure-component/pom.xml | 12 ++++++ .../device/DeviceClusterConfiguration.java | 8 ++++ .../device/DeviceSessionMonitor.java | 41 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceSessionMonitor.java diff --git a/jetlinks-components/configure-component/pom.xml b/jetlinks-components/configure-component/pom.xml index e0b7dc60..c3a4fa07 100644 --- a/jetlinks-components/configure-component/pom.xml +++ b/jetlinks-components/configure-component/pom.xml @@ -121,6 +121,18 @@ grpc-netty-shaded 1.45.0 + + + io.micrometer + micrometer-core + + + + org.jetlinks.community + common-component + ${project.version} + + \ No newline at end of file diff --git a/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceClusterConfiguration.java b/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceClusterConfiguration.java index 45477706..e2ca8352 100644 --- a/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceClusterConfiguration.java +++ b/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceClusterConfiguration.java @@ -8,6 +8,7 @@ import io.vavr.Lazy; import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository; import org.hswebframework.web.crud.annotation.EnableEasyormRepository; import org.jetlinks.community.configure.cluster.ClusterProperties; +import org.jetlinks.community.micrometer.MeterRegistryManager; import org.jetlinks.core.ProtocolSupports; import org.jetlinks.core.cluster.ClusterManager; import org.jetlinks.core.config.ConfigStorageManager; @@ -98,4 +99,11 @@ public class DeviceClusterConfiguration { } + @Bean(initMethod = "init") + public DeviceSessionMonitor deviceSessionMonitor(DeviceSessionManager sessionManager, + MeterRegistryManager registryManager){ + + return new DeviceSessionMonitor(registryManager,sessionManager,"gateway-server-session"); + } + } diff --git a/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceSessionMonitor.java b/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceSessionMonitor.java new file mode 100644 index 00000000..6aa2475d --- /dev/null +++ b/jetlinks-components/configure-component/src/main/java/org/jetlinks/community/configure/device/DeviceSessionMonitor.java @@ -0,0 +1,41 @@ +package org.jetlinks.community.configure.device; + +import io.micrometer.core.instrument.Gauge; +import lombok.AllArgsConstructor; +import lombok.SneakyThrows; +import org.jetlinks.community.micrometer.MeterRegistryManager; +import org.jetlinks.core.device.session.DeviceSessionManager; +import reactor.core.publisher.Mono; + +import java.util.concurrent.Callable; + +@AllArgsConstructor +public class DeviceSessionMonitor { + + private MeterRegistryManager registryManager; + + private DeviceSessionManager sessionManager; + + private String name; + + public void init() { + Gauge.builder(name, this::getTotalSession) + .tag("server", sessionManager.getCurrentServerId()) + .register(registryManager.getMeterRegister("device_metrics")); + } + + @SneakyThrows + @SuppressWarnings("all") + private long getTotalSession() { + Mono session = sessionManager.totalSessions(true); + Long val = null; + if (session instanceof Callable) { + val = ((Callable) session).call(); + } else { + val = session + .toFuture() + .getNow(0L); + } + return val == null ? 0 : val; + } +}