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:
snaar
2022-09-02 09:38:11 -04:00
parent ca1690c2ed
commit 866d977212
5 changed files with 81 additions and 0 deletions

View File

@@ -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)
);

View File

@@ -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";
};
}