nixos/services.prometheus.exporters.ipmi: new module
Bringing in new https://github.com/prometheus-community/ipmi_exporter exporter into existing Prometheus exporters framework.
This commit is contained in:
@@ -36,6 +36,7 @@ let
|
||||
"fastly"
|
||||
"fritzbox"
|
||||
"influxdb"
|
||||
"ipmi"
|
||||
"json"
|
||||
"jitsi"
|
||||
"kea"
|
||||
@@ -242,6 +243,22 @@ in
|
||||
|
||||
config = mkMerge ([{
|
||||
assertions = [ {
|
||||
assertion = cfg.ipmi.enable -> (cfg.ipmi.configFile != null) -> (
|
||||
!(lib.hasPrefix "/tmp/" cfg.ipmi.configFile)
|
||||
);
|
||||
message = ''
|
||||
Config file specified in `services.prometheus.exporters.ipmi.configFile' must
|
||||
not reside within /tmp - it won't be visible to the systemd service.
|
||||
'';
|
||||
} {
|
||||
assertion = cfg.ipmi.enable -> (cfg.ipmi.webConfigFile != null) -> (
|
||||
!(lib.hasPrefix "/tmp/" cfg.ipmi.webConfigFile)
|
||||
);
|
||||
message = ''
|
||||
Config file specified in `services.prometheus.exporters.ipmi.webConfigFile' must
|
||||
not reside within /tmp - it won't be visible to the systemd service.
|
||||
'';
|
||||
} {
|
||||
assertion = cfg.snmp.enable -> (
|
||||
(cfg.snmp.configurationPath == null) != (cfg.snmp.configuration == null)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
{ config, lib, pkgs, options }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
logPrefix = "services.prometheus.exporter.ipmi";
|
||||
cfg = config.services.prometheus.exporters.ipmi;
|
||||
in {
|
||||
port = 9290;
|
||||
|
||||
extraOpts = {
|
||||
configFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = lib.mdDoc ''
|
||||
Path to configuration file.
|
||||
'';
|
||||
};
|
||||
|
||||
webConfigFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = lib.mdDoc ''
|
||||
Path to configuration file that can enable TLS or authentication.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
serviceOpts.serviceConfig = {
|
||||
ExecStart = with cfg; concatStringsSep " " ([
|
||||
"${pkgs.prometheus-ipmi-exporter}/bin/ipmi_exporter"
|
||||
"--web.listen-address ${listenAddress}:${toString port}"
|
||||
] ++ optionals (cfg.webConfigFile != null) [
|
||||
"--web.config.file ${escapeShellArg cfg.webConfigFile}"
|
||||
] ++ optionals (cfg.configFile != null) [
|
||||
"--config.file ${escapeShellArg cfg.configFile}"
|
||||
] ++ extraFlags);
|
||||
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user