enh(netapp/ontap/snmp): cluster-nodes and plexes (#3087)
This commit is contained in:
parent
40673581ee
commit
0b1bc16521
|
@ -83,7 +83,7 @@ sub node_long_output {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
"checking node '%s' ",
|
"checking node '%s'",
|
||||||
$options{instance_value}->{name}
|
$options{instance_value}->{name}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ sub set_counters {
|
||||||
|
|
||||||
$self->{maps_counters}->{cpu} = [
|
$self->{maps_counters}->{cpu} = [
|
||||||
{ label => 'cpu-utilization', nlabel => 'node.cpu.utilization.percentage', set => {
|
{ label => 'cpu-utilization', nlabel => 'node.cpu.utilization.percentage', set => {
|
||||||
key_values => [ { name => 'cpuUptime' }, { name => 'cpuBusyTime' } ],
|
key_values => [ { name => 'cpuUptime', diff => 1 }, { name => 'cpuBusyTime', diff => 1 } ],
|
||||||
closure_custom_calc => $self->can('custom_cpu_calc'),
|
closure_custom_calc => $self->can('custom_cpu_calc'),
|
||||||
output_template => 'cpu utilization: %.2f%%',
|
output_template => 'cpu utilization: %.2f%%',
|
||||||
output_use => 'cpu_used', threshold_use => 'cpu_used',
|
output_use => 'cpu_used', threshold_use => 'cpu_used',
|
||||||
|
|
|
@ -40,12 +40,29 @@ sub custom_temp_perfdata {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub plex_long_output {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
return sprintf(
|
||||||
|
"checking plex '%s'",
|
||||||
|
$options{instance_value}->{name}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sub prefix_plex_output {
|
sub prefix_plex_output {
|
||||||
my ($self, %options) = @_;
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
"Plex '%s' [aggregate: %s] ",
|
"Plex '%s' ",
|
||||||
$options{instance_value}->{name},
|
$options{instance_value}->{name}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub prefix_aggregate_output {
|
||||||
|
my ($self, %options) = @_;
|
||||||
|
|
||||||
|
return sprintf(
|
||||||
|
"aggregate '%s' ",
|
||||||
$options{instance_value}->{aggregate}
|
$options{instance_value}->{aggregate}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +78,12 @@ sub set_counters {
|
||||||
|
|
||||||
$self->{maps_counters_type} = [
|
$self->{maps_counters_type} = [
|
||||||
{ name => 'global', type => 0, cb_prefix_output => 'prefix_global_output', },
|
{ name => 'global', type => 0, cb_prefix_output => 'prefix_global_output', },
|
||||||
{ name => 'plexes', type => 1, cb_prefix_output => 'prefix_plex_output', message_multiple => 'All plexes are ok', skipped_code => { -10 => 1 } }
|
{ name => 'plexes', type => 3, cb_prefix_output => 'prefix_plex_output', cb_long_output => 'plex_long_output',
|
||||||
|
indent_long_output => ' ', message_multiple => 'All plexes are ok',
|
||||||
|
group => [
|
||||||
|
{ name => 'aggregates', type => 1, cb_prefix_output => 'prefix_aggregate_output', message_multiple => 'aggregates are ok', display_long => 1, skipped_code => { -10 => 1 } }
|
||||||
|
]
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
$self->{maps_counters}->{global} = [
|
$self->{maps_counters}->{global} = [
|
||||||
|
@ -91,7 +113,7 @@ sub set_counters {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
$self->{maps_counters}->{plexes} = [
|
$self->{maps_counters}->{aggregates} = [
|
||||||
{
|
{
|
||||||
label => 'status',
|
label => 'status',
|
||||||
type => 2,
|
type => 2,
|
||||||
|
@ -105,9 +127,11 @@ sub set_counters {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ label => 'resyncing', nlabel => 'plex.resyncing.percentage', set => {
|
{ label => 'resyncing', nlabel => 'plex.resyncing.percentage', set => {
|
||||||
key_values => [ { name => 'resync' }, { name => 'aggregate' }, { name => 'name' } ],
|
key_values => [ { name => 'resync' } ],
|
||||||
output_template => 'resyncing: %.2f %%',
|
output_template => 'resyncing: %.2f %%',
|
||||||
closure_custom_perfdata => $self->can('custom_temp_perfdata')
|
perfdatas => [
|
||||||
|
{ template => '%s', unit => '%', min => 0, max => 100, label_extra_instance => 1 }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -143,6 +167,7 @@ sub manage_selection {
|
||||||
|
|
||||||
$self->{global} = { offline => 0, resyncing => 0, online => 0 };
|
$self->{global} = { offline => 0, resyncing => 0, online => 0 };
|
||||||
$self->{plexes} = {};
|
$self->{plexes} = {};
|
||||||
|
my $instances = {};
|
||||||
my $snmp_result = $options{snmp}->get_table(oid => $oid_plexName, nothing_quit => 1);
|
my $snmp_result = $options{snmp}->get_table(oid => $oid_plexName, nothing_quit => 1);
|
||||||
foreach my $oid (keys %$snmp_result) {
|
foreach my $oid (keys %$snmp_result) {
|
||||||
$oid =~ /^$oid_plexName\.(.*)$/;
|
$oid =~ /^$oid_plexName\.(.*)$/;
|
||||||
|
@ -155,7 +180,8 @@ sub manage_selection {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{plexes}->{$instance} = { name => $name };
|
$instances->{$instance} = $name;
|
||||||
|
$self->{plexes}->{$name} = { name => $name, aggregates => {} };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scalar(keys %{$self->{plexes}}) <= 0) {
|
if (scalar(keys %{$self->{plexes}}) <= 0) {
|
||||||
|
@ -167,12 +193,12 @@ sub manage_selection {
|
||||||
oids => [
|
oids => [
|
||||||
map($_->{oid}, values(%$mapping))
|
map($_->{oid}, values(%$mapping))
|
||||||
],
|
],
|
||||||
instances => [keys %{$self->{plexes}}],
|
instances => [ map($_, keys %$instances) ],
|
||||||
instance_regexp => '^(.*)$'
|
instance_regexp => '^(.*)$'
|
||||||
);
|
);
|
||||||
$snmp_result = $options{snmp}->get_leef();
|
$snmp_result = $options{snmp}->get_leef();
|
||||||
|
|
||||||
foreach (keys %{$self->{plexes}}) {
|
foreach (keys %$instances) {
|
||||||
my $result = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $_);
|
my $result = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $_);
|
||||||
if (defined($self->{option_results}->{filter_aggregate}) && $self->{option_results}->{filter_aggregate} ne '' &&
|
if (defined($self->{option_results}->{filter_aggregate}) && $self->{option_results}->{filter_aggregate} ne '' &&
|
||||||
$result->{aggregate} !~ /$self->{option_results}->{filter_aggregate}/) {
|
$result->{aggregate} !~ /$self->{option_results}->{filter_aggregate}/) {
|
||||||
|
@ -180,9 +206,10 @@ sub manage_selection {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{plexes}->{$_}->{status} = $result->{status};
|
$self->{plexes}->{ $instances->{$_} }->{aggregates}->{ $result->{aggregate} }->{name} = $instances->{$_};
|
||||||
$self->{plexes}->{$_}->{aggregate} = $result->{aggregate};
|
$self->{plexes}->{ $instances->{$_} }->{aggregates}->{ $result->{aggregate} }->{aggregate} = $result->{aggregate};
|
||||||
$self->{plexes}->{$_}->{resync} = $result->{resync} if ($result->{status} eq 'resyncing');
|
$self->{plexes}->{ $instances->{$_} }->{aggregates}->{ $result->{aggregate} }->{status} = $result->{status};
|
||||||
|
$self->{plexes}->{ $instances->{$_} }->{aggregates}->{ $result->{aggregate} }->{resync} = $result->{resync} if ($result->{status} eq 'resyncing');
|
||||||
$self->{global}->{ $result->{status} }++;
|
$self->{global}->{ $result->{status} }++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue