(plugin) apps::protocols::snmp - mode collection add instance splitting system (#4568)

This commit is contained in:
qgarnier 2023-07-19 16:35:50 +02:00 committed by GitHub
parent 2e526c3fdf
commit 7251cad3ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 3 deletions

View File

@ -244,12 +244,28 @@ sub collect_snmp_tables {
foreach (keys %$snmp_result) {
/$used_instance/;
next if (defined($self->{snmp_collected}->{tables}->{ $table->{name} }->{$1}));
$self->{snmp_collected}->{tables}->{ $table->{name} }->{$1} = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $1);
my $instance = $1;
$self->{snmp_collected}->{tables}->{ $table->{name} }->{$instance} = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $instance);
foreach my $sample_name (keys %$sampling) {
$self->{snmp_collected_sampling}->{tables}->{ $table->{name} } = {}
if (!defined($self->{snmp_collected_sampling}->{tables}->{ $table->{name} }));
$self->{snmp_collected_sampling}->{tables}->{ $table->{name} }->{$1}->{$sample_name} =
$self->{snmp_collected}->{tables}->{ $table->{name} }->{$1}->{$sample_name};
$self->{snmp_collected_sampling}->{tables}->{ $table->{name} }->{$instance}->{$sample_name} =
$self->{snmp_collected}->{tables}->{ $table->{name} }->{$instance}->{$sample_name};
}
if (defined($table->{instance_entries})) {
my @matches = ($_ =~ /$table->{instance_entries}->{re}/);
foreach my $entry (@{$table->{instance_entries}->{entries}}) {
next if ($entry->{capture} !~ /^[0-9]+$/);
my $value = '';
if (defined($matches[ $entry->{capture} - 1])) {
$value = $matches[ $entry->{capture} - 1];
}
$self->{snmp_collected}->{tables}->{ $table->{name} }->{$instance}->{ $entry->{name} } = $value;
}
}
}
}
@ -387,6 +403,27 @@ sub collect_snmp_sampling {
$self->{snmp_cache}->write(data => { snmp_collected_sampling => $self->{snmp_collected_sampling} });
}
sub display_variables {
my ($self, %options) = @_;
$self->{output}->output_add(long_msg => '======> variables', debug => 1);
foreach my $tbl_name (keys %{$self->{snmp_collected}->{tables}}) {
my $expr = 'snmp.tables.' . $tbl_name;
foreach my $instance (keys %{$self->{snmp_collected}->{tables}->{$tbl_name}}) {
foreach my $attr (keys %{$self->{snmp_collected}->{tables}->{$tbl_name}->{$instance}}) {
$self->{output}->output_add(
long_msg => sprintf(
' %s = %s',
$expr . ".[$instance].$attr",
$self->{snmp_collected}->{tables}->{$tbl_name}->{$instance}->{$attr}
),
debug => 1
);
}
}
}
}
sub collect_snmp {
my ($self, %options) = @_;
@ -411,7 +448,13 @@ sub collect_snmp {
}
$self->collect_snmp_sampling(snmp => $options{snmp});
if ($self->{output}->is_debug()) {
$self->display_variables();
}
}
sub exist_table_name {
my ($self, %options) = @_;