Job: expose closuresize
and size
(output size in the UI) as prometheus metrics
This commit is contained in:
parent
d6cbf227cb
commit
d3fe4ffbf6
|
@ -69,7 +69,7 @@ sub prometheus : Chained('job') PathPart('prometheus') Args(0) {
|
||||||
|
|
||||||
my $lastBuild = $c->stash->{jobset}->builds->find(
|
my $lastBuild = $c->stash->{jobset}->builds->find(
|
||||||
{ job => $c->stash->{job}, finished => 1 },
|
{ job => $c->stash->{job}, finished => 1 },
|
||||||
{ order_by => 'id DESC', rows => 1, columns => [@buildListColumns] }
|
{ order_by => 'id DESC', rows => 1, columns => ["stoptime", "buildstatus", "closuresize", "size"] }
|
||||||
);
|
);
|
||||||
|
|
||||||
$prometheus->new_counter(
|
$prometheus->new_counter(
|
||||||
|
@ -92,6 +92,26 @@ sub prometheus : Chained('job') PathPart('prometheus') Args(0) {
|
||||||
$c->stash->{job},
|
$c->stash->{job},
|
||||||
)->inc($lastBuild->buildstatus > 0);
|
)->inc($lastBuild->buildstatus > 0);
|
||||||
|
|
||||||
|
$prometheus->new_gauge(
|
||||||
|
name => "hydra_build_closure_size",
|
||||||
|
help => "Closure size of the last job's build in bytes",
|
||||||
|
labels => [ "project", "jobset", "job" ]
|
||||||
|
)->labels(
|
||||||
|
$c->stash->{project}->name,
|
||||||
|
$c->stash->{jobset}->name,
|
||||||
|
$c->stash->{job},
|
||||||
|
)->inc($lastBuild->closuresize);
|
||||||
|
|
||||||
|
$prometheus->new_gauge(
|
||||||
|
name => "hydra_build_output_size",
|
||||||
|
help => "Output size of the last job's build in bytes",
|
||||||
|
labels => [ "project", "jobset", "job" ]
|
||||||
|
)->labels(
|
||||||
|
$c->stash->{project}->name,
|
||||||
|
$c->stash->{jobset}->name,
|
||||||
|
$c->stash->{job},
|
||||||
|
)->inc($lastBuild->size);
|
||||||
|
|
||||||
$c->stash->{'plain'} = { data => $prometheus->render };
|
$c->stash->{'plain'} = { data => $prometheus->render };
|
||||||
$c->forward('Hydra::View::Plain');
|
$c->forward('Hydra::View::Plain');
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,12 @@ subtest "/job/PROJECT/JOBSET/JOB/shield" => sub {
|
||||||
subtest "/job/PROJECT/JOBSET/JOB/prometheus" => sub {
|
subtest "/job/PROJECT/JOBSET/JOB/prometheus" => sub {
|
||||||
my $response = request(GET '/job/' . $project->name . '/' . $jobset->name . '/' . $build->job . '/prometheus');
|
my $response = request(GET '/job/' . $project->name . '/' . $jobset->name . '/' . $build->job . '/prometheus');
|
||||||
ok($response->is_success, "The page showing the job's prometheus data returns 200.");
|
ok($response->is_success, "The page showing the job's prometheus data returns 200.");
|
||||||
|
my $metrics = $response->content;
|
||||||
|
|
||||||
|
ok($metrics =~ m/hydra_job_failed\{.*\} 0/);
|
||||||
|
ok($metrics =~ m/hydra_job_completion_time\{.*\} [\d]+/);
|
||||||
|
ok($metrics =~ m/hydra_build_closure_size\{.*\} 96/);
|
||||||
|
ok($metrics =~ m/hydra_build_output_size\{.*\} 96/);
|
||||||
};
|
};
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in a new issue