diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix
index cc71451bf20..4d15fb12ff7 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters.nix
@@ -229,6 +229,8 @@ in
})] ++ [(mkIf config.services.nginx.enable {
systemd.services.prometheus-nginx-exporter.after = [ "nginx.service" ];
systemd.services.prometheus-nginx-exporter.requires = [ "nginx.service" ];
+ })] ++ [(mkIf config.services.postfix.enable {
+ services.prometheus.exporters.postfix.group = mkDefault config.services.postfix.setgidGroup;
})] ++ (mapAttrsToList (name: conf:
mkExporterConf {
inherit name;
diff --git a/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix b/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix
index 3b6ef1631f8..f57589a59c7 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix
@@ -8,6 +8,15 @@ in
{
port = 9154;
extraOpts = {
+ group = mkOption {
+ type = types.str;
+ description = ''
+ Group under which the postfix exporter shall be run.
+ It should match the group that is allowed to access the
+ showq socket in the queue/public/ directory.
+ Defaults to services.postfix.setgidGroup when postfix is enabled.
+ '';
+ };
telemetryPath = mkOption {
type = types.str;
default = "/metrics";
@@ -26,16 +35,20 @@ in
};
showqPath = mkOption {
type = types.path;
- default = "/var/spool/postfix/public/showq";
- example = "/var/lib/postfix/queue/public/showq";
+ default = "/var/lib/postfix/queue/public/showq";
+ example = "/var/spool/postfix/public/showq";
description = ''
- Path where Postfix places it's showq socket.
+ Path where Postfix places its showq socket.
'';
};
systemd = {
- enable = mkEnableOption ''
- reading metrics from the systemd-journal instead of from a logfile
- '';
+ enable = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether to enable reading metrics from the systemd journal instead of from a logfile
+ '';
+ };
unit = mkOption {
type = types.str;
default = "postfix.service";
diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix
index fdcc4072132..5b9fff5a4f2 100644
--- a/nixos/tests/prometheus-exporters.nix
+++ b/nixos/tests/prometheus-exporters.nix
@@ -466,10 +466,12 @@ let
};
exporterTest = ''
wait_for_unit("prometheus-postfix-exporter.service")
+ wait_for_file("/var/lib/postfix/queue/public/showq")
wait_for_open_port(9154)
succeed(
"curl -sSf http://localhost:9154/metrics | grep -q 'postfix_smtpd_connects_total 0'"
)
+ succeed("curl -sSf http://localhost:9154/metrics | grep -q 'postfix_up{.*} 1'")
'';
};