Send queue runner stats to statsd
[?]
Jun 23, 2015, 12:54 PM
DODOGD7MRCMRVGX23RPY2243WG54HCMCEZ6DCHOGID3GBQB66CXQCDependencies
- [2]
67QM2R5CDepend on Term::Size::Any - [*]
T4LLYESZ* Nix expression for building Hydra. - [*]
6K5PBUUNUse buildEnv to combine Hydra's Perl dependencies - [*]
D5QIOJGP* Move everything up one directory.
Change contents
- edit in release.nix at line 84
NetStatsd = buildPerlPackage {name = "Net-Statsd-0.11";src = fetchurl {url = mirror://cpan/authors/id/C/CO/COSIMO/Net-Statsd-0.11.tar.gz;sha256 = "0f56c95846c7e65e6d32cec13ab9df65716429141f106d2dc587f1de1e09e163";};meta = {description = "Sends statistics to the stats daemon over UDP";license = "perl";};}; - edit in release.nix at line 131
NetStatsd - file addition: hydra-send-stats[6.2543]
#! /run/current-system/sw/bin/perluse strict;use utf8;use Net::Statsd;use JSON;STDERR->autoflush(1);binmode STDERR, ":encoding(utf8)";sub gauge {my ($name, $val) = @_;die unless defined $val;Net::Statsd::gauge($name, $val);}sub sendQueueRunnerStats {my $s = `hydra-queue-runner --status`;die "cannot get queue runner stats\n" if $? != 0;my $json = decode_json($s) or die "cannot decode queue runner status";return if $json->{status} ne "up";gauge("hydra.queue.steps.active", $json->{nrActiveSteps});gauge("hydra.queue.steps.building", $json->{nrStepsBuilding});gauge("hydra.queue.steps.runnable", $json->{nrRunnableSteps});gauge("hydra.queue.steps.unfinished", $json->{nrUnfinishedSteps});gauge("hydra.queue.steps.finished", $json->{nrStepsDone});gauge("hydra.queue.steps.retries", $json->{nrRetries});gauge("hydra.queue.steps.max_retries", $json->{maxNrRetries});if ($json->{nrStepsDone}) {gauge("hydra.queue.steps.avg_total_time", $json->{avgStepTime});gauge("hydra.queue.steps.avg_build_time", $json->{avgStepBuildTime});}gauge("hydra.queue.builds.read", $json->{nrBuildsRead});gauge("hydra.queue.builds.unfinished", $json->{nrQueuedBuilds});gauge("hydra.queue.builds.finished", $json->{nrBuildsDone});gauge("hydra.queue.checks", $json->{nrQueueWakeups});}while (1) {eval { sendQueueRunnerStats(); };if ($@) { warn "$@"; }sleep(30);}