homelab_prometheus/prometheus.nix

126 lines
3.0 KiB
Nix
Raw Normal View History

2022-11-24 21:47:21 +01:00
{ config, pkgs, ... }:
{
services.grafana = {
enable = true;
domain = "grafana.home.feal.no";
port = 2342;
addr = "127.0.0.1";
};
services.prometheus = {
# Server config
enable = true;
port = 9001;
scrapeConfigs = [
{
job_name = "node";
static_configs = [{
targets = [
"chapel.home.feal.no:${toString config.services.prometheus.exporters.node.port}"
"sulu.home.feal.no:9100"
"mccoy.home.feal.no:9100"
"borg.home.feal.no:9100"
"dlink-feal.home.feal.no:9100"
];
}];
}
{
job_name = "openwrt";
static_configs = [{ targets = [ "dlink-feal.home.feal.no:9100" ]; } ];
}
{
job_name = "snmp";
static_configs = [{
targets = [
"feal-syn1.home.feal.no"
"feal-syn2.home.feal.no"
];
}];
metrics_path = "/snmp";
params.module = ["synology"];
relabel_configs = [
{
source_labels = ["__address__"];
target_label = "__param_target";
}
{
source_labels = ["__param_target"];
target_label = "instance";
}
{
target_label = "__address__";
replacement = "127.0.0.1:9116";
}
];
}
];
# Client config
exporters.node = {
enable = true;
enabledCollectors = [ "systemd" ];
port = 9002;
};
};
services.loki = {
enable = true;
configFile = /var/prometheus/loki-local-config.yaml;
};
systemd.services.promtail = {
description = "Promtail service for Loki";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.grafana-loki}/bin/promtail --config.file /var/prometheus/promtail.yaml
'';
};
};
services.nginx.virtualHosts.${config.services.grafana.domain} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}";
proxyWebsockets = true;
extraConfig = ''
proxy_buffers 8 1024k;
proxy_buffer_size 1024k;
'';
};
};
systemd.services.grafana-matrix-forwarder = {
enable = true;
description = "Forward Grafana Alerts to a matrix room";
unitConfig = {
Type = "simple";
};
serviceConfig = {
EnvironmentFile = "/var/prometheus/GRAFANASECRETS";
ExecStart = "/var/prometheus/grafana-matrix-forwarder --user $MATRIX_USER --password $MATRIX_PASSWORD --homeserver $MATRIX_HOMESERVER --host 127.0.0.1";
};
wantedBy = [ "multi-user.target" ];
};
environment.systemPackages = [
pkgs.prometheus-snmp-exporter
];
systemd.services.prometheus-snmp-exporter = {
enable = true;
description = "Gather data from SNMP (Synology)";
unitConfig = {
Type = "simple";
};
serviceConfig = {
ExecStart = "${pkgs.prometheus-snmp-exporter}/bin/snmp_exporter --config.file='/var/prometheus/snmp.yml'";
};
wantedBy = [ "multi-user.target" ];
};
}