72 lines
1.8 KiB
Nix
72 lines
1.8 KiB
Nix
{ ... }:
|
|
{
|
|
_class = "clan.service";
|
|
manifest.name = "clan-core/monitoring";
|
|
manifest.description = "Monitoring service for the nodes in your clan";
|
|
manifest.readme = builtins.readFile ./README.md;
|
|
|
|
roles.telegraf = {
|
|
description = "Placeholder role to apply the telegraf monitoring agent";
|
|
interface =
|
|
{ lib, ... }:
|
|
{
|
|
options.allowAllInterfaces = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.bool;
|
|
default = null;
|
|
description = "Deprecated. Has no effect.";
|
|
};
|
|
|
|
options.interfaces = lib.mkOption {
|
|
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
|
default = null;
|
|
description = "Deprecated. Has no effect.";
|
|
};
|
|
};
|
|
};
|
|
|
|
roles.prometheus = {
|
|
description = "Prometheus monitoring daemon. Will collect metrics from all hosts with the telegraf role";
|
|
interface =
|
|
{ lib, ... }:
|
|
{
|
|
options.webExternalUrl = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.str;
|
|
default = null;
|
|
example = "https://prometheus.tld";
|
|
description = "The URL under which Prometheus is externally reachable";
|
|
};
|
|
};
|
|
};
|
|
|
|
imports = [
|
|
./telegraf.nix
|
|
./prometheus.nix
|
|
];
|
|
|
|
perMachine.nixosModule =
|
|
{ pkgs, ... }:
|
|
{
|
|
clan.core.vars.generators."prometheus" = {
|
|
|
|
share = true;
|
|
|
|
files.password.restartUnits = [
|
|
"telegraf.service"
|
|
"prometheus.service"
|
|
];
|
|
|
|
files.password-env.restartUnits = [ "telegraf.service" ];
|
|
|
|
runtimeInputs = [
|
|
pkgs.coreutils
|
|
pkgs.xkcdpass
|
|
];
|
|
|
|
script = ''
|
|
xkcdpass --numwords 6 --delimiter - --count 1 | tr -d "\n" > $out/password
|
|
printf 'BASIC_AUTH_PWD=%s\n' "$(cat $out/password)" > $out/password-env
|
|
'';
|
|
};
|
|
};
|
|
}
|