Nix: prometheus support
2 files changed, 48 insertions, 0 deletions
diff --git a/nix/modules/default/default.nix b/nix/modules/default/default.nix
index 876ad941..6c6437a8 100644
--- a/nix/modules/default/default.nix
+++ b/nix/modules/default/default.nix
@@ -18,6 +18,7 @@ in
{
imports = [
./integration-nginx.nix
+ ./integration-prometheus.nix
./users.nix
(import ./gw-sharding.nix self)
(import ./pion-sfu.nix self)
diff --git a/nix/modules/default/integration-prometheus.nix b/nix/modules/default/integration-prometheus.nix
new file mode 100644
index 00000000..3917bb38
--- /dev/null
+++ b/nix/modules/default/integration-prometheus.nix
@@ -0,0 +1,47 @@
+{
+ config,
+ lib,
+ ...
+}:
+
+let
+ cfg = config.services.spacebarchat-server;
+in
+{
+ options.services.spacebarchat-server.prometheus = {
+ enable = lib.mkEnableOption "prometheus integration";
+ };
+
+ config = lib.mkIf (cfg.enable && cfg.prometheus.enable) {
+ services.prometheus.scrapeConfigs = [
+ {
+ job_name = "spacebar-api-${builtins.toString cfg.apiEndpoint.localPort}";
+ scrape_interval = "1s";
+ static_configs = [
+ { targets = [ "localhost:${builtins.toString cfg.apiEndpoint.localPort}" ]; }
+ ];
+ }
+ {
+ job_name = "spacebar-gateway-${builtins.toString cfg.gatewayEndpoint.localPort}";
+ scrape_interval = "1s";
+ static_configs = [
+ { targets = [ "localhost:${builtins.toString cfg.gatewayEndpoint.localPort}" ]; }
+ ];
+ }
+ {
+ job_name = "spacebar-cdn-${builtins.toString cfg.cdnEndpoint.localPort}";
+ scrape_interval = "1s";
+ static_configs = [
+ { targets = [ "localhost:${builtins.toString cfg.cdnEndpoint.localPort}" ]; }
+ ];
+ }
+ ]
+ ++ (lib.map (port: {
+ job_name = "spacebar-gateway-${builtins.toString port}";
+ scrape_interval = "1s";
+ static_configs = [
+ { targets = [ "localhost:${builtins.toString port}" ]; }
+ ];
+ }) cfg.extraGatewayPorts);
+ };
+}
|