mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-04-26 01:48:27 +02:00
125 lines
4.2 KiB
Nix
125 lines
4.2 KiB
Nix
{ config, ... }:
|
|
{
|
|
|
|
# Declaratively provision Grafana's data sources, dashboards, and alerting rules.
|
|
# Grafana's alerting rules is not recommended to use, we use Prometheus alertmanager instead.
|
|
# https://grafana.com/docs/grafana/latest/administration/provisioning/#data-sources
|
|
services.grafana.provision.datasources.settings = {
|
|
apiVersion = 1;
|
|
|
|
# List of data sources to delete from the database.
|
|
deleteDatasources = [
|
|
{
|
|
name = "Loki";
|
|
orgId = 1;
|
|
}
|
|
];
|
|
|
|
# Mark provisioned data sources for deletion if they are no longer in a provisioning file.
|
|
# It takes no effect if data sources are already listed in the deleteDatasources section.
|
|
prune = true;
|
|
|
|
datasources = [
|
|
{
|
|
# https://grafana.com/docs/grafana/latest/datasources/prometheus/configure/
|
|
name = "prometheus-homelab";
|
|
type = "prometheus";
|
|
access = "proxy";
|
|
# Access mode - proxy (server in the UI) or direct (browser in the UI).
|
|
url = "http://localhost:9090";
|
|
jsonData = {
|
|
httpMethod = "POST";
|
|
manageAlerts = true;
|
|
timeInterval = "15s";
|
|
queryTimeout = "90s";
|
|
prometheusType = "Prometheus";
|
|
cacheLevel = "High";
|
|
disableRecordingRules = false;
|
|
# As of Grafana 10 the Prometheus data source can be configured to query live dashboards
|
|
# incrementally instead of re-querying the entire duration on each dashboard refresh.
|
|
# Increasing the duration of the incrementalQueryOverlapWindow will increase the size of every incremental query
|
|
# but might be helpful for instances that have inconsistent results for recent data.
|
|
incrementalQueryOverlapWindow = "10m";
|
|
};
|
|
editable = false;
|
|
}
|
|
{
|
|
# The VictoriaMetrics plugin includes more native VM functionality.
|
|
name = "victoriametrics-homelab";
|
|
type = "victoriametrics-metrics-datasource";
|
|
access = "proxy";
|
|
url = "http://localhost:9090";
|
|
# url: http://vmselect:8481/select/0/prometheus # cluster version
|
|
jsonData = {
|
|
httpMethod = "POST";
|
|
manageAlerts = true;
|
|
timeInterval = "15s";
|
|
queryTimeout = "90s";
|
|
disableMetricsLookup = false; # enable this for metrics autocomplete
|
|
vmuiUrl = "https://prometheus.writefor.fun/vmui/";
|
|
};
|
|
isDefault = true;
|
|
editable = false;
|
|
}
|
|
{
|
|
# https://grafana.com/docs/grafana/latest/datasources/loki/configure-loki-data-source/
|
|
name = "loki-k3s-test-1";
|
|
type = "loki";
|
|
access = "proxy";
|
|
url = "https://loki-gateway.writefor.fun";
|
|
jsonData = {
|
|
timeout = 30;
|
|
maxLines = 1000;
|
|
httpHeaderName1 = "X-Scope-OrgID";
|
|
};
|
|
secureJsonData = {
|
|
httpHeaderValue1 = "fake";
|
|
};
|
|
editable = false;
|
|
}
|
|
{
|
|
name = "alertmanager-homelab";
|
|
type = "alertmanager";
|
|
url = "http://localhost:9093";
|
|
access = "proxy";
|
|
jsonData = {
|
|
implementation = "prometheus";
|
|
handleGrafanaManagedAlerts = false;
|
|
};
|
|
editable = false;
|
|
}
|
|
{
|
|
# https://grafana.com/docs/grafana/latest/datasources/postgres/configure/
|
|
name = "postgres-playground";
|
|
type = "postgres";
|
|
url = "postgres.writefor.fun:5432";
|
|
user = "playground";
|
|
secureJsonData = {
|
|
password = "$__file{${config.age.secrets."grafana-admin-password".path}}";
|
|
};
|
|
jsonData = {
|
|
database = "playground";
|
|
sslmode = "verify-full"; # disable/require/verify-ca/verify-full
|
|
maxOpenConns = 50;
|
|
maxIdleConns = 250;
|
|
maxIdleConnsAuto = true;
|
|
connMaxLifetime = 14400;
|
|
timeInterval = "1m";
|
|
timescaledb = false;
|
|
postgresVersion = 1500; # 15.xx
|
|
# tls
|
|
tlsConfigurationMethod = "file-path";
|
|
sslRootCertFile = ../../../certs/ecc-ca.crt;
|
|
};
|
|
editable = false;
|
|
}
|
|
{
|
|
name = "infinity-dataviewer";
|
|
type = "yesoreyeram-infinity-datasource";
|
|
editable = false;
|
|
}
|
|
];
|
|
|
|
};
|
|
}
|