zion/modules/monitoring.nix

91 lines
1.9 KiB
Nix
Raw Normal View History

2024-12-11 22:14:07 +01:00
{
config,
lib,
pkgs,
...
}:
2020-09-06 00:39:40 +02:00
2022-06-06 23:13:38 +02:00
with pkgs;
2020-09-06 00:39:40 +02:00
{
# Notify when a disk starts going haywire
services.smartd = {
enable = true;
notifications.mail = {
enable = true;
2022-06-06 23:13:38 +02:00
sender = "akasroua+smartd@disroot.org";
recipient = "akasroua@disroot.org";
mailer = "${msmtp}/bin/msmtp -t --read-envelope-from";
};
};
# Notify about zpool problems
services.zfs.zed = {
enableMail = false;
settings = {
ZED_EMAIL_ADDR = "akasroua+smartd@disroot.org";
ZED_EMAIL_PROG = "mail";
ZED_EMAIL_OPTS = "-s '@SUBJECT@' @ADDRESS@";
ZED_NOTIFY_VERBOSE = false;
2020-09-06 00:39:40 +02:00
};
};
2022-06-06 23:13:38 +02:00
# Set up msmtp as notifier
programs.msmtp = {
2020-09-06 00:39:40 +02:00
enable = true;
2022-06-06 23:13:38 +02:00
defaults = {
port = 587;
tls = true;
};
accounts = {
default = {
auth = true;
host = "disroot.org";
user = "akasroua@disroot.org";
passwordeval = "${coreutils}/bin/cat ${config.age.secrets.msmtp.path}";
};
};
2020-09-06 00:39:40 +02:00
};
2022-06-06 23:13:38 +02:00
# Metrics collection
services.prometheus = {
enable = true;
port = 9001;
retentionTime = "1y";
exporters = {
node = {
enable = true;
enabledCollectors = [ "systemd" ];
port = 9002;
};
postgres.enable = true;
smartctl.enable = true;
};
2024-12-11 22:14:07 +01:00
scrapeConfigs = [
{
job_name = "zion";
static_configs = [
{
targets = [
"localhost:${toString config.services.prometheus.exporters.node.port}"
"localhost:${toString config.services.prometheus.exporters.postgres.port}"
"localhost:${toString config.services.prometheus.exporters.smartctl.port}"
];
}
];
2024-12-11 22:14:07 +01:00
}
];
};
# Grafana configuration
services.grafana = {
enable = true;
settings.server = {
domain = "grafana.coolneng.duckdns.org";
http_port = 9009;
http_addr = "127.0.0.1";
};
};
2020-09-06 00:39:40 +02:00
}