From da8833932e0ebf54016e29971bc1cd3958b5b8d6 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Fri, 15 Mar 2024 21:36:43 +0700 Subject: [PATCH] Added new metrics 'roompicker_rooms' --- .../dragonestia/picker/aspect/UserMetricsAspect.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java b/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java index 7ba64e3..a268434 100644 --- a/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java +++ b/server/src/main/java/ru/dragonestia/picker/aspect/UserMetricsAspect.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import ru.dragonestia.picker.event.UpdateRoomLockStateEvent; import ru.dragonestia.picker.model.Node; import ru.dragonestia.picker.model.Room; +import ru.dragonestia.picker.repository.RoomRepository; import ru.dragonestia.picker.repository.UserRepository; import java.util.HashSet; @@ -29,6 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger; @Log4j2 public class UserMetricsAspect { + private final RoomRepository roomRepository; private final UserRepository userRepository; private final MeterRegistry meterRegistry; @@ -95,7 +97,11 @@ public class UserMetricsAspect { .tag("nodeId", nodeId) .register(meterRegistry); - data.put(nodeId, new NodeData(gauge, new AtomicInteger(0), counter, new HashSet<>(), lockedGauge)); + var roomsGauge = Gauge.builder("roompicker_rooms", () -> roomRepository.all(node).size()) + .tag("nodeId", nodeId) + .register(meterRegistry); + + data.put(nodeId, new NodeData(gauge, new AtomicInteger(0), counter, new HashSet<>(), lockedGauge, roomsGauge)); } @After(value = "execution(* ru.dragonestia.picker.repository.NodeRepository.delete(ru.dragonestia.picker.model.Node)) && args(node)", argNames = "node") @@ -105,6 +111,7 @@ public class UserMetricsAspect { meterRegistry.remove(data.usersGauge()); meterRegistry.remove(data.picksPerMinute()); meterRegistry.remove(data.lockedGauge()); + meterRegistry.remove(data.roomsGauge()); } @AfterReturning(value = "execution(* ru.dragonestia.picker.repository.RoomRepository.pickFree(ru.dragonestia.picker.model.Node, *)) && args(node, ..)", argNames = "node") @@ -122,5 +129,5 @@ public class UserMetricsAspect { userRepository.countUsersForNodes().forEach((nodeId, users) -> data.get(nodeId).users().set(users)); } - private record NodeData(Gauge usersGauge, AtomicInteger users, Counter picksPerMinute, Set locked, Gauge lockedGauge) {} + private record NodeData(Gauge usersGauge, AtomicInteger users, Counter picksPerMinute, Set locked, Gauge lockedGauge, Gauge roomsGauge) {} }