diff options
Diffstat (limited to 'Bugzilla/Metrics/Reporter/ElasticSearch.pm')
-rw-r--r-- | Bugzilla/Metrics/Reporter/ElasticSearch.pm | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/Bugzilla/Metrics/Reporter/ElasticSearch.pm b/Bugzilla/Metrics/Reporter/ElasticSearch.pm deleted file mode 100644 index c61a1d750..000000000 --- a/Bugzilla/Metrics/Reporter/ElasticSearch.pm +++ /dev/null @@ -1,105 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This Source Code Form is "Incompatible With Secondary Licenses", as -# defined by the Mozilla Public License, v. 2.0. - -package Bugzilla::Metrics::Reporter::ElasticSearch; - -use 5.10.1; -use strict; -use warnings; - -use base 'Bugzilla::Metrics::Reporter'; - -use constant DETACH => 1; - -sub report { - my ($self) = @_; - - # build path array and flatten - my @timers; - $self->walk_timers(sub { - my ($timer, $parent) = @_; - $timer->{id} = scalar(@timers); - if ($parent) { - if (exists $timer->{children}) { - if ($timer->{type} eq 'tmpl') { - $timer->{node} = 'tmpl: ' . $timer->{file}; - } - elsif ($timer->{type} eq 'db') { - $timer->{node} = 'db'; - } - else { - $timer->{node} = '?'; - } - } - $timer->{path} = [ @{ $parent->{path} }, $parent->{node} ]; - $timer->{parent} = $parent->{id}; - } - else { - $timer->{path} = [ ]; - $timer->{node} = $timer->{name}; - } - push @timers, $timer; - }); - - # calculate timer-only durations - $self->walk_timers(sub { - my ($timer) = @_; - my $child_duration = 0; - if (exists $timer->{children}) { - foreach my $child (@{ $timer->{children} }) { - $child_duration += $child->{duration}; - } - } - $timer->{this_duration} = $timer->{duration} - $child_duration; - }); - - # massage each timer - my $start_time = $self->{times}->{start_time}; - foreach my $timer (@timers) { - # remove node name and children - delete $timer->{node}; - delete $timer->{children}; - - # show relative times - $timer->{start_time} = $timer->{start_time} - $start_time; - delete $timer->{end_time}; - - # show times in ms instead of fractional seconds - foreach my $field (qw( start_time duration this_duration )) { - $timer->{$field} = sprintf('%.4f', $timer->{$field} * 1000) * 1; - } - } - - # remove private data from env - delete $self->{env}->{user_agent}; - delete $self->{env}->{referer}; - - # throw at ES - require ElasticSearch; - my $es = ElasticSearch->new( - servers => Bugzilla->params->{metrics_elasticsearch_server}, - transport => 'http', - ); - # 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}, - data => { - env => $self->{env}, - times => \@timers, - }, - ); -} - -1; |