96 lines
2.9 KiB
Nix
96 lines
2.9 KiB
Nix
{ config, pkgs, modulesPath, lib, ... }:
|
|
|
|
{
|
|
services.grafana.enable = true;
|
|
services.grafana.settings.server = {
|
|
http_port = 3000;
|
|
http_addr = "0.0.0.0";
|
|
# Grafana needs to know on which domain and URL it's running
|
|
domain = "grafana.lab";
|
|
# root_url = "https://monitor.local/grafana/"; # Not needed if it is `https://your.domain/`
|
|
# serve_from_sub_path = true;
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = [ 3000 ];
|
|
|
|
services.grafana = {
|
|
# declarativePlugins = with pkgs.grafanaPlugins; [ ... ];
|
|
|
|
provision = {
|
|
enable = true;
|
|
|
|
datasources.settings.datasources = [
|
|
# "Built-in" datasources can be provisioned - c.f. https://grafana.com/docs/grafana/latest/administration/provisioning/#data-sources
|
|
{
|
|
uid = "prometheus";
|
|
name = "Prometheus";
|
|
type = "prometheus";
|
|
url = "http://127.0.0.1:${toString config.services.prometheus.port}";
|
|
}
|
|
{
|
|
uid = "loki";
|
|
name = "Loki";
|
|
type = "loki";
|
|
url = "http://127.0.0.1:${toString config.services.loki.configuration.server.http_listen_port}";
|
|
}
|
|
# Some plugins also can - c.f. https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/latest/setup/provisioning/
|
|
# {
|
|
# name = "Infinity";
|
|
# type = "yesoreyeram-infinity-datasource";
|
|
# }
|
|
# But not all - c.f. https://github.com/fr-ser/grafana-sqlite-datasource/issues/141
|
|
];
|
|
|
|
# Note: removing attributes from the above `datasources.settings.datasources` is not enough for them to be deleted on `grafana`;
|
|
# One needs to use the following option:
|
|
# datasources.settings.deleteDatasources = [ { name = "prometheus"; orgId = 1; } { name = "loki"; orgId = 1; } ];
|
|
|
|
dashboards.settings.providers = [{
|
|
name = "my dashboards";
|
|
options.path = "/etc/grafana-dashboards";
|
|
}];
|
|
};
|
|
};
|
|
|
|
environment.etc."grafana-dashboards/traefik.json" = {
|
|
source = ./dashboards/traefik.json;
|
|
user = "grafana";
|
|
group = "grafana";
|
|
mode = "0644";
|
|
};
|
|
|
|
environment.etc."grafana-dashboards/grafana-traefik.json" = {
|
|
source = ./dashboards/grafana-traefik.json;
|
|
user = "grafana";
|
|
group = "grafana";
|
|
mode = "0644";
|
|
};
|
|
|
|
environment.etc."grafana-dashboards/node-exporter.json" = {
|
|
source = ./dashboards/node-exporter.json;
|
|
user = "grafana";
|
|
group = "grafana";
|
|
mode = "0644";
|
|
};
|
|
|
|
environment.etc."grafana-dashboards/promtail.json" = {
|
|
source = ./dashboards/promtail.json;
|
|
user = "grafana";
|
|
group = "grafana";
|
|
mode = "0644";
|
|
};
|
|
|
|
environment.etc."grafana-dashboards/gitea.json" = {
|
|
source = ./dashboards/gitea.json;
|
|
user = "grafana";
|
|
group = "grafana";
|
|
mode = "0644";
|
|
};
|
|
|
|
environment.etc."grafana-dashboards/postgres.json" = {
|
|
source = ./dashboards/postgres.json;
|
|
user = "grafana";
|
|
group = "grafana";
|
|
mode = "0644";
|
|
};
|
|
}
|