stockholm/krebs/2configs/shack/prometheus/server.nix

156 lines
3.9 KiB
Nix

{ pkgs, lib, config, ... }:
# from https://gist.github.com/globin/02496fd10a96a36f092a8e7ea0e6c7dd
{
networking = {
firewall.allowedTCPPorts = [
9090 # prometheus
9093 # alertmanager
];
};
services = {
nginx.virtualHosts = {
"prometheus.shack" = {
locations."/".proxyPass = "http://localhost:9090";
};
"alert.prometheus.shack" = {
locations."/".proxyPass = "http://localhost:9093";
};
};
prometheus = {
enable = true;
ruleFiles = lib.singleton (pkgs.writeText "prometheus-rules.yml" (builtins.toJSON {
groups = lib.singleton {
name = "mf-alerting-rules";
rules = import ./alert-rules.nix { inherit lib; };
};
}));
scrapeConfigs = [
{
job_name = "node";
scrape_interval = "10s";
static_configs = [
{
targets = [
"wolf.shack:9100"
];
labels = {
alias = "wolf.shack";
};
}
{
targets = [
"infra01.shack:9100"
];
labels = {
alias = "infra01.shack";
};
}
{
targets = [
"unifi.shack:9130"
];
labels = {
alias = "unifi.shack";
};
}
{
targets = [
"puyak.shack:9100" # puyak.shack
];
labels = {
alias = "puyak.shack";
};
}
{
targets = [
"phenylbutazon.shack:9100"
];
labels = {
alias = "phenylbutazon.shack";
};
}
{
targets = [
"ibuprofen.shack:9100"
];
labels = {
alias = "ibuprofen.shack";
};
}
];
}
{
job_name = "blackbox";
metrics_path = "/probe";
params.module = [ "icmp" ];
static_configs = [
{
targets = [
"google.com"
"wolf.shack"
"web.de"
"10.0.0.1"
"licht.shack"
];
}
];
relabel_configs = [
{
source_labels = ["__address__"];
target_label = "__param_target";
}
{
source_labels = ["__param_target"];
target_label = "instance";
}
{
target_label = "__address__";
replacement = "127.0.0.1:9115";
}
];
}
];
alertmanagers = [
{ scheme = "http";
path_prefix = "/";
static_configs = [ { targets = [ "localhost:9093" ]; } ];
}
];
alertmanager = {
enable = true;
listenAddress = "0.0.0.0";
configuration = {
"global" = {
"smtp_smarthost" = "smtp.example.com:587";
"smtp_from" = "alertmanager@example.com";
};
"route" = {
"group_by" = [ "alertname" "alias" ];
"group_wait" = "30s";
"group_interval" = "2m";
"repeat_interval" = "4h";
"receiver" = "team-admins";
};
"receivers" = [
{
"name" = "team-admins";
"email_configs" = [
{
"to" = "devnull@example.com";
"send_resolved" = true;
}
];
"webhook_configs" = [
{
"url" = "https://example.com/prometheus-alerts";
"send_resolved" = true;
}
];
}
];
};
};
};
};
}