Merge pull request #130291 from DeterminateSystems/buildkite-agent-metrics

buildkite-agent-metrics: init at 5.2.1, nixos/prometheus-buildkite-agent-exporter: init
This commit is contained in:
Graham Christensen 2021-07-20 12:22:45 -04:00 committed by GitHub
commit da9f3c0598
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 118 additions and 0 deletions

View file

@ -99,6 +99,14 @@
<link linkend="opt-services.hockeypuck.enable">services.hockeypuck</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://github.com/buildkite/buildkite-agent-metrics">buildkite-agent-metrics</link>,
a command-line tool for collecting Buildkite agent metrics,
now has a Prometheus exporter available as
<link linkend="opt-services.prometheus.exporters.buildkite-agent.enable">services.prometheus.exporters.buildkite-agent</link>.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-21.11-incompatibilities">

View file

@ -30,6 +30,7 @@ In addition to numerous new and upgraded packages, this release has the followin
- [Hockeypuck](https://github.com/hockeypuck/hockeypuck), a OpenPGP Key Server. Available as [services.hockeypuck](#opt-services.hockeypuck.enable).
- [buildkite-agent-metrics](https://github.com/buildkite/buildkite-agent-metrics), a command-line tool for collecting Buildkite agent metrics, now has a Prometheus exporter available as [services.prometheus.exporters.buildkite-agent](#opt-services.prometheus.exporters.buildkite-agent.enable).
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}

View file

@ -27,6 +27,7 @@ let
"bird"
"bitcoin"
"blackbox"
"buildkite-agent"
"collectd"
"dnsmasq"
"domain"

View file

@ -0,0 +1,64 @@
{ config, lib, pkgs, options }:
with lib;
let
cfg = config.services.prometheus.exporters.buildkite-agent;
in
{
port = 9876;
extraOpts = {
tokenPath = mkOption {
type = types.nullOr types.path;
apply = final: if final == null then null else toString final;
description = ''
The token from your Buildkite "Agents" page.
A run-time path to the token file, which is supposed to be provisioned
outside of Nix store.
'';
};
interval = mkOption {
type = types.str;
default = "30s";
example = "1min";
description = ''
How often to update metrics.
'';
};
endpoint = mkOption {
type = types.str;
default = "https://agent.buildkite.com/v3";
description = ''
The Buildkite Agent API endpoint.
'';
};
queues = mkOption {
type = with types; nullOr (listOf str);
default = null;
example = literalExample ''[ "my-queue1" "my-queue2" ]'';
description = ''
Which specific queues to process.
'';
};
};
serviceOpts = {
script =
let
queues = concatStringsSep " " (map (q: "-queue ${q}") cfg.queues);
in
''
export BUILDKITE_AGENT_TOKEN="$(cat ${toString cfg.tokenPath})"
exec ${pkgs.buildkite-agent-metrics}/bin/buildkite-agent-metrics \
-backend prometheus \
-interval ${cfg.interval} \
-endpoint ${cfg.endpoint} \
${optionalString (cfg.queues != null) queues} \
-prometheus-addr "${cfg.listenAddress}:${toString cfg.port}" ${concatStringsSep " " cfg.extraFlags}
'';
serviceConfig = {
DynamicUser = false;
RuntimeDirectory = "buildkite-agent-metrics";
};
};
}

View file

@ -0,0 +1,42 @@
{ lib
, buildGoModule
, fetchFromGitHub
, fetchpatch
}:
buildGoModule rec {
pname = "buildkite-agent-metrics";
version = "5.2.1";
outputs = [ "out" "lambda" ];
src = fetchFromGitHub {
owner = "buildkite";
repo = "buildkite-agent-metrics";
rev = "v${version}";
sha256 = "XZYVCSJ/DIwoLrz37aQ3yW3RUhOhorY8L1AsAWxywcg=";
};
vendorSha256 = "UIkU3i45IEXWHdiakTj7f4W9kR49k4A93msfkqeXmQQ=";
patches = [
# Necessary to support passing the agent token in an env var, rather than on
# the command line. Should be removed upon the next release.
(fetchpatch {
name = "BUILDKITE_AGENT_TOKEN-env-var.patch";
url = "https://github.com/buildkite/buildkite-agent-metrics/commit/6c40b478b95f0e05fc12b87158222a9ff68169e0.patch";
sha256 = "Y4m9qGyPIROSqOY6G6xRQfFENEG4bFF3q5dZcHI4XiY=";
})
];
postInstall = ''
mkdir -p $lambda/bin
mv $out/bin/lambda $lambda/bin
'';
meta = with lib; {
description = "A command-line tool (and Lambda) for collecting Buildkite agent metrics";
homepage = "https://github.com/buildkite/buildkite-agent-metrics";
license = licenses.mit;
maintainers = teams.determinatesystems.members;
};
}

View file

@ -13210,6 +13210,8 @@ in
buildkite-agent2 = throw "pkgs.buildkite-agent2 has been discontinued. Please use pkgs.buildkite-agent (v3.x)";
buildkite-agent3 = callPackage ../development/tools/continuous-integration/buildkite-agent { };
buildkite-agent-metrics = callPackage ../servers/monitoring/buildkite-agent-metrics { };
buildkite-cli = callPackage ../development/tools/continuous-integration/buildkite-cli { };
bump = callPackage ../development/tools/github/bump { };