/usr/share/perl5/Net/Prometheus/Summary.pm is in libnet-prometheus-perl 0.05-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | # You may distribute under the terms of either the GNU General Public License
# or the Artistic License (the same terms as Perl itself)
#
# (C) Paul Evans, 2016 -- leonerd@leonerd.org.uk
package Net::Prometheus::Summary;
use strict;
use warnings;
use base qw( Net::Prometheus::Metric );
our $VERSION = '0.05';
use Carp;
use List::Util 1.33 qw( any );
use constant _type => "summary";
__PACKAGE__->MAKE_child_class;
=head1 NAME
C<Net::Prometheus::Summary> - summarise individual numeric observations
=head1 SYNOPSIS
use Net::Prometheus;
use Time::HiRes qw( time );
my $client = Net::Prometheus->new;
my $summary = $client->new_summary(
name => "request_seconds",
help => "Summary request processing time",
);
sub handle_request
{
my $start = time();
...
$summary->observe( time() - $start );
}
=head1 DESCRIPTION
This class provides a summary metric - a combination of a running total and a
counter, that can be used to report on total and average values of
observations, usually times. It is a subclass of L<Net::Prometheus::Metric>.
=cut
=head1 CONSTRUCTOR
Instances of this class are not usually constructed directly, but instead via
the L<Net::Prometheus> object that will serve it:
$summary = $prometheus->new_summary( %args )
This takes the same constructor arguments as documented in
L<Net::Prometheus::Metric>.
=cut
sub new
{
my $class = shift;
my %opts = @_;
$opts{labels} and any { $_ eq "quantile" } @{ $opts{labels} } and
croak "A Summary may not have a label called 'quantile'";
my $self = $class->SUPER::new( @_ );
$self->{counts} = {};
$self->{sums} = {};
if( !$self->labelcount ) {
$self->{counts}{""} = $self->{sums}{""} = 0;
}
return $self;
}
=head2 observe
$summary->observe( [ @label_values ], $value )
$child->observe( $value )
Increment the summary sum by the given value, and the count by 1.
=cut
__PACKAGE__->MAKE_child_method( 'observe' );
sub _observe_child
{
my $self = shift;
my ( $labelkey, $value ) = @_;
$self->{counts}{$labelkey} += 1;
$self->{sums} {$labelkey} += $value;
}
sub samples
{
my $self = shift;
my $counts = $self->{counts};
my $sums = $self->{sums};
return map {
$self->make_sample( count => $_, $counts->{$_} ),
$self->make_sample( sum => $_, $sums->{$_} )
} sort keys %$counts;
}
=head1 AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
=cut
0x55AA;
|