enh(plugin): Slack REST API metricsv2 (#2822)

This commit is contained in:
itoussies 2021-05-24 14:12:40 +02:00 committed by GitHub
parent b3d9191f2c
commit 85382a9b7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 43 deletions

View File

@ -31,43 +31,12 @@ sub prefix_output {
return "Channel '" . $options{instance_value}->{name} . "' ";
}
sub set_counters {
my ($self, %options) = @_;
$self->{maps_counters_type} = [
{ name => 'global', type => 0 },
{ name => 'channels', type => 1, cb_prefix_output => 'prefix_output' },
];
$self->{maps_counters}->{global} = [
{ label => 'count', set => {
key_values => [ { name => 'count' } ],
output_template => 'Number of channels : %d',
perfdatas => [
{ label => 'count', value => 'count', template => '%d',
min => 0 },
],
}
},
];
$self->{maps_counters}->{channels} = [
{ label => 'members', set => {
key_values => [ { name => 'id' }, { name => 'name' }, { name => 'num_members' } ],
closure_custom_calc => $self->can('custom_info_calc'),
closure_custom_output => $self->can('custom_info_output'),
closure_custom_perfdata => $self->can('custom_info_perfdata'),
closure_custom_threshold_check => $self->can('custom_info_threshold'),
}
},
];
}
sub custom_info_perfdata {
my ($self, %options) = @_;
$self->{output}->perfdata_add(
label => 'members',
nlabel => 'channels.members.count',
instances => $self->use_instances(extra_instance => $options{extra_instance}) ? $self->{result_values}->{name} : undef,
value => $self->{result_values}->{num_members},
warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}),
@ -102,6 +71,37 @@ sub custom_info_calc {
return 0;
}
sub set_counters {
my ($self, %options) = @_;
$self->{maps_counters_type} = [
{ name => 'global', type => 0 },
{ name => 'channels', type => 1, cb_prefix_output => 'prefix_output' }
];
$self->{maps_counters}->{global} = [
{ label => 'count', nlabel => 'channels.count', set => {
key_values => [ { name => 'count' } ],
output_template => 'Number of channels : %d',
perfdatas => [
{ label => 'count', template => '%d', min => 0 }
]
}
}
];
$self->{maps_counters}->{channels} = [
{ label => 'members', set => {
key_values => [ { name => 'id' }, { name => 'name' }, { name => 'num_members' } ],
closure_custom_calc => $self->can('custom_info_calc'),
closure_custom_output => $self->can('custom_info_output'),
closure_custom_perfdata => $self->can('custom_info_perfdata'),
closure_custom_threshold_check => $self->can('custom_info_threshold')
}
}
];
}
sub new {
my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options);

View File

@ -36,19 +36,18 @@ sub set_counters {
$self->{maps_counters_type} = [
{ name => 'global', type => 0 },
{ name => 'members', type => 1, cb_prefix_output => 'prefix_output' },
{ name => 'members', type => 1, cb_prefix_output => 'prefix_output' }
];
$self->{maps_counters}->{global} = [
{ label => 'count', set => {
{ label => 'count', nlabel => 'members.count', set => {
key_values => [ { name => 'count' } ],
output_template => 'Number of members : %d',
perfdatas => [
{ label => 'count', value => 'count', template => '%d',
min => 0 },
],
{ label => 'count', template => '%d', min => 0 }
]
}
},
}
];
$self->{maps_counters}->{members} = [
@ -56,9 +55,9 @@ sub set_counters {
key_values => [ { name => 'id' }, { name => 'real_name' }, { name => 'display_name' } ],
closure_custom_calc => $self->can('custom_info_calc'),
closure_custom_output => $self->can('custom_info_output'),
closure_custom_perfdata => sub { return 0; },
closure_custom_perfdata => sub { return 0; }
}
},
}
];
}
sub custom_info_output {

View File

@ -30,10 +30,10 @@ sub new {
bless $self, $class;
$self->{version} = '1.0';
%{$self->{modes}} = (
%{$self->{modes} => {
'count-channels' => 'apps::slack::restapi::mode::countchannels',
'count-members' => 'apps::slack::restapi::mode::countmembers',
);
'count-members' => 'apps::slack::restapi::mode::countmembers'
};
$self->{custom_modes}{restapi} = 'apps::slack::restapi::custom::api';
return $self;