forked from DGNum/stateless-uptime-kuma
feat: scrape probes
This commit is contained in:
parent
a6904ba370
commit
96f71648f5
2 changed files with 71 additions and 0 deletions
69
lib/default.nix
Normal file
69
lib/default.nix
Normal file
|
@ -0,0 +1,69 @@
|
|||
{ lib }:
|
||||
rec {
|
||||
mkFqdn = _: cfg: cfg.networking.fqdn;
|
||||
|
||||
fromHive =
|
||||
{
|
||||
builder,
|
||||
nodes,
|
||||
excludes ? [ ],
|
||||
}:
|
||||
lib.mkMerge (
|
||||
builtins.map (node: builder node nodes.${node}) (
|
||||
lib.subtractLists excludes (builtins.attrNames nodes)
|
||||
)
|
||||
);
|
||||
|
||||
pingProbesFromHive =
|
||||
{
|
||||
mkHost,
|
||||
nodes,
|
||||
prefix ? "Ping ",
|
||||
excludes ? [ ],
|
||||
tags ? [ ],
|
||||
}:
|
||||
fromHive {
|
||||
builder = (
|
||||
node: module: {
|
||||
monitors = {
|
||||
${prefix + node} = {
|
||||
type = "ping";
|
||||
inherit tags;
|
||||
hostname = mkHost node module.config;
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
inherit nodes excludes;
|
||||
};
|
||||
|
||||
httpProbesFromConfig =
|
||||
{
|
||||
config,
|
||||
excludes ? [ ],
|
||||
prefix ? "",
|
||||
type ? "keyword",
|
||||
tags ? [ ],
|
||||
}:
|
||||
let
|
||||
filter = k: v: !builtins.elem k excludes && v.globalRedirect == null;
|
||||
in
|
||||
{
|
||||
monitors = lib.mapAttrs' (
|
||||
vhostName: vhost:
|
||||
let
|
||||
hasSSL = vhost.onlySSL || vhost.enableSSL || vhost.addSSL || vhost.forceSSL;
|
||||
serverName = if vhost.serverName != null then vhost.serverName else vhostName;
|
||||
in
|
||||
{
|
||||
name = prefix + serverName;
|
||||
value = {
|
||||
inherit type;
|
||||
inherit tags;
|
||||
url = "http${lib.optionalString hasSSL "s"}://${serverName}";
|
||||
method = "get";
|
||||
};
|
||||
}
|
||||
) (lib.filterAttrs filter config.services.nginx.virtualHosts);
|
||||
};
|
||||
}
|
|
@ -22,6 +22,7 @@ in
|
|||
Extra arguments to use for executing `stateless-uptime-kuma`.
|
||||
'';
|
||||
};
|
||||
lib = lib.mkOption { type = lib.types.raw; };
|
||||
probesConfig = {
|
||||
monitors = lib.mkOption {
|
||||
inherit (probesFormat) type;
|
||||
|
@ -38,6 +39,7 @@ in
|
|||
};
|
||||
};
|
||||
config.statelessUptimeKuma = {
|
||||
lib = import ../lib { inherit lib; };
|
||||
build = {
|
||||
json = probesFormat.generate "probes.json" cfg.probesConfig;
|
||||
script = pkgs.writeShellApplication {
|
||||
|
|
Loading…
Reference in a new issue