2023-04-15 20:44:47 +02:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
cfg = config.services.grafana;
|
|
|
|
in {
|
|
|
|
services.grafana = {
|
|
|
|
enable = true;
|
2023-12-26 11:45:12 +01:00
|
|
|
dataDir = "/tank/services/metrics/grafana";
|
|
|
|
|
|
|
|
# TODO: Migrate sqlite to postgres
|
|
|
|
|
2023-04-15 20:44:47 +02:00
|
|
|
settings.server = {
|
2023-04-16 20:30:31 +02:00
|
|
|
domain = "grafana.home.feal.no";
|
2023-04-15 20:44:47 +02:00
|
|
|
http_port = 2342;
|
|
|
|
http_addr = "127.0.0.1";
|
|
|
|
};
|
|
|
|
|
|
|
|
provision = {
|
|
|
|
enable = true;
|
|
|
|
datasources.settings.datasources = [
|
|
|
|
{
|
|
|
|
name = "Prometheus";
|
|
|
|
type = "prometheus";
|
2023-04-16 20:30:31 +02:00
|
|
|
uid = "prom1";
|
2023-04-15 20:44:47 +02:00
|
|
|
url = ("http://${config.services.prometheus.listenAddress}:${toString config.services.prometheus.port}");
|
|
|
|
isDefault = true;
|
|
|
|
}
|
|
|
|
{
|
|
|
|
name = "Loki";
|
|
|
|
type = "loki";
|
|
|
|
url = ("http://${config.services.loki.configuration.server.http_listen_address}:${toString config.services.loki.configuration.server.http_listen_port}");
|
|
|
|
}
|
|
|
|
];
|
|
|
|
dashboards.settings.providers = [
|
|
|
|
{
|
|
|
|
name = "Node Exporter Full";
|
|
|
|
type = "file";
|
|
|
|
url = "https://grafana.com/api/dashboards/1860/revisions/29/download";
|
|
|
|
options.path = dashboards/node-exporter-full.json;
|
|
|
|
}
|
|
|
|
{
|
|
|
|
name = "Synology NAS Details";
|
|
|
|
type = "file";
|
|
|
|
url = "https://grafana.com/api/dashboards/14284/revisions/9/download";
|
|
|
|
options.path = dashboards/synology-nas-details.json;
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
services.nginx.virtualHosts.${cfg.settings.server.domain} = {
|
|
|
|
locations = {
|
|
|
|
"/" = {
|
|
|
|
proxyPass = "http://127.0.0.1:${toString cfg.settings.server.http_port}";
|
|
|
|
proxyWebsockets = true;
|
|
|
|
extraConfig = ''
|
|
|
|
proxy_buffers 8 1024k;
|
|
|
|
proxy_buffer_size 1024k;
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|