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:
commit
da9f3c0598
6 changed files with 118 additions and 0 deletions
|
@ -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">
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ let
|
|||
"bird"
|
||||
"bitcoin"
|
||||
"blackbox"
|
||||
"buildkite-agent"
|
||||
"collectd"
|
||||
"dnsmasq"
|
||||
"domain"
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
42
pkgs/servers/monitoring/buildkite-agent-metrics/default.nix
Normal file
42
pkgs/servers/monitoring/buildkite-agent-metrics/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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 { };
|
||||
|
|
Loading…
Reference in a new issue