64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, pkgs, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  cfg = config.services.grafana;
 | 
						|
in {
 | 
						|
  services.grafana = {
 | 
						|
    enable = true;
 | 
						|
    dataDir = "/tank/services/metrics/grafana";
 | 
						|
 | 
						|
    # TODO: Migrate sqlite to postgres
 | 
						|
 | 
						|
    settings.server = {
 | 
						|
      domain = "grafana.home.feal.no";
 | 
						|
      http_port = 2342;
 | 
						|
      http_addr = "127.0.0.1";
 | 
						|
    };
 | 
						|
 | 
						|
    provision = {
 | 
						|
      enable = true;
 | 
						|
      datasources.settings.datasources = [
 | 
						|
        {
 | 
						|
          name = "Prometheus";
 | 
						|
          type = "prometheus";
 | 
						|
          uid = "prom1";
 | 
						|
          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;
 | 
						|
        '';
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |