mirror of
https://github.com/nmasur/dotfiles
synced 2024-11-26 07:15:37 +00:00
abstract grafana in prometheus config
This commit is contained in:
parent
4c4e250fa1
commit
ee58f7a4ee
@ -6,10 +6,13 @@
|
|||||||
default = null;
|
default = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
# If hosting Grafana, host local Prometheus and listen for inbound jobs.
|
config = let
|
||||||
# If not hosting Grafana, send remote Prometheus writes to primary host
|
|
||||||
|
|
||||||
config = lib.mkIf config.services.prometheus.enable {
|
# If hosting Grafana, host local Prometheus and listen for inbound jobs. If
|
||||||
|
# not hosting Grafana, send remote Prometheus writes to primary host.
|
||||||
|
isServer = config.services.grafana.enable;
|
||||||
|
|
||||||
|
in lib.mkIf config.services.prometheus.enable {
|
||||||
|
|
||||||
services.prometheus = {
|
services.prometheus = {
|
||||||
exporters.node.enable = true;
|
exporters.node.enable = true;
|
||||||
@ -17,10 +20,9 @@
|
|||||||
job_name = "local";
|
job_name = "local";
|
||||||
static_configs = [{ targets = [ "127.0.0.1:9100" ]; }];
|
static_configs = [{ targets = [ "127.0.0.1:9100" ]; }];
|
||||||
}];
|
}];
|
||||||
webExternalUrl = lib.mkIf config.services.grafana.enable
|
webExternalUrl = lib.mkIf isServer "https://${config.prometheusServer}";
|
||||||
"https://${config.prometheusServer}";
|
|
||||||
# Web config file: https://prometheus.io/docs/prometheus/latest/configuration/https/
|
# Web config file: https://prometheus.io/docs/prometheus/latest/configuration/https/
|
||||||
webConfigFile = lib.mkIf config.services.grafana.enable
|
webConfigFile = lib.mkIf isServer
|
||||||
((pkgs.formats.yaml { }).generate "webconfig.yml" {
|
((pkgs.formats.yaml { }).generate "webconfig.yml" {
|
||||||
basic_auth_users = {
|
basic_auth_users = {
|
||||||
# Generate password: htpasswd -nBC 10 "" | tr -d ':\n'
|
# Generate password: htpasswd -nBC 10 "" | tr -d ':\n'
|
||||||
@ -29,7 +31,7 @@
|
|||||||
"$2y$10$r7FWHLHTGPAY312PdhkPEuvb05aGn9Nk1IO7qtUUUjmaDl35l6sLa";
|
"$2y$10$r7FWHLHTGPAY312PdhkPEuvb05aGn9Nk1IO7qtUUUjmaDl35l6sLa";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
remoteWrite = lib.mkIf (!config.services.grafana.enable) [{
|
remoteWrite = lib.mkIf (!isServer) [{
|
||||||
name = config.networking.hostName;
|
name = config.networking.hostName;
|
||||||
url = "https://${config.prometheusServer}";
|
url = "https://${config.prometheusServer}";
|
||||||
basic_auth = {
|
basic_auth = {
|
||||||
@ -41,20 +43,19 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Create credentials file for remote Prometheus push
|
# Create credentials file for remote Prometheus push
|
||||||
secrets.prometheus = lib.mkIf (!config.services.grafana.enable) {
|
secrets.prometheus = lib.mkIf (!isServer) {
|
||||||
source = ../../../private/prometheus.age;
|
source = ../../../private/prometheus.age;
|
||||||
dest = "${config.secretsDirectory}/prometheus";
|
dest = "${config.secretsDirectory}/prometheus";
|
||||||
owner = "prometheus";
|
owner = "prometheus";
|
||||||
group = "prometheus";
|
group = "prometheus";
|
||||||
permissions = "0440";
|
permissions = "0440";
|
||||||
};
|
};
|
||||||
systemd.services.prometheus-secret =
|
systemd.services.prometheus-secret = lib.mkIf (!isServer) {
|
||||||
lib.mkIf (!config.services.grafana.enable) {
|
requiredBy = [ "prometheus.service" ];
|
||||||
requiredBy = [ "prometheus.service" ];
|
before = [ "prometheus.service" ];
|
||||||
before = [ "prometheus.service" ];
|
};
|
||||||
};
|
|
||||||
|
|
||||||
caddy.routes = lib.mkIf config.services.grafana.enable [{
|
caddy.routes = lib.mkIf isServer [{
|
||||||
match = [{ host = [ config.prometheusServer ]; }];
|
match = [{ host = [ config.prometheusServer ]; }];
|
||||||
handle = [{
|
handle = [{
|
||||||
handler = "reverse_proxy";
|
handler = "reverse_proxy";
|
||||||
|
Loading…
Reference in New Issue
Block a user