From 446936f7ff37c827b153807a63592865cd1847d3 Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Wed, 10 Dec 2025 15:31:23 +0100 Subject: [PATCH] Move common stats code to metrics package. --- .codecov.yml | 4 +++ backend_client_stats_prometheus.go | 4 ++- backend_configuration_stats_prometheus.go | 4 ++- client_stats_prometheus.go | 4 ++- grpc_stats_prometheus.go | 6 ++-- http_client_pool_stats_prometheus.go | 4 ++- hub_stats_prometheus.go | 4 ++- mcu_stats_prometheus.go | 18 +++++----- metrics/prometheus.go | 42 +++++++++++++++++++++++ room_stats_prometheus.go | 4 ++- stats_prometheus.go | 20 ++--------- throttle_stats_prometheus.go | 4 ++- 12 files changed, 84 insertions(+), 34 deletions(-) create mode 100644 metrics/prometheus.go diff --git a/.codecov.yml b/.codecov.yml index 3fb00fa..74160db 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -38,6 +38,10 @@ component_management: name: log paths: - log/** + - component_id: module_metrics + name: metrics + paths: + - metrics/** - component_id: module_proxy name: proxy paths: diff --git a/backend_client_stats_prometheus.go b/backend_client_stats_prometheus.go index b406df0..26a6188 100644 --- a/backend_client_stats_prometheus.go +++ b/backend_client_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -54,5 +56,5 @@ var ( ) func RegisterBackendClientStats() { - registerAll(backendClientStats...) + metrics.RegisterAll(backendClientStats...) } diff --git a/backend_configuration_stats_prometheus.go b/backend_configuration_stats_prometheus.go index 13664ad..1fbef3c 100644 --- a/backend_configuration_stats_prometheus.go +++ b/backend_configuration_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -53,7 +55,7 @@ var ( ) func RegisterBackendConfigurationStats() { - registerAll(backendConfigurationStats...) + metrics.RegisterAll(backendConfigurationStats...) } func updateBackendStats(backend *Backend) { diff --git a/client_stats_prometheus.go b/client_stats_prometheus.go index cb53299..f27248f 100644 --- a/client_stats_prometheus.go +++ b/client_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -61,5 +63,5 @@ var ( ) func RegisterClientStats() { - registerAll(clientStats...) + metrics.RegisterAll(clientStats...) } diff --git a/grpc_stats_prometheus.go b/grpc_stats_prometheus.go index 4697fc3..36f8995 100644 --- a/grpc_stats_prometheus.go +++ b/grpc_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -57,9 +59,9 @@ var ( ) func RegisterGrpcClientStats() { - registerAll(grpcClientStats...) + metrics.RegisterAll(grpcClientStats...) } func RegisterGrpcServerStats() { - registerAll(grpcServerStats...) + metrics.RegisterAll(grpcServerStats...) } diff --git a/http_client_pool_stats_prometheus.go b/http_client_pool_stats_prometheus.go index 72d7b2c..13ba363 100644 --- a/http_client_pool_stats_prometheus.go +++ b/http_client_pool_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -39,5 +41,5 @@ var ( ) func RegisterHttpClientPoolStats() { - registerAll(httpClientPoolStats...) + metrics.RegisterAll(httpClientPoolStats...) } diff --git a/hub_stats_prometheus.go b/hub_stats_prometheus.go index 2e847c9..571ac2f 100644 --- a/hub_stats_prometheus.go +++ b/hub_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -67,5 +69,5 @@ var ( ) func RegisterHubStats() { - registerAll(hubStats...) + metrics.RegisterAll(hubStats...) } diff --git a/mcu_stats_prometheus.go b/mcu_stats_prometheus.go index cb5ecf3..4e735db 100644 --- a/mcu_stats_prometheus.go +++ b/mcu_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -224,21 +226,21 @@ var ( ) func RegisterJanusMcuStats() { - registerAll(commonMcuStats...) - registerAll(janusMcuStats...) + metrics.RegisterAll(commonMcuStats...) + metrics.RegisterAll(janusMcuStats...) } func UnregisterJanusMcuStats() { - unregisterAll(commonMcuStats...) - unregisterAll(janusMcuStats...) + metrics.UnregisterAll(commonMcuStats...) + metrics.UnregisterAll(janusMcuStats...) } func RegisterProxyMcuStats() { - registerAll(commonMcuStats...) - registerAll(proxyMcuStats...) + metrics.RegisterAll(commonMcuStats...) + metrics.RegisterAll(proxyMcuStats...) } func UnregisterProxyMcuStats() { - unregisterAll(commonMcuStats...) - unregisterAll(proxyMcuStats...) + metrics.UnregisterAll(commonMcuStats...) + metrics.UnregisterAll(proxyMcuStats...) } diff --git a/metrics/prometheus.go b/metrics/prometheus.go new file mode 100644 index 0000000..93ad0ba --- /dev/null +++ b/metrics/prometheus.go @@ -0,0 +1,42 @@ +/** + * Standalone signaling server for the Nextcloud Spreed app. + * Copyright (C) 2025 struktur AG + * + * @author Joachim Bauch + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package metrics + +import ( + "github.com/prometheus/client_golang/prometheus" +) + +func RegisterAll(cs ...prometheus.Collector) { + for _, c := range cs { + if err := prometheus.DefaultRegisterer.Register(c); err != nil { + if _, ok := err.(prometheus.AlreadyRegisteredError); !ok { + panic(err) + } + } + } +} + +func UnregisterAll(cs ...prometheus.Collector) { + for _, c := range cs { + prometheus.Unregister(c) + } +} diff --git a/room_stats_prometheus.go b/room_stats_prometheus.go index eec8a96..0e312d5 100644 --- a/room_stats_prometheus.go +++ b/room_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -39,5 +41,5 @@ var ( ) func RegisterRoomStats() { - registerAll(roomStats...) + metrics.RegisterAll(roomStats...) } diff --git a/stats_prometheus.go b/stats_prometheus.go index 93af6af..7a8885a 100644 --- a/stats_prometheus.go +++ b/stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -38,22 +40,6 @@ var ( } ) -func registerAll(cs ...prometheus.Collector) { - for _, c := range cs { - if err := prometheus.DefaultRegisterer.Register(c); err != nil { - if _, ok := err.(prometheus.AlreadyRegisteredError); !ok { - panic(err) - } - } - } -} - -func unregisterAll(cs ...prometheus.Collector) { - for _, c := range cs { - prometheus.Unregister(c) - } -} - func RegisterStats() { - registerAll(signalingStats...) + metrics.RegisterAll(signalingStats...) } diff --git a/throttle_stats_prometheus.go b/throttle_stats_prometheus.go index 8279fe0..681eee4 100644 --- a/throttle_stats_prometheus.go +++ b/throttle_stats_prometheus.go @@ -23,6 +23,8 @@ package signaling import ( "github.com/prometheus/client_golang/prometheus" + + "github.com/strukturag/nextcloud-spreed-signaling/metrics" ) var ( @@ -47,5 +49,5 @@ var ( ) func RegisterThrottleStats() { - registerAll(throttleStats...) + metrics.RegisterAll(throttleStats...) }