diff options
author | Azat Bahawi <azat@bahawi.net> | 2024-04-21 02:15:42 +0300 |
---|---|---|
committer | Azat Bahawi <azat@bahawi.net> | 2024-04-21 02:15:42 +0300 |
commit | e6ed60548397627bf10f561f9438201dbba0a36e (patch) | |
tree | f9a84c5957d2cc4fcd148065ee9365a0c851ae1c /modules/nixos/monitoring/default.nix | |
parent | 2024-04-18 (diff) |
2024-04-21
Diffstat (limited to 'modules/nixos/monitoring/default.nix')
-rw-r--r-- | modules/nixos/monitoring/default.nix | 243 |
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 ]; } ]; - } - ]; - }; - }; - }; -} |