prometheus-mailman3-exporter: init at 0.9.1 (#398164)
This commit is contained in:
@@ -86,6 +86,7 @@ let
|
||||
"libvirt"
|
||||
"lnd"
|
||||
"mail"
|
||||
"mailman3"
|
||||
"mikrotik"
|
||||
"modemmanager"
|
||||
"mongodb"
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.prometheus.exporters.mailman3;
|
||||
in
|
||||
{
|
||||
port = 9934;
|
||||
extraOpts = {
|
||||
logLevel = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"debug"
|
||||
"info"
|
||||
"warning"
|
||||
"error"
|
||||
"critical"
|
||||
];
|
||||
default = "info";
|
||||
description = ''
|
||||
Detail level to log.
|
||||
'';
|
||||
};
|
||||
|
||||
mailman = {
|
||||
addr = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "http://127.0.0.1:8001";
|
||||
description = ''
|
||||
Mailman3 Core REST API address.
|
||||
'';
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "restadmin";
|
||||
description = ''
|
||||
Mailman3 Core REST API username.
|
||||
'';
|
||||
};
|
||||
|
||||
passFile = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = config.services.mailman.restApiPassFile;
|
||||
defaultText = lib.literalExpression "config.services.mailman.restApiPassFile";
|
||||
description = ''
|
||||
Mailman3 Core REST API password.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
serviceOpts = {
|
||||
serviceConfig = {
|
||||
LoadCredential = [
|
||||
"password:${cfg.mailman.passFile}"
|
||||
];
|
||||
ExecStart =
|
||||
let
|
||||
addr = "${
|
||||
if (lib.hasInfix ":" cfg.listenAddress) then "[${cfg.listenAddress}]" else cfg.listenAddress
|
||||
}:${toString cfg.port}";
|
||||
in
|
||||
''
|
||||
${lib.getExe pkgs.prometheus-mailman3-exporter} \
|
||||
--log-level ${cfg.logLevel} \
|
||||
--web.listen ${addr} \
|
||||
--mailman.address ${cfg.mailman.addr} \
|
||||
--mailman.user ${cfg.mailman.user} \
|
||||
--mailman.password-file %d/password \
|
||||
${lib.concatStringsSep " \\\n " cfg.extraFlags}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
lib,
|
||||
python3,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
fetchpatch2,
|
||||
}:
|
||||
|
||||
let
|
||||
python = python3.withPackages (
|
||||
pp: with pp; [
|
||||
certifi
|
||||
charset-normalizer
|
||||
idna
|
||||
prometheus-client
|
||||
requests
|
||||
six
|
||||
urllib3
|
||||
]
|
||||
);
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mailman3-exporter";
|
||||
version = "0.9.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rivimey";
|
||||
repo = "mailman3_exporter";
|
||||
tag = version;
|
||||
hash = "sha256-IupfZ3/MXBYpIyH8kJRc+WYabzSZyIu1WDITKTB5+Zc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/rivimey/mailman3_exporter/pull/3
|
||||
(fetchpatch2 {
|
||||
url = "https://github.com/MarcelCoding/mailman3_exporter/commit/65070106451c6aafe8956387111343e490e34df8.patch?full_index=1";
|
||||
hash = "sha256-2XM0ktLC4+7/PEgeToVR84Gfjx1UKxl/+jo6JGnVZMw=";
|
||||
})
|
||||
# https://github.com/rivimey/mailman3_exporter/pull/4
|
||||
(fetchpatch2 {
|
||||
url = "https://github.com/MarcelCoding/mailman3_exporter/commit/a7850a1e9ce65f91683eef67eb1c6537c2c2eb77.patch?full_index=1";
|
||||
hash = "sha256-bBIin/7Y1bWrvxCuw1kJG8gaoKjkKdQnxfqpRipvyFs=";
|
||||
})
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
python
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
install -D mailman_exporter.py $out/bin/mailman3_exporter
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Mailman3 Exporter for Prometheus";
|
||||
homepage = "https://github.com/rivimey/mailman3_exporter";
|
||||
# no license in repo
|
||||
license = lib.licenses.unfree;
|
||||
maintainers = with lib.maintainers; [ marcel ];
|
||||
mainProgram = "mailman3_exporter";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user