summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Weinelt <mweinelt@users.noreply.github.com>2024-02-22 17:35:56 +0100
committerGitHub <noreply@github.com>2024-02-22 17:35:56 +0100
commitd1a47596ea1386096c240214965c576844dbfb63 (patch)
tree3a175eb5e8e6a78896ffbdb33fa4137bb6b80292
parentMerge pull request #290453 from NixOS/backport-290325-to-release-23.11 (diff)
parentprometheus-fastly-exporter: refactor (diff)
downloadnixpkgs-d1a47596ea1386096c240214965c576844dbfb63.tar.gz
Merge pull request #290646 from NixOS/backport-287348-to-release-23.11
[Backport release-23.11] nixos/prometheus-fastly-exporter: fix runtime environment, refactor, make things prettier
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/fastly.nix51
-rw-r--r--pkgs/servers/monitoring/prometheus/fastly-exporter.nix19
2 files changed, 46 insertions, 24 deletions
diff --git a/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix b/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix
index 36409caccf2e..2a8b7fc0818d 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters/fastly.nix
@@ -1,41 +1,54 @@
-{ config, lib, pkgs, options }:
+{ config
+, lib
+, pkgs
+, options
+}:
-with lib;
+let
+ inherit (lib)
+ escapeShellArgs
+ mkOption
+ optionals
+ types
+ ;
-let cfg = config.services.prometheus.exporters.fastly;
+ cfg = config.services.prometheus.exporters.fastly;
in
{
port = 9118;
- extraOpts = {
- debug = mkEnableOption (lib.mdDoc "Debug logging mode for fastly-exporter");
-
+ extraOpts = with types; {
configFile = mkOption {
- type = types.nullOr types.path;
+ type = nullOr path;
default = null;
- description = lib.mdDoc ''
+ example = "./fastly-exporter-config.txt";
+ description = ''
Path to a fastly-exporter configuration file.
Example one can be generated with `fastly-exporter --config-file-example`.
'';
- example = "./fastly-exporter-config.txt";
};
tokenPath = mkOption {
- type = types.nullOr types.path;
- apply = final: if final == null then null else toString final;
- description = lib.mdDoc ''
+ type = path;
+ description = ''
A run-time path to the token file, which is supposed to be provisioned
outside of Nix store.
'';
};
};
serviceOpts = {
- script = ''
- ${optionalString (cfg.tokenPath != null)
- "export FASTLY_API_TOKEN=$(cat ${toString cfg.tokenPath})"}
- ${pkgs.prometheus-fastly-exporter}/bin/fastly-exporter \
- -listen http://${cfg.listenAddress}:${toString cfg.port}
- ${optionalString cfg.debug "-debug true"} \
- ${optionalString (cfg.configFile != null) "-config-file ${cfg.configFile}"}
+ serviceConfig = {
+ LoadCredential = "fastly-api-token:${cfg.tokenPath}";
+ };
+ script = let
+ call = escapeShellArgs ([
+ "${pkgs.prometheus-fastly-exporter}/bin/fastly-exporter"
+ "-listen" "${cfg.listenAddress}:${toString cfg.port}"
+ ] ++ optionals (cfg.configFile != null) [
+ "--config-file" cfg.configFile
+ ] ++ cfg.extraFlags);
+ in ''
+ export FASTLY_API_TOKEN="$(cat $CREDENTIALS_DIRECTORY/fastly-api-token)"
+ ${call}
'';
};
}
diff --git a/pkgs/servers/monitoring/prometheus/fastly-exporter.nix b/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
index 0659ead43ccc..ba2d5217e344 100644
--- a/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/fastly-exporter.nix
@@ -1,22 +1,31 @@
-{ lib, buildGoModule, fetchFromGitHub }:
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
buildGoModule rec {
pname = "fastly-exporter";
version = "7.6.1";
src = fetchFromGitHub {
- owner = "peterbourgon";
- repo = pname;
+ owner = "fastly";
+ repo = "fastly-exporter";
rev = "v${version}";
- sha256 = "sha256-JUbjWAJ70iq0RCr6U2thbtZ3nmCic9wGtSf2ArRy4uA=";
+ hash = "sha256-JUbjWAJ70iq0RCr6U2thbtZ3nmCic9wGtSf2ArRy4uA=";
};
vendorHash = "sha256-lEaMhJL/sKNOXx0W+QHMG4QUUE6Pc4AqulhgyCMQQNY=";
+ passthru.tests = {
+ inherit (nixosTests.prometheus-exporters) fastly;
+ };
+
meta = with lib; {
description = "Prometheus exporter for the Fastly Real-time Analytics API";
- homepage = "https://github.com/peterbourgon/fastly-exporter";
+ homepage = "https://github.com/fastly/fastly-exporter";
license = licenses.asl20;
maintainers = teams.deshaw.members;
+ mainProgram = "fastly-exporter";
};
}