summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Metrics
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Metrics')
-rw-r--r--Bugzilla/Metrics/Collector.pm12
-rw-r--r--Bugzilla/Metrics/Reporter/ElasticSearch.pm12
2 files changed, 19 insertions, 5 deletions
diff --git a/Bugzilla/Metrics/Collector.pm b/Bugzilla/Metrics/Collector.pm
index 2f9b6130d..53cbac819 100644
--- a/Bugzilla/Metrics/Collector.pm
+++ b/Bugzilla/Metrics/Collector.pm
@@ -9,6 +9,7 @@ package Bugzilla::Metrics::Collector;
use strict;
use warnings;
+use 5.10.1;
# the reporter needs to be a constant and use'd here to ensure it's loaded at
# compile time.
@@ -19,6 +20,8 @@ use Bugzilla::Metrics::Reporter::ElasticSearch;
#use constant REPORTER => 'Bugzilla::Metrics::Reporter::STDERR';
#use Bugzilla::Metrics::Reporter::STDERR;
+use Bugzilla::Constants;
+use Cwd qw(abs_path);
use File::Basename;
use Time::HiRes qw(gettimeofday clock_gettime CLOCK_MONOTONIC);
@@ -102,12 +105,15 @@ sub db_start {
my @stack;
my $i = 0;
+ state $path = quotemeta(abs_path(bz_locations()->{cgi_path}) . '/');
while (1) {
my @caller = caller($i);
last unless @caller;
- last if substr($caller[1], -5, 5) eq '.tmpl';
- push @stack, "$caller[1]:$caller[2]"
- unless substr($caller[1], 0, 16) eq 'Bugzilla/Metrics';
+ my $file = $caller[1];
+ $file =~ s/^$path//o;
+ push @stack, "$file:$caller[2]"
+ unless substr($file, 0, 16) eq 'Bugzilla/Metrics';
+ last if $file =~ /\.(?:tmpl|cgi)$/;
$i++;
}
$timer->{stack} = \@stack;
diff --git a/Bugzilla/Metrics/Reporter/ElasticSearch.pm b/Bugzilla/Metrics/Reporter/ElasticSearch.pm
index 4b424b5da..1bab2502c 100644
--- a/Bugzilla/Metrics/Reporter/ElasticSearch.pm
+++ b/Bugzilla/Metrics/Reporter/ElasticSearch.pm
@@ -79,10 +79,18 @@ sub report {
# throw at ES
require ElasticSearch;
- ElasticSearch->new(
+ my $es = ElasticSearch->new(
servers => Bugzilla->params->{metrics_elasticsearch_server},
transport => 'http',
- )->index(
+ );
+ # the ElasticSearch module queries the server for a list of nodes and
+ # connects directly to a random node. that bypasses our load balancer so we
+ # disable that by setting the server list directly.
+ $es->transport->servers(Bugzilla->params->{metrics_elasticsearch_server});
+ # as the discovered node list is lazy-loaded, increase _refresh_in so it
+ # won't call ->refresh_servers()
+ $es->transport->{_refresh_in} = 1;
+ $es->index(
index => Bugzilla->params->{metrics_elasticsearch_index},
type => Bugzilla->params->{metrics_elasticsearch_type},
ttl => Bugzilla->params->{metrics_elasticsearch_ttl},