test ebook search / test-ebook-search (pull_request) Successful in 34s
build_systems / build-brain (pull_request) Successful in 48s
build_systems / build-bob (pull_request) Successful in 49s
build_systems / build-jeeves (pull_request) Successful in 2m11s
treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 29s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m1s
build_systems / build-bob (push) Successful in 9s
pytest / pytest (push) Successful in 28s
test ebook search / test-ebook-search (push) Successful in 34s
build_systems / build-jeeves (push) Successful in 1m59s
treefmt / nix fmt (push) Successful in 6s
build_systems / build-brain (push) Successful in 33s
build_systems / build-rhapsody-in-green (push) Successful in 46s
- split networking into interface and firewall modules - define named service ports in one location - remove scattered service-level firewall rules
95 lines
2.3 KiB
Nix
95 lines
2.3 KiB
Nix
{
|
|
...
|
|
}:
|
|
let
|
|
vars = import ../vars.nix;
|
|
grafanaDataDir = "${vars.services}/grafana";
|
|
in
|
|
{
|
|
services.grafana = {
|
|
enable = true;
|
|
dataDir = grafanaDataDir;
|
|
settings = {
|
|
database.type = "sqlite3";
|
|
security = {
|
|
admin_password = "$__file{${vars.secrets}/services/grafana/admin_password}";
|
|
admin_user = "admin";
|
|
secret_key = "$__file{${vars.secrets}/services/grafana/secret_key}";
|
|
};
|
|
server = {
|
|
http_addr = "0.0.0.0";
|
|
http_port = 3000;
|
|
root_url = "http://jeeves:3000/";
|
|
};
|
|
};
|
|
provision = {
|
|
enable = true;
|
|
dashboards.settings = {
|
|
apiVersion = 1;
|
|
providers = [
|
|
{
|
|
name = "monitoring";
|
|
folder = "Monitoring";
|
|
type = "file";
|
|
disableDeletion = false;
|
|
editable = false;
|
|
allowUiUpdates = false;
|
|
updateIntervalSeconds = 30;
|
|
options.path = ../monitoring/dashboards;
|
|
}
|
|
];
|
|
};
|
|
datasources.settings = {
|
|
apiVersion = 1;
|
|
prune = true;
|
|
datasources = [
|
|
{
|
|
access = "proxy";
|
|
editable = false;
|
|
isDefault = true;
|
|
name = "prom-main";
|
|
type = "prometheus";
|
|
uid = "prom-main";
|
|
url = "http://127.0.0.1:9090";
|
|
}
|
|
{
|
|
access = "proxy";
|
|
editable = false;
|
|
name = "prom-pid-short";
|
|
type = "prometheus";
|
|
uid = "prom-pid-short";
|
|
url = "http://127.0.0.1:9092";
|
|
}
|
|
{
|
|
access = "proxy";
|
|
editable = false;
|
|
name = "richie-postgres";
|
|
type = "postgres";
|
|
uid = "richie-postgres";
|
|
url = "/run/postgresql";
|
|
user = "richie";
|
|
jsonData = {
|
|
database = "richie";
|
|
sslmode = "disable";
|
|
postgresVersion = 1700;
|
|
timescaledb = false;
|
|
};
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd = {
|
|
services.grafana.after = [
|
|
"prometheus-main.service"
|
|
"prometheus-pid-short.service"
|
|
"postgresql.service"
|
|
];
|
|
|
|
tmpfiles.rules = [
|
|
"d ${grafanaDataDir} 0750 grafana grafana - -"
|
|
];
|
|
};
|
|
}
|