summaryrefslogtreecommitdiff
path: root/modules/nixos/monitoring/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/monitoring/default.nix')
-rw-r--r--modules/nixos/monitoring/default.nix243
1 files changed, 0 insertions, 243 deletions
diff --git a/modules/nixos/monitoring/default.nix b/modules/nixos/monitoring/default.nix
deleted file mode 100644
index 6e5b782..0000000
--- a/modules/nixos/monitoring/default.nix
+++ /dev/null
@@ -1,243 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib;
-let
- cfg = config.nixfiles.modules.monitoring;
-in
-{
- options.nixfiles.modules.monitoring.enable = mkEnableOption ''
- a glue to provision a monitoring stack
- '';
-
- config = mkIf cfg.enable {
- nixfiles.modules = {
- alertmanager.enable = true;
- grafana.enable = true;
- loki.enable = false; # FIXME High RAM usage.
- prometheus.enable = true;
- };
-
- services = {
- grafana = {
- declarativePlugins = with pkgs.grafanaPlugins; [
- redis-app
- redis-datasource
- redis-explorer-app
- ];
-
- provision = {
- enable = true;
-
- # https://grafana.com/docs/grafana/latest/administration/provisioning/#data-sources
- datasources.settings.datasources = with config.nixfiles.modules; [
- (mkIf alertmanager.enable {
- name = "Alertmanager";
- type = "alertmanager";
- access = "proxy";
- url = "https://${alertmanager.domain}";
- jsonData.implementation = "prometheus";
- })
- (mkIf loki.enable {
- name = "Loki";
- type = "loki";
- access = "proxy";
- url = "https://${loki.domain}";
- isDefault = true;
- })
- (mkIf prometheus.enable {
- name = "Prometheus";
- type = "prometheus";
- access = "proxy";
- url = "https://${prometheus.domain}";
- })
- (mkIf redis.enable {
- name = "Redis";
- type = "redis-datasource";
- access = "proxy";
- url = with config.services.redis.servers.default; "redis://${bind}:${toString port}";
- jsonData.client = "standalone";
- })
- ];
- datasources.settings.deleteDatasources = with config.nixfiles.modules; [
- (mkIf (!alertmanager.enable) {
- name = "Alertmanager";
- orgId = 1;
- })
- (mkIf (!loki.enable) {
- name = "Loki";
- orgId = 1;
- })
- (mkIf (!prometheus.enable) {
- name = "Prometheus";
- orgId = 1;
- })
- (mkIf (!redis.enable) {
- name = "Redis";
- orgId = 1;
- })
- ];
-
- # https://grafana.com/docs/grafana/latest/administration/provisioning/#dashboards
- dashboards.settings.providers = [
- {
- name = "node";
- options.path = ./dashboards/node.json;
- }
- {
- name = "ntfy";
- options.path = ./dashboards/ntfy.json;
- }
- {
- name = "endlessh";
- options.path = ./dashboards/endlessh.json;
- }
- {
- name = "unbound";
- options.path = ./dashboards/unbound.json;
- }
- {
- name = "nginx";
- options.path = ./dashboards/nginx.json;
- }
- {
- name = "postgersql";
- options.path = ./dashboards/postgresql.json;
- }
- {
- name = "redis";
- options.path = ./dashboards/redis.json;
- }
- ];
-
- # https://grafana.com/docs/grafana/latest/administration/provisioning/#alerting
- alerting.contactPoints.settings.contactPoints = [
- {
- name = "Alertmanager";
- receivers = [
- {
- uid = 1;
- type = "prometheus-alertmanager";
- settings.url = "https://${config.nixfiles.modules.alertmanager.domain}";
- }
- ];
- }
- ];
- };
- };
-
- loki.configuration.ruler = {
- external_url = "https://${config.nixfiles.modules.grafana.domain}";
- alertmanager_url = "https://${config.nixfiles.modules.alertmanager.domain}";
- enable_alertmanager_v2 = true;
- };
-
- prometheus = {
- scrapeConfigs =
- with my.configurations;
- mapAttrsToList
- (name: value: {
- job_name = name;
- static_configs = [
- {
- targets =
- with value;
- map (
- host:
- concatStringsSep ":" [
- (if isAttrs host then host.hostname else host)
- (toString port)
- ]
- ) hosts;
- }
- ];
- relabel_configs = [
- {
- source_labels = [ "__address__" ];
- regex = "([^:]+):\\d+";
- target_label = "instance";
- }
- ] ++ optionals (hasAttr "relabel" value) value.relabel;
- })
- {
- promtail = {
- hosts = [
- manwe
- varda
- yavanna
- ];
- inherit (config.nixfiles.modules.promtail) port;
- };
- ntfy = {
- hosts = [ manwe ];
- inherit (config.nixfiles.modules.ntfy.prometheus) port;
- };
- soju = {
- hosts = [ "127.0.0.1" ];
- inherit (config.nixfiles.modules.soju.prometheus) port;
- };
- endlessh-go = {
- hosts = [
- manwe
- varda
- yavanna
- ];
- inherit (config.services.endlessh-go.prometheus) port;
- };
- nginx = {
- hosts = [
- manwe
- yavanna
- ];
- inherit (config.services.prometheus.exporters.nginx) port;
- };
- node = {
- hosts = [
- manwe
- varda
- yavanna
- ];
- inherit (config.services.prometheus.exporters.node) port;
- };
- postgres = {
- hosts = [ manwe ];
- inherit (config.services.prometheus.exporters.postgres) port;
- };
- redis = {
- hosts = [ manwe ];
- inherit (config.services.prometheus.exporters.redis) port;
- };
- unbound = {
- hosts = [ manwe ];
- inherit (config.services.prometheus.exporters.unbound) port;
- };
- wireguard = {
- hosts = [ manwe ];
- inherit (config.services.prometheus.exporters.wireguard) port;
- };
- exportarr-lidarr = {
- hosts = [ yavanna ];
- inherit (config.services.prometheus.exporters.exportarr-lidarr) port;
- };
- };
-
- ruleFiles = [
- ./rules/nginx.yaml
- ./rules/node.yaml
- ./rules/postgres.yaml
- ./rules/redis.yaml
- ];
-
- alertmanagers = [
- {
- scheme = "https";
- static_configs = [ { targets = [ config.nixfiles.modules.alertmanager.domain ]; } ];
- }
- ];
- };
- };
- };
-}