Skip to content

Commit 59fbac3

Browse files
authored
git - Merge pull request #21 from DinoTools/fix_issue_with_excludes
src - Fix issue with excludes (fixes: #17)
2 parents 8fbe5cb + 1b8425a commit 59fbac3

File tree

1 file changed

+55
-20
lines changed

1 file changed

+55
-20
lines changed

check_haproxy

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,12 @@ use constant {
147147
DEBUG_MSG_THRESHOLDS => 'found %d (limit %d); thresholds are %s (warn) %s (crit)'
148148
};
149149

150-
my $REGEX_PARSE_VALUES = '([ud]?),' .
150+
my $REGEX_PARSE_VALUES = '([udx]?)' .
151+
'(?:,' .
151152
'(?:(?:((?:0?\.)?[0-9]+|[0-9]+)(%)?|)' .
152153
'(?:,(?:((?:0?\.)?[0-9]+|[0-9]+)(%)?|)' .
153154
'(?:,(?:((?:0?\.)?[0-9]+|[0-9]+)(%)?|)' .
154-
'(?:,(?:((?:0?\.)?[0-9]+|[0-9]+)(%)?|))?)?)?)?';
155+
'(?:,(?:((?:0?\.)?[0-9]+|[0-9]+)(%)?|))?)?)?)?)?';
155156
BEGIN {
156157
eval {
157158
require Monitoring::Plugin;
@@ -456,36 +457,70 @@ sub build_checks {
456457
$override
457458
);
458459

459-
next unless ($override =~ /([a-zA-Z0-9-_:.]+):$REGEX_PARSE_VALUES/);
460+
my (
461+
$override_name,
462+
$override_state,
463+
$override_be_warn,
464+
$override_be_warn_unit,
465+
$override_be_crit,
466+
$override_be_crit_unit,
467+
$override_limit_warn,
468+
$override_limit_warn_unit,
469+
$override_limit_crit,
470+
$override_limit_crit_unit
471+
);
472+
my @matches;
473+
if (@matches = $override =~ /^([a-zA-Z0-9-_:.]+):${REGEX_PARSE_VALUES}$/) {
474+
$override_name = shift @matches;
475+
(
476+
$override_state,
477+
$override_be_warn,
478+
$override_be_warn_unit,
479+
$override_be_crit,
480+
$override_be_crit_unit,
481+
$override_limit_warn,
482+
$override_limit_warn_unit,
483+
$override_limit_crit,
484+
$override_limit_crit_unit
485+
) = @matches;
486+
} else {
487+
wrap_exit(
488+
UNKNOWN,
489+
sprintf(
490+
'Unable to parse override "%s"',
491+
$override
492+
)
493+
);
494+
}
460495

461-
next unless exists $data{$1};
496+
next unless exists $data{$override_name};
462497

463-
if ($data{$1}{'type'} eq TYPE_BACKEND) {
464-
$checks{$1}{'state'} = $2 if $2 and ($2 eq 'u' or $2 eq 'd' or $2 eq 'x');
465-
if (looks_like_number($3)) {
466-
$checks{$1}{'be_warn'} = (defined($4) and $4 eq '%') ? $3 / 100 : $3;
498+
if ($data{$override_name}{'type'} eq TYPE_BACKEND) {
499+
$checks{$override_name}{'state'} = $override_state if $override_state and ($override_state eq 'u' or $override_state eq 'd' or $override_state eq 'x');
500+
if (looks_like_number($override_be_warn)) {
501+
$checks{$override_name}{'be_warn'} = (defined($override_be_warn_unit) and $override_be_warn_unit eq '%') ? $override_be_warn / 100 : $override_be_warn;
467502
}
468-
if (looks_like_number($5)) {
469-
$checks{$1}{'be_crit'} = (defined($6) and $$6 eq '%') ? $5 / 100 : $5;
503+
if (looks_like_number($override_be_crit)) {
504+
$checks{$override_name}{'be_crit'} = (defined($override_be_crit_unit) and $override_be_crit_unit eq '%') ? $override_be_crit / 100 : $override_be_crit;
470505
}
471506
}
472507

473-
if (looks_like_number($7)) {
474-
$checks{$1}{'limit_warn'} = (defined($8) and $$8 eq '%') ? $7 / 100 : $7;
508+
if (looks_like_number($override_limit_warn)) {
509+
$checks{$override_name}{'limit_warn'} = (defined($override_limit_warn_unit) and $override_limit_warn_unit eq '%') ? $override_limit_warn / 100 : $override_limit_warn;
475510
}
476-
if (looks_like_number($9)) {
477-
$checks{$1}{'limit_crit'} = (defined($10) and $$10 eq '%') ? $9 / 100 : $9;
511+
if (looks_like_number($override_limit_crit)) {
512+
$checks{$override_name}{'limit_crit'} = (defined($override_limit_crit_unit) and $override_limit_crit_unit eq '%') ? $override_limit_crit / 100 : $override_limit_crit;
478513
}
479514

480515
_debug(
481516
'build_checks',
482517
'setting override for %s to %s,%.2f,%.2f,%.2f,%.2f',
483-
$1,
484-
$checks{$1}{'state'},
485-
$checks{$1}{'be_warn'},
486-
$checks{$1}{'be_crit'},
487-
$checks{$1}{'limit_warn'},
488-
$checks{$1}{'limit_crit'},
518+
$override_name,
519+
$checks{$override_name}{'state'},
520+
$checks{$override_name}{'be_warn'},
521+
$checks{$override_name}{'be_crit'},
522+
$checks{$override_name}{'limit_warn'},
523+
$checks{$override_name}{'limit_crit'},
489524
);
490525
}
491526

0 commit comments

Comments
 (0)