101 lines
2.9 KiB
Nix
101 lines
2.9 KiB
Nix
|
{ config, pkgs, ... }: {
|
||
|
imports = [
|
||
|
./hardware.nix
|
||
|
./networking.nix # generated at runtime by nixos-infect
|
||
|
];
|
||
|
|
||
|
boot.tmp.cleanOnBoot = true;
|
||
|
zramSwap.enable = true;
|
||
|
networking.hostName = "monitoring";
|
||
|
networking.domain = "";
|
||
|
services.openssh.enable = true;
|
||
|
users.users.root.openssh.authorizedKeys.keys = [
|
||
|
''ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDjEgtIWPA5Ncs/KOcMeT6Q/HACJJetDOLjMvXXwUE+08oTX1EpHrWPpy8J+UHKIyErCNPYq8dgtrbhnMRlxHqI=''
|
||
|
];
|
||
|
networking.firewall.enable = false;
|
||
|
|
||
|
services.grafana = {
|
||
|
enable = true;
|
||
|
settings.server = {
|
||
|
domain = "grafana.gmem.ca";
|
||
|
http_port = 2342;
|
||
|
http_addr = "127.0.0.1";
|
||
|
};
|
||
|
};
|
||
|
services.prometheus = {
|
||
|
enable = true;
|
||
|
globalConfig = {
|
||
|
scrape_interval = "15s";
|
||
|
};
|
||
|
port = 9001;
|
||
|
extraFlags = [ "--web.enable-remote-write-receiver" ];
|
||
|
scrapeConfigs = [
|
||
|
{
|
||
|
job_name = "desktop";
|
||
|
static_configs = [ { targets = [ "london:9100" ]; } ];
|
||
|
}
|
||
|
{
|
||
|
job_name = "nas";
|
||
|
static_configs = [ { targets = [ "vancouver:9100" ]; } ];
|
||
|
}
|
||
|
{
|
||
|
job_name = "monitoring";
|
||
|
static_configs = [ { targets = [ "localhost:9100" ]; } ];
|
||
|
}
|
||
|
{
|
||
|
job_name = "speedtest-exporter";
|
||
|
scrape_interval = "1h";
|
||
|
scrape_timeout = "1m";
|
||
|
static_configs = [ { targets = [ "vancouver:9798" ]; } ];
|
||
|
}
|
||
|
{
|
||
|
job_name = "forgejo";
|
||
|
static_configs = [ { targets = [ "git.gmem.ca" ]; } ];
|
||
|
}
|
||
|
{
|
||
|
job_name = "blackbox";
|
||
|
metrics_path = "/probe";
|
||
|
params = { "modules" = [ "http_2xx" ]; };
|
||
|
static_configs = [ { targets = [ "google.com" "gabrielsimmer.com" "artbybecki.com" ]; } ];
|
||
|
relabel_configs = [
|
||
|
{ source_labels = ["__address__"]; target_label = "__param_target"; }
|
||
|
{ source_labels = ["__param_target"]; target_label = "instance"; }
|
||
|
{ source_labels = []; target_label = "__address__"; replacement = "vancouver:9115"; } ];
|
||
|
}
|
||
|
];
|
||
|
exporters.node = {
|
||
|
enable = true;
|
||
|
listenAddress = "127.0.0.1";
|
||
|
enabledCollectors = [
|
||
|
"systemd" "processes"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
services.tailscale.enable = true;
|
||
|
|
||
|
# nginx reverse proxy
|
||
|
services.nginx = {
|
||
|
enable = true;
|
||
|
recommendedGzipSettings = true;
|
||
|
recommendedBrotliSettings = true;
|
||
|
recommendedZstdSettings = true;
|
||
|
recommendedOptimisation = true;
|
||
|
recommendedTlsSettings = true;
|
||
|
recommendedProxySettings = true;
|
||
|
virtualHosts.${config.services.grafana.domain} = {
|
||
|
default = true;
|
||
|
enableACME = true;
|
||
|
forceSSL = true;
|
||
|
locations."/" = {
|
||
|
|
||
|
proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}";
|
||
|
proxyWebsockets = true;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
security.acme.acceptTerms = true;
|
||
|
security.acme.defaults.email = "acme@gmem.ca";
|
||
|
|
||
|
system.stateVersion = "23.11";
|
||
|
}
|