From 942bd5cc2f728c17775f853bc63944efd4b3cfb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20P=C3=A4ssler?= Date: Fri, 12 Mar 2021 11:10:43 +0100 Subject: [PATCH 1/4] prometheus-jitsi-exporter: init at 0.2.18 --- .../monitoring/prometheus/jitsi-exporter.nix | 22 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 23 insertions(+) create mode 100644 pkgs/servers/monitoring/prometheus/jitsi-exporter.nix diff --git a/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix b/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix new file mode 100644 index 00000000000..819f70382a6 --- /dev/null +++ b/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix @@ -0,0 +1,22 @@ +{ lib, buildGoModule, fetchgit, ... }: + +buildGoModule rec { + pname = "jitsiexporter"; + version = "0.2.18"; + + src = fetchgit { + url = "https://git.xsfx.dev/prometheus/jitsiexporter"; + rev = "v${version}"; + sha256 = "1cf46wp96d9dwlwlffcgbcr0v3xxxfdv6il0zqkm2i7cfsfw0skf"; + }; + + vendorSha256 = null; + + meta = with lib; { + description = "Export Jitsi Videobridge metrics to Prometheus"; + homepage = "https://git.xsfx.dev/prometheus/jitsiexporter"; + license = licenses.mit; + maintainers = with maintainers; [ petabyteboy ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ae22edcd688..3843f6ec677 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18419,6 +18419,7 @@ in prometheus-fritzbox-exporter = callPackage ../servers/monitoring/prometheus/fritzbox-exporter.nix { }; prometheus-gitlab-ci-pipelines-exporter = callPackage ../servers/monitoring/prometheus/gitlab-ci-pipelines-exporter.nix { }; prometheus-haproxy-exporter = callPackage ../servers/monitoring/prometheus/haproxy-exporter.nix { }; + prometheus-jitsi-exporter = callPackage ../servers/monitoring/prometheus/jitsi-exporter.nix { }; prometheus-json-exporter = callPackage ../servers/monitoring/prometheus/json-exporter.nix { }; prometheus-keylight-exporter = callPackage ../servers/monitoring/prometheus/keylight-exporter.nix { }; prometheus-lnd-exporter = callPackage ../servers/monitoring/prometheus/lnd-exporter.nix { }; From b2bebd7cd5446c197ce6b3e8a38ef3686ae5ace0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20P=C3=A4ssler?= Date: Fri, 12 Mar 2021 11:11:16 +0100 Subject: [PATCH 2/4] nixos/prometheus-jitsi-exporter: init --- .../monitoring/prometheus/exporters.nix | 1 + .../monitoring/prometheus/exporters/jitsi.nix | 40 +++++++++++++++++++ nixos/tests/prometheus-exporters.nix | 23 +++++++++++ 3 files changed, 64 insertions(+) create mode 100644 nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 940f2818937..fc5cee70fd9 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -30,6 +30,7 @@ let "dovecot" "fritzbox" "json" + "jitsi" "keylight" "lnd" "mail" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix b/nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix new file mode 100644 index 00000000000..c93a8f98e55 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/jitsi.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, options }: + +with lib; + +let + cfg = config.services.prometheus.exporters.jitsi; +in +{ + port = 9700; + extraOpts = { + url = mkOption { + type = types.str; + default = "http://localhost:8080/colibri/stats"; + description = '' + Jitsi Videobridge metrics URL to monitor. + This is usually /colibri/stats on port 8080 of the jitsi videobridge host. + ''; + }; + interval = mkOption { + type = types.str; + default = "30s"; + example = "1min"; + description = '' + How often to scrape new data + ''; + }; + }; + serviceOpts = { + serviceConfig = { + ExecStart = '' + ${pkgs.prometheus-jitsi-exporter}/bin/jitsiexporter \ + -url ${escapeShellArg cfg.url} \ + -host ${cfg.listenAddress} \ + -port ${toString cfg.port} \ + -interval ${toString cfg.interval} \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + }; + }; +} diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index 89d17c9de8c..9625aa4d274 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -218,6 +218,29 @@ let ''; }; + jitsi = { + exporterConfig = { + enable = true; + }; + metricProvider = { + systemd.services.prometheus-jitsi-exporter.after = [ "jitsi-videobridge2.service" ]; + services.jitsi-videobridge = { + enable = true; + apis = [ "colibri" "rest" ]; + }; + }; + exporterTest = '' + wait_for_unit("jitsi-videobridge2.service") + wait_for_open_port(8080) + wait_for_unit("prometheus-jitsi-exporter.service") + wait_for_open_port(9700) + wait_until_succeeds( + 'journalctl -eu prometheus-jitsi-exporter.service -o cat | grep -q "key=participants"' + ) + succeed("curl -sSf 'localhost:9700/metrics' | grep -q 'jitsi_participants 0'") + ''; + }; + json = { exporterConfig = { enable = true; From d939a8f20dea9f05a49a8dd1342d16617b981fa3 Mon Sep 17 00:00:00 2001 From: Milan Date: Sat, 13 Mar 2021 08:37:33 +0100 Subject: [PATCH 3/4] prometheus-jitsi-exporter: remove redundant platform attribute Co-authored-by: Sandro --- pkgs/servers/monitoring/prometheus/jitsi-exporter.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix b/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix index 819f70382a6..60cdf32a598 100644 --- a/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix @@ -17,6 +17,5 @@ buildGoModule rec { homepage = "https://git.xsfx.dev/prometheus/jitsiexporter"; license = licenses.mit; maintainers = with maintainers; [ petabyteboy ]; - platforms = platforms.unix; }; } From 52fa5e9612f61781ee0bf2efdf784f93c0fbb2e3 Mon Sep 17 00:00:00 2001 From: WilliButz Date: Sat, 13 Mar 2021 13:02:37 +0100 Subject: [PATCH 4/4] prometheus-jitsi-exporter: reference vm test --- pkgs/servers/monitoring/prometheus/jitsi-exporter.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix b/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix index 60cdf32a598..b68b1681919 100644 --- a/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/jitsi-exporter.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, fetchgit, ... }: +{ lib, buildGoModule, fetchgit, nixosTests }: buildGoModule rec { pname = "jitsiexporter"; @@ -12,6 +12,8 @@ buildGoModule rec { vendorSha256 = null; + passthru.tests = { inherit (nixosTests.prometheus-exporters) jitsi; }; + meta = with lib; { description = "Export Jitsi Videobridge metrics to Prometheus"; homepage = "https://git.xsfx.dev/prometheus/jitsiexporter";