mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-29 16:45:04 +02:00
enhance interface mode (#2496)
This commit is contained in:
parent
259708674d
commit
3dbcf16aff
@ -29,7 +29,7 @@ sub set_oids_label {
|
|||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
$self->SUPER::set_oids_label(%options);
|
$self->SUPER::set_oids_label(%options);
|
||||||
$self->{oids_label}->{vdom} = { oid => '.1.3.6.1.4.1.12356.101.7.2.1.1.1', cache => 'reload_cache_vdom_index' };
|
$self->{oids_label}->{vdom} = { oid => '.1.3.6.1.4.1.12356.101.7.2.1.1.1', get => 'reload_get_simple', cache => 'reload_cache_vdom_index' };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub reload_cache_vdom_index {
|
sub reload_cache_vdom_index {
|
||||||
|
@ -29,8 +29,8 @@ sub set_oids_label {
|
|||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
$self->{oids_label} = {
|
$self->{oids_label} = {
|
||||||
'atrconncepgendescr' => { oid => '.1.3.6.1.4.1.6110.2.7.5.1.1', cache => 'reload_cache_index_value' },
|
'atrconncepgendescr' => { oid => '.1.3.6.1.4.1.6110.2.7.5.1.1', get => 'reload_get_simple', cache => 'reload_cache_index_value' },
|
||||||
'atrconningdescr' => { oid => '.1.3.6.1.4.1.6110.2.2.1.1.2', cache => 'reload_cache_index_value' },
|
'atrconningdescr' => { oid => '.1.3.6.1.4.1.6110.2.2.1.1.2', get => 'reload_get_simple', cache => 'reload_cache_index_value' }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,13 @@ sub set_oids_errors {
|
|||||||
$self->{oid_in_crc} = '.1.3.6.1.4.1.1588.2.1.1.1.6.2.1.22'; # swFCPortRxCrcs
|
$self->{oid_in_crc} = '.1.3.6.1.4.1.1588.2.1.1.1.6.2.1.22'; # swFCPortRxCrcs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub set_oids_label {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
$self->SUPER::set_oids_label(%options);
|
||||||
|
$self->{oids_label}->{fcportname} = { oid => '.1.3.6.1.4.1.1588.2.1.1.1.6.2.1.36', get => 'reload_get_fcportname', cache => 'reload_cache_fcportname' };
|
||||||
|
}
|
||||||
|
|
||||||
sub set_counters_errors {
|
sub set_counters_errors {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
@ -54,8 +61,8 @@ sub set_counters_errors {
|
|||||||
output_template => 'Laser Temperature : %.2f C', output_error_template => 'Laser Temperature : %.2f',
|
output_template => 'Laser Temperature : %.2f C', output_error_template => 'Laser Temperature : %.2f',
|
||||||
perfdatas => [
|
perfdatas => [
|
||||||
{ label => 'laser_temp', template => '%.2f',
|
{ label => 'laser_temp', template => '%.2f',
|
||||||
unit => 'C', label_extra_instance => 1, instance_use => 'display' },
|
unit => 'C', label_extra_instance => 1, instance_use => 'display' }
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ label => 'input-power', filter => 'add_optical', nlabel => 'interface.input.power.dbm', set => {
|
{ label => 'input-power', filter => 'add_optical', nlabel => 'interface.input.power.dbm', set => {
|
||||||
@ -63,8 +70,8 @@ sub set_counters_errors {
|
|||||||
output_template => 'Input Power : %s dBm', output_error_template => 'Input Power : %s',
|
output_template => 'Input Power : %s dBm', output_error_template => 'Input Power : %s',
|
||||||
perfdatas => [
|
perfdatas => [
|
||||||
{ label => 'input_power', template => '%s',
|
{ label => 'input_power', template => '%s',
|
||||||
unit => 'dBm', label_extra_instance => 1, instance_use => 'display' },
|
unit => 'dBm', label_extra_instance => 1, instance_use => 'display' }
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ label => 'output-power', filter => 'add_optical', nlabel => 'interface.output.power.dbm', set => {
|
{ label => 'output-power', filter => 'add_optical', nlabel => 'interface.output.power.dbm', set => {
|
||||||
@ -72,8 +79,8 @@ sub set_counters_errors {
|
|||||||
output_template => 'Output Power : %s dBm', output_error_template => 'Output Power : %s',
|
output_template => 'Output Power : %s dBm', output_error_template => 'Output Power : %s',
|
||||||
perfdatas => [
|
perfdatas => [
|
||||||
{ label => 'output_power', template => '%s',
|
{ label => 'output_power', template => '%s',
|
||||||
unit => 'dBm', label_extra_instance => 1, instance_use => 'display' },
|
unit => 'dBm', label_extra_instance => 1, instance_use => 'display' }
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -103,6 +110,35 @@ sub reload_cache_custom {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub reload_get_fcportname {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
$options{snmp_get}->{fcportname} = { oid => $self->{oids_label}->{fcportname}->{oid} };
|
||||||
|
$options{snmp_get}->{ifname} = { oid => $self->{oids_label}->{ifname}->{oid} };
|
||||||
|
}
|
||||||
|
|
||||||
|
sub reload_cache_fcportname {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
# I cheat. Yes i can ;) change swFCPortIndex to ifIndex
|
||||||
|
my $store_index = defined($options{store_index}) && $options{store_index} == 1 ? 1 : 0;
|
||||||
|
foreach (keys %{$options{result}->{ $self->{oids_label}->{ifname}->{oid} }}) {
|
||||||
|
/^$self->{oids_label}->{ifname}->{oid}\.(.*)$/;
|
||||||
|
my $if_index = $1;
|
||||||
|
push @{$options{datas}->{all_ids}}, $if_index if ($store_index == 1);
|
||||||
|
if ($options{result}->{ $self->{oids_label}->{ifname}->{oid} }->{$_} =~ /\d+\/(\d+)$/) {
|
||||||
|
$options{datas}->{ $options{name} . '_' . $if_index } = $self->{output}->to_utf8(
|
||||||
|
$options{result}->{ $self->{oids_label}->{ $options{name} }->{oid} }->{ $self->{oids_label}->{ $options{name} }->{oid} . '.' . ($1 + 1) }
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
# we use ifname if there is no fcportname
|
||||||
|
$options{datas}->{ $options{name} . '_' . $if_index } = $self->{output}->to_utf8(
|
||||||
|
$options{result}->{ $self->{oids_label}->{ifname}->{oid} }->{$_}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub map_brocade {
|
sub map_brocade {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
@ -114,8 +150,9 @@ sub map_brocade {
|
|||||||
};
|
};
|
||||||
# swFCPortIndex can be found with ifName ("0/2") or ifDesc ("FC port 0/2")
|
# swFCPortIndex can be found with ifName ("0/2") or ifDesc ("FC port 0/2")
|
||||||
foreach (@{$self->{array_interface_selected}}) {
|
foreach (@{$self->{array_interface_selected}}) {
|
||||||
my $value = $self->{statefile_cache}->get(name => $self->{option_results}->{oid_filter} . '_' . $_);
|
my $value = $self->{statefile_cache}->get(name => 'ifname_' . $_);
|
||||||
if ($value =~ /\d+\/(\d+)$/) {
|
$value = $self->{statefile_cache}->get(name => 'ifdesc_' . $_) if (!defined($value));
|
||||||
|
if (defined($value) && $value =~ /\d+\/(\d+)$/) {
|
||||||
my $port_index = $1 + 1;
|
my $port_index = $1 + 1;
|
||||||
$self->{map_brocade}->{port2if}->{$port_index} = $_;
|
$self->{map_brocade}->{port2if}->{$port_index} = $_;
|
||||||
$self->{map_brocade}->{if2port}->{$_} = $port_index;
|
$self->{map_brocade}->{if2port}->{$_} = $port_index;
|
||||||
@ -136,10 +173,11 @@ sub load_errors {
|
|||||||
);
|
);
|
||||||
|
|
||||||
$self->map_brocade();
|
$self->map_brocade();
|
||||||
|
my $indexes = [keys %{$self->{map_brocade}->{port2if}}];
|
||||||
$self->{snmp}->load(
|
$self->{snmp}->load(
|
||||||
oids => [ $self->{oid_in_crc} ],
|
oids => [ $self->{oid_in_crc} ],
|
||||||
instances => [keys %{$self->{map_brocade}->{port2if}}]
|
instances => $indexes
|
||||||
);
|
) if (scalar(@$indexes) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $oid_optical_laser_temp = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.1'; # swSfpTemperature
|
my $oid_optical_laser_temp = '.1.3.6.1.4.1.1588.2.1.1.1.28.1.1.1'; # swSfpTemperature
|
||||||
@ -317,11 +355,11 @@ Time in minutes before reloading cache file (default: 180).
|
|||||||
|
|
||||||
=item B<--oid-filter>
|
=item B<--oid-filter>
|
||||||
|
|
||||||
Choose OID used to filter interface (default: ifName) (values: ifDesc, ifAlias, ifName, IpAddr).
|
Choose OID used to filter interface (default: ifName) (values: fcPortName, ifDesc, ifAlias, ifName, IpAddr).
|
||||||
|
|
||||||
=item B<--oid-display>
|
=item B<--oid-display>
|
||||||
|
|
||||||
Choose OID used to display interface (default: ifName) (values: ifDesc, ifAlias, ifName, IpAddr).
|
Choose OID used to display interface (default: ifName) (values: fcPortName, ifDesc, ifAlias, ifName, IpAddr).
|
||||||
|
|
||||||
=item B<--oid-extra-display>
|
=item B<--oid-extra-display>
|
||||||
|
|
||||||
|
@ -96,17 +96,6 @@ sub set_key_values_status {
|
|||||||
return [ { name => 'linkstatus' }, { name => 'opstatus' }, { name => 'admstatus' }, { name => 'duplexstatus' }, { name => 'display' } ];
|
return [ { name => 'linkstatus' }, { name => 'opstatus' }, { name => 'admstatus' }, { name => 'duplexstatus' }, { name => 'display' } ];
|
||||||
}
|
}
|
||||||
|
|
||||||
sub set_oids_label {
|
|
||||||
my ($self, %options) = @_;
|
|
||||||
|
|
||||||
$self->{oids_label} = {
|
|
||||||
'ifdesc' => { oid => '.1.3.6.1.2.1.2.2.1.2', cache => 'reload_cache_index_value' },
|
|
||||||
'ifalias' => { oid => '.1.3.6.1.2.1.31.1.1.1.18', cache => 'reload_cache_index_value' },
|
|
||||||
'ifname' => { oid => '.1.3.6.1.2.1.31.1.1.1.1', cache => 'reload_cache_index_value', },
|
|
||||||
'ipaddr' => { oid => '.1.3.6.1.2.1.4.20.1.2', cache => 'reload_cache_values_index', },
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
sub set_oids_status {
|
sub set_oids_status {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
@ -619,10 +619,10 @@ sub set_oids_label {
|
|||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
$self->{oids_label} = {
|
$self->{oids_label} = {
|
||||||
'ifdesc' => { oid => '.1.3.6.1.2.1.2.2.1.2', cache => 'reload_cache_index_value' },
|
'ifdesc' => { oid => '.1.3.6.1.2.1.2.2.1.2', get => 'reload_get_simple', cache => 'reload_cache_index_value' },
|
||||||
'ifalias' => { oid => '.1.3.6.1.2.1.31.1.1.1.18', cache => 'reload_cache_index_value' },
|
'ifalias' => { oid => '.1.3.6.1.2.1.31.1.1.1.18', get => 'reload_get_simple', cache => 'reload_cache_index_value' },
|
||||||
'ifname' => { oid => '.1.3.6.1.2.1.31.1.1.1.1', cache => 'reload_cache_index_value' },
|
'ifname' => { oid => '.1.3.6.1.2.1.31.1.1.1.1', get => 'reload_get_simple', cache => 'reload_cache_index_value' },
|
||||||
'ipaddr' => { oid => '.1.3.6.1.2.1.4.20.1.2', cache => 'reload_cache_values_index' }
|
'ipaddr' => { oid => '.1.3.6.1.2.1.4.20.1.2', get => 'reload_get_simple', cache => 'reload_cache_values_index' }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -935,14 +935,20 @@ sub reload_cache_values_index {
|
|||||||
foreach (keys %{$options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }}) {
|
foreach (keys %{$options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }}) {
|
||||||
/^$self->{oids_label}->{$options{name}}->{oid}\.(.*)$/;
|
/^$self->{oids_label}->{$options{name}}->{oid}\.(.*)$/;
|
||||||
push @{$options{datas}->{all_ids}}, $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_} if ($store_index == 1);
|
push @{$options{datas}->{all_ids}}, $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_} if ($store_index == 1);
|
||||||
if (defined($options{datas}->{$options{name} . "_" . $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_}})) {
|
if (defined($options{datas}->{$options{name} . '_' . $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_}})) {
|
||||||
$options{datas}->{$options{name} . "_" . $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_}} .= ', ' . $1;
|
$options{datas}->{$options{name} . '_' . $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_}} .= ', ' . $1;
|
||||||
} else {
|
} else {
|
||||||
$options{datas}->{$options{name} . "_" . $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_}} = $1;
|
$options{datas}->{$options{name} . '_' . $options{result}->{ $self->{oids_label}->{$options{name}}->{oid} }->{$_}} = $1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub reload_get_simple {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
$options{snmp_get}->{ $options{name} } = { oid => $self->{oids_label}->{ $options{name} }->{oid} };
|
||||||
|
}
|
||||||
|
|
||||||
sub reload_cache {
|
sub reload_cache {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
||||||
@ -953,20 +959,21 @@ sub reload_cache {
|
|||||||
$datas->{last_timestamp} = time();
|
$datas->{last_timestamp} = time();
|
||||||
$datas->{all_ids} = [];
|
$datas->{all_ids} = [];
|
||||||
|
|
||||||
my $snmp_get = [
|
my ($snmp_get, $func) = ({});
|
||||||
{ oid => $self->{oids_label}->{$self->{option_results}->{oid_filter}}->{oid} },
|
if ($func = $self->can($self->{oids_label}->{ $self->{option_results}->{oid_filter} }->{get})) {
|
||||||
];
|
$func->($self, snmp_get => $snmp_get, name => $self->{option_results}->{oid_filter});
|
||||||
if ($self->{option_results}->{oid_filter} ne $self->{option_results}->{oid_display}) {
|
|
||||||
push @{$snmp_get}, { oid => $self->{oids_label}->{$self->{option_results}->{oid_display}}->{oid} };
|
|
||||||
}
|
}
|
||||||
if (defined($self->{option_results}->{oid_extra_display}) && $self->{option_results}->{oid_extra_display} ne $self->{option_results}->{oid_display} &&
|
if ($func = $self->can($self->{oids_label}->{ $self->{option_results}->{oid_display} }->{get})) {
|
||||||
$self->{option_results}->{oid_extra_display} ne $self->{option_results}->{oid_filter}) {
|
$func->($self, snmp_get => $snmp_get, name => $self->{option_results}->{oid_display});
|
||||||
push @{$snmp_get}, { oid => $self->{oids_label}->{$self->{option_results}->{oid_extra_display}}->{oid} };
|
}
|
||||||
|
if (defined($self->{option_results}->{oid_extra_display}) &&
|
||||||
|
($func = $self->can($self->{oids_label}->{ $self->{option_results}->{oid_extra_display} }->{get}))) {
|
||||||
|
$func->($self, snmp_get => $snmp_get, name => $self->{option_results}->{oid_extra_display});
|
||||||
}
|
}
|
||||||
|
|
||||||
my $result = $self->{snmp}->get_multiple_table(oids => $snmp_get);
|
my $result = $self->{snmp}->get_multiple_table(oids => [values %$snmp_get]);
|
||||||
|
|
||||||
my $func = $self->can($self->{oids_label}->{ $self->{option_results}->{oid_filter} }->{cache});
|
$func = $self->can($self->{oids_label}->{ $self->{option_results}->{oid_filter} }->{cache});
|
||||||
$func->($self, result => $result, datas => $datas, name => $self->{option_results}->{oid_filter}, store_index => 1);
|
$func->($self, result => $result, datas => $datas, name => $self->{option_results}->{oid_filter}, store_index => 1);
|
||||||
|
|
||||||
if (my $custom = $self->can('reload_cache_custom')) {
|
if (my $custom = $self->can('reload_cache_custom')) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user