From 976d668e5c5566c3e96b17d667830a0f3ed1bbb5 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 3 Jun 2021 12:37:48 +0200 Subject: [PATCH] nixos/rspamd-exporter: fix metrics In 0.3.0 of the json-exporter[1] it was switched to a different jsonpath library which made some changes - especially for spaces in keys - necessary. Also I decided to remove the pretty-printed JSON as this would interfere with the bash quoting too much. If one needs pretty-printed output, they can still pipe the output to `jq`. [1] https://github.com/prometheus-community/json_exporter/releases/tag/v0.3.0 --- .../prometheus/exporters/rspamd.nix | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/nixos/modules/services/monitoring/prometheus/exporters/rspamd.nix b/nixos/modules/services/monitoring/prometheus/exporters/rspamd.nix index d95e5ed9e83..994670a376e 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/rspamd.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/rspamd.nix @@ -5,21 +5,19 @@ with lib; let cfg = config.services.prometheus.exporters.rspamd; - prettyJSON = conf: - pkgs.runCommand "rspamd-exporter-config.yml" { } '' - echo '${builtins.toJSON conf}' | ${pkgs.buildPackages.jq}/bin/jq '.' > $out - ''; + mkFile = conf: + pkgs.writeText "rspamd-exporter-config.yml" (builtins.toJSON conf); generateConfig = extraLabels: { metrics = (map (path: { - name = "rspamd_${replaceStrings [ "." " " ] [ "_" "_" ] path}"; + name = "rspamd_${replaceStrings [ "[" "." " " "]" "\\" "'" ] [ "_" "_" "_" "" "" "" ] path}"; path = "{ .${path} }"; labels = extraLabels; }) [ - "actions.'add header'" - "actions.'no action'" - "actions.'rewrite subject'" - "actions.'soft reject'" + "actions['add\\ header']" + "actions['no\\ action']" + "actions['rewrite\\ subject']" + "actions['soft\\ reject']" "actions.greylist" "actions.reject" "bytes_allocated" @@ -40,18 +38,18 @@ let ]) ++ [{ name = "rspamd_statfiles"; type = "object"; - path = "$.statfiles[*]"; + path = "{.statfiles[*]}"; labels = recursiveUpdate { - symbol = "$.symbol"; - type = "$.type"; + symbol = "{.symbol}"; + type = "{.type}"; } extraLabels; values = { - revision = "$.revision"; - size = "$.size"; - total = "$.total"; - used = "$.used"; - languages = "$.languages"; - users = "$.users"; + revision = "{.revision}"; + size = "{.size}"; + total = "{.total}"; + used = "{.used}"; + languages = "{.languages}"; + users = "{.users}"; }; }]; }; @@ -76,7 +74,7 @@ in }; serviceOpts.serviceConfig.ExecStart = '' ${pkgs.prometheus-json-exporter}/bin/json_exporter \ - --config.file ${prettyJSON (generateConfig cfg.extraLabels)} \ + --config.file ${mkFile (generateConfig cfg.extraLabels)} \ --web.listen-address "${cfg.listenAddress}:${toString cfg.port}" \ ${concatStringsSep " \\\n " cfg.extraFlags} '';