Newer
Older
percord / nix / modules / default / integration-prometheus.nix
@Rory& Rory& on 28 May 1 KB Nix: prometheus support
{
  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);
  };
}