61 lines
1.1 KiB
Perl
61 lines
1.1 KiB
Perl
|
|
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(@_);
|
||
|
|
}
|
||
|
|
}
|