
As the configuration for the exporters and alertmanager is unchanged between the two major versions this patch tries to minimize duplication while at the same time as there's no upgrade path from 1.x to 2.x, it allows running the two services in parallel. See also #56037
90 lines
2.4 KiB
Nix
90 lines
2.4 KiB
Nix
{ config, lib, pkgs }:
|
|
|
|
with lib;
|
|
|
|
baseCfg:
|
|
let
|
|
cfg = baseCfg.varnish;
|
|
in
|
|
{
|
|
port = 9131;
|
|
extraOpts = {
|
|
noExit = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Do not exit server on Varnish scrape errors.
|
|
'';
|
|
};
|
|
withGoMetrics = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Export go runtime and http handler metrics.
|
|
'';
|
|
};
|
|
verbose = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enable verbose logging.
|
|
'';
|
|
};
|
|
raw = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enable raw stdout logging without timestamps.
|
|
'';
|
|
};
|
|
varnishStatPath = mkOption {
|
|
type = types.str;
|
|
default = "varnishstat";
|
|
description = ''
|
|
Path to varnishstat.
|
|
'';
|
|
};
|
|
instance = mkOption {
|
|
type = types.nullOr types.str;
|
|
default = null;
|
|
description = ''
|
|
varnishstat -n value.
|
|
'';
|
|
};
|
|
healthPath = mkOption {
|
|
type = types.nullOr types.str;
|
|
default = null;
|
|
description = ''
|
|
Path under which to expose healthcheck. Disabled unless configured.
|
|
'';
|
|
};
|
|
telemetryPath = mkOption {
|
|
type = types.str;
|
|
default = "/metrics";
|
|
description = ''
|
|
Path under which to expose metrics.
|
|
'';
|
|
};
|
|
};
|
|
serviceOpts = {
|
|
path = [ pkgs.varnish ];
|
|
serviceConfig = {
|
|
DynamicUser = true;
|
|
RestartSec = mkDefault 1;
|
|
ExecStart = ''
|
|
${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \
|
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
|
--web.telemetry-path ${cfg.telemetryPath} \
|
|
--varnishstat-path ${cfg.varnishStatPath} \
|
|
${concatStringsSep " \\\n " (cfg.extraFlags
|
|
++ optional (cfg.healthPath != null) "--web.health-path ${cfg.healthPath}"
|
|
++ optional (cfg.instance != null) "-n ${cfg.instance}"
|
|
++ optional cfg.noExit "--no-exit"
|
|
++ optional cfg.withGoMetrics "--with-go-metrics"
|
|
++ optional cfg.verbose "--verbose"
|
|
++ optional cfg.raw "--raw")}
|
|
'';
|
|
};
|
|
};
|
|
}
|