Files
zonemaster.es/zonemaster-backend/lib/Zonemaster/Backend/Metrics.pm

61 lines
1.1 KiB
Perl
Raw Normal View History

package Zonemaster::Backend::Metrics;
use strict;
use warnings;
use Log::Any qw($log);
eval("use Net::Statsd");
my $enable_metrics = 0;
if (!$@) {
$enable_metrics = 1;
}
my %CODE_STATUS_HASH = (
-32700 => 'RPC_PARSE_ERROR',
-32600 => 'RPC_INVALID_REQUEST',
-32601 => 'RPC_METHOD_NOT_FOUND',
-32602 => 'RPC_INVALID_PARAMS',
-32603 => 'RPC_INTERNAL_ERROR'
);
sub setup {
my ( $cls, $host, $port ) = @_;
if (!defined $host) {
$enable_metrics = 0;
} elsif ( $enable_metrics ) {
$log->info('Enabling metrics module', { host => $host, port => $port });
$Net::Statsd::HOST = $host;
$Net::Statsd::PORT = $port;
}
}
sub code_to_status {
my ($cls, $code) = @_;
if (defined $code) {
return $CODE_STATUS_HASH{$code};
} else {
return 'RPC_SUCCESS';
}
}
sub increment {
if ( $enable_metrics ) {
Net::Statsd::increment(@_);
}
}
sub gauge {
if ( $enable_metrics ) {
Net::Statsd::gauge(@_);
}
}
sub timing {
if ( $enable_metrics ) {
Net::Statsd::timing(@_);
}
}