forked from mirrors/nixpkgs
nixos/prometheus-buildkite-agent-exporter: init
This commit is contained in:
parent
fa09a124a7
commit
88fb6d25d8
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue