[CTOR-306] [Plugin] [CommunityPR] Allow to filter ActiveMQ Brokers by mbean and attributes (#4883)

Co-authored-by: Colin Gagnaire <gagnaire.colin@gmail.com>
Co-authored-by: Lucie Dubrunfaut <ldubrunfaut@CNTR-P-PF3DNAR1>
This commit is contained in:
Lucie Dubrunfaut 2024-03-04 10:49:13 +01:00 committed by GitHub
parent 6393960d96
commit 53162b3459
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 42 additions and 2 deletions

View File

@ -4,12 +4,15 @@ Centreon
Fortinet Fortinet
Fortigate Fortigate
license-instances-usage-prct license-instances-usage-prct
MBean
OID OID
oneaccess-sys-mib oneaccess-sys-mib
perfdata perfdata
powershell powershell
queue-messages-inflighted
SNMP SNMP
space-usage-prct space-usage-prct
SSH SSH
SureBackup SureBackup
topic-messages-inflighted
Veeam Veeam

View File

@ -155,7 +155,7 @@ jobs:
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- if: ${{ matrix.distrib == 'el7' }} - if: ${{ matrix.distrib == 'el7' }}
uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 uses: actions/cache/restore@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with: with:
path: ./build/ path: ./build/
key: fatpacked-plugins-${{ github.sha }}-${{ github.run_id }} key: fatpacked-plugins-${{ github.sha }}-${{ github.run_id }}

View File

@ -204,7 +204,8 @@ sub new {
$options{options}->add_options(arguments => { $options{options}->add_options(arguments => {
'filter-broker-name:s' => { name => 'filter_broker_name' }, 'filter-broker-name:s' => { name => 'filter_broker_name' },
'filter-destination-name:s' => { name => 'filter_destination_name' }, 'filter-destination-name:s' => { name => 'filter_destination_name' },
'filter-destination-type:s' => { name => 'filter_destination_type' } 'filter-destination-type:s' => { name => 'filter_destination_type' },
'request:s@' => { name => 'request' }
}); });
return $self; return $self;
@ -238,6 +239,24 @@ sub manage_selection {
] ]
} }
]; ];
if (defined($self->{option_results}->{request}) && $self->{option_results}->{request} ne '') {
centreon::plugins::misc::mymodule_load(
output => $self->{output}, module => 'JSON::XS',
error_msg => "Cannot load module 'JSON::XS'."
);
$request = undef;
foreach (@{$self->{option_results}->{request}}) {
eval {
push @$request, JSON::XS->new->utf8->decode($_);
};
if ($@) {
$self->{output}->add_option_msg(short_msg => "Cannot use request as it is a malformed JSON: " . $@);
$self->{output}->option_exit();
}
}
}
my $result = $options{custom}->get_attributes(request => $request, nothing_quit => 1); my $result = $options{custom}->get_attributes(request => $request, nothing_quit => 1);
$self->{cache_name} = 'activemq_' . $self->{mode} . '_' . md5_hex($options{custom}->get_connection_info()) . '_' . $self->{cache_name} = 'activemq_' . $self->{mode} . '_' . md5_hex($options{custom}->get_connection_info()) . '_' .
@ -318,6 +337,24 @@ Filter destination name (can be a regexp).
Filter destination type (can be a regexp). Filter destination type (can be a regexp).
=item B<--request>
EXPERIMENTAL Option : Community-supported only (no support from Centreon at this time)
Set the MBean and attributes to request (will replace defaults)
in a JSON-formatted fashion.
This is useful to reduce the size of returned data by providing destination
type and name or broker name instead of filtering afterwards, and grabbing
exactly the wanted attributes.
This can be set multiple times.
Example:
--request='{"mbean":"org.apache.activemq:brokerName=*,destinationName=MyQueue,destinationType=Queue,type=Broker","attributes":[{"name":"QueueSize"}]}'
--request='{"mbean":"org.apache.activemq:brokerName=*,type=Broker,service=Health","attributes":[{"name":"CurrentStatus"}]}'
=item B<--warning-status> =item B<--warning-status>
Define the conditions to match for the status to be WARNING. Define the conditions to match for the status to be WARNING.