feat(monitoring): asterisk

This commit is contained in:
arcnmx 2024-06-13 14:29:35 -07:00
parent 340364e5c2
commit dc9ee1d789
5 changed files with 38 additions and 6 deletions

View file

@ -24,25 +24,30 @@
port = service.ports.${portName};
in "${mkAddress6 (access.getAddressFor system.config.name "lan")}:${toString port.port}";
mkServiceConfig = system: serviceName: let
inherit (service.prometheus) exporter;
service = system.config.exports.services.${serviceName};
targets = map (portName:
mkPortTarget {
inherit system service portName;
})
service.prometheus.exporter.ports;
exporter.ports;
in {
job_name = "${system.config.name}-${service.id}";
static_configs = [
{
inherit targets;
labels = mkMerge [
(mapOptionDefaults service.prometheus.exporter.labels)
(mkIf (service.prometheus.exporter.metricsPath != "/metrics") {
__metrics_path__ = mkOptionDefault service.prometheus.exporter.metricsPath;
(mapOptionDefaults exporter.labels)
(mkIf (exporter.metricsPath != "/metrics") {
__metrics_path__ = mkOptionDefault exporter.metricsPath;
})
];
}
];
scheme = mkIf exporter.ssl.enable (mkDefault "https");
tls_config = mkIf (exporter.ssl.enable && exporter.ssl.insecure) {
insecure_skip_verify = mkDefault true;
};
};
mapSystem = system: map (mkServiceConfig system) system.config.exports.prometheus.exporter.services;
in {

View file

@ -45,10 +45,19 @@ in {
asterisk = {
port = mkAlmostOptionDefault 8088;
protocol = "http";
prometheus.exporter.enable = let
sslPort = config.ports.asterisk-ssl;
in mkAlmostOptionDefault (!sslPort.enable || !sslPort.prometheus.exporter.enable);
};
asterisk-ssl = {
port = mkAlmostOptionDefault 8089;
protocol = "https";
prometheus.exporter.enable = mkAlmostOptionDefault true;
};
operator = {
enable = mkAlmostOptionDefault false;
port = mkAlmostOptionDefault 58080;
protocol = "http";
};
};
};

View file

@ -134,9 +134,10 @@ let
...
}: let
inherit (gensokyo-zone.lib) mapOptionDefaults;
inherit (lib.options) mkOption;
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.modules) mkOptionDefault;
inherit (lib.attrsets) attrNames filterAttrs;
inherit (lib.attrsets) attrNames attrValues filterAttrs;
inherit (lib.lists) any;
exporterPorts = filterAttrs (_: port: port.enable && port.prometheus.exporter.enable) config.ports;
statusPorts = filterAttrs (_: port: port.enable && port.status.enable) config.ports;
in {
@ -153,6 +154,14 @@ let
type = str;
default = "/metrics";
};
ssl = {
enable = mkEnableOption "HTTPS" // {
default = any (port: port.ssl) (attrValues exporterPorts);
};
insecure = mkEnableOption "self-signed SSL" // {
default = true;
};
};
};
};
status = {