check_junos, Nagios::Plugin::JUNOS: Moved get_query_object{,_value} to JUNOS.pm.
This commit is contained in:
parent
7cdc9390aa
commit
09bbfe7c82
115
check_junos.pl
115
check_junos.pl
|
@ -155,13 +155,13 @@ sub check_interface
|
||||||
my $opts = shift || {};
|
my $opts = shift || {};
|
||||||
my @targets = @_;
|
my @targets = @_;
|
||||||
|
|
||||||
my $name = get_object_value_by_spec($iface, 'name');
|
my $name = $plugin->get_query_object_value($iface, 'name');
|
||||||
my $admin_status = get_object_value_by_spec($iface, 'admin-status');
|
my $admin_status = $plugin->get_query_object_value($iface, 'admin-status');
|
||||||
|
|
||||||
if ($admin_status !~ m/^up$/) {
|
if ($admin_status !~ m/^up$/) {
|
||||||
if ((grep { $name =~ m/^$_$/; } @targets)
|
if ((grep { $name =~ m/^$_$/; } @targets)
|
||||||
|| ($opts->{'with_description'} &&
|
|| ($opts->{'with_description'} &&
|
||||||
get_object_value_by_spec($iface, 'description'))) {
|
$plugin->get_query_object_value($iface, 'description'))) {
|
||||||
$plugin->add_message(CRITICAL,
|
$plugin->add_message(CRITICAL,
|
||||||
"$name is not enabled");
|
"$name is not enabled");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -169,13 +169,13 @@ sub check_interface
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_object_value_by_spec($iface, 'oper-status') !~ m/^up$/i) {
|
if ($plugin->get_query_object_value($iface, 'oper-status') !~ m/^up$/i) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$plugin->add_perfdata(
|
$plugin->add_perfdata(
|
||||||
label => "'$name-input-bytes'",
|
label => "'$name-input-bytes'",
|
||||||
value => get_object_value_by_spec($iface,
|
value => $plugin->get_query_object_value($iface,
|
||||||
['traffic-statistics', 'input-bytes']),
|
['traffic-statistics', 'input-bytes']),
|
||||||
min => 0,
|
min => 0,
|
||||||
max => undef,
|
max => undef,
|
||||||
|
@ -184,7 +184,7 @@ sub check_interface
|
||||||
);
|
);
|
||||||
$plugin->add_perfdata(
|
$plugin->add_perfdata(
|
||||||
label => "'$name-output-bytes'",
|
label => "'$name-output-bytes'",
|
||||||
value => get_object_value_by_spec($iface,
|
value => $plugin->get_query_object_value($iface,
|
||||||
['traffic-statistics', 'output-bytes']),
|
['traffic-statistics', 'output-bytes']),
|
||||||
min => 0,
|
min => 0,
|
||||||
max => undef,
|
max => undef,
|
||||||
|
@ -196,9 +196,10 @@ sub check_interface
|
||||||
|
|
||||||
sub get_interfaces
|
sub get_interfaces
|
||||||
{
|
{
|
||||||
my $device = shift;
|
my $plugin = shift;
|
||||||
my $opts = shift || {};
|
my $opts = shift || {};
|
||||||
my @targets = @_;
|
my @targets = @_;
|
||||||
|
|
||||||
my @ifaces = ();
|
my @ifaces = ();
|
||||||
my @ret = ();
|
my @ret = ();
|
||||||
|
|
||||||
|
@ -223,7 +224,7 @@ sub get_interfaces
|
||||||
if (scalar(@targets)) {
|
if (scalar(@targets)) {
|
||||||
@ret = grep {
|
@ret = grep {
|
||||||
my $i = $_;
|
my $i = $_;
|
||||||
grep { get_object_value_by_spec($i, 'name') =~ m/^$_$/ } @targets;
|
grep { $plugin->get_query_object_value($i, 'name') =~ m/^$_$/ } @targets;
|
||||||
} @ifaces;
|
} @ifaces;
|
||||||
}
|
}
|
||||||
elsif (! $opts->{'with_description'}) {
|
elsif (! $opts->{'with_description'}) {
|
||||||
|
@ -232,8 +233,8 @@ sub get_interfaces
|
||||||
|
|
||||||
if ($opts->{'with_description'}) {
|
if ($opts->{'with_description'}) {
|
||||||
foreach my $iface (@ifaces) {
|
foreach my $iface (@ifaces) {
|
||||||
my $name = get_object_value_by_spec($iface, 'name');
|
my $name = $plugin->get_query_object_value($iface, 'name');
|
||||||
if (get_object_value_by_spec($iface, 'description')
|
if ($plugin->get_query_object_value($iface, 'description')
|
||||||
&& (! grep { m/^$name$/; } @targets)) {
|
&& (! grep { m/^$name$/; } @targets)) {
|
||||||
push @ret, $iface;
|
push @ret, $iface;
|
||||||
}
|
}
|
||||||
|
@ -241,69 +242,13 @@ sub get_interfaces
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
my @i = map { get_object_value_by_spec($_, 'name'). " => "
|
my @i = map { $plugin->get_query_object_value($_, 'name'). " => "
|
||||||
. get_object_value_by_spec($_, 'oper-status') } @ret;
|
. $plugin->get_query_object_value($_, 'oper-status') } @ret;
|
||||||
$plugin->verbose(3, "Interfaces: " . join(", ", @i));
|
$plugin->verbose(3, "Interfaces: " . join(", ", @i));
|
||||||
}
|
}
|
||||||
return @ret;
|
return @ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_object_by_spec
|
|
||||||
{
|
|
||||||
my $res = shift;
|
|
||||||
my $spec = shift;
|
|
||||||
|
|
||||||
if (! $res) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $spec) {
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! ref($spec)) {
|
|
||||||
$spec = [ $spec ];
|
|
||||||
}
|
|
||||||
|
|
||||||
my $iter = $res;
|
|
||||||
for (my $i = 0; $i < scalar(@$spec) - 1; ++$i) {
|
|
||||||
my $tmp = $iter->getElementsByTagName($spec->[$i]);
|
|
||||||
|
|
||||||
if ((! $tmp) || (! $tmp->item(0))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$iter = $tmp->item(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wantarray) {
|
|
||||||
my @ret = $iter->getElementsByTagName($spec->[scalar(@$spec) - 1]);
|
|
||||||
return @ret;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
my $ret = $iter->getElementsByTagName($spec->[scalar(@$spec) - 1]);
|
|
||||||
if ((! $ret) || (! $ret->item(0))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return $ret->item(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub get_object_value_by_spec
|
|
||||||
{
|
|
||||||
my $res = get_object_by_spec(@_);
|
|
||||||
|
|
||||||
if (! $res) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ref($res) eq "XML::DOM::NodeList") {
|
|
||||||
$res = $res->item(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $res->getFirstChild->getNodeValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub check_interfaces
|
sub check_interfaces
|
||||||
{
|
{
|
||||||
my $plugin = shift;
|
my $plugin = shift;
|
||||||
|
@ -320,7 +265,7 @@ sub check_interfaces
|
||||||
@targets = grep { ! m/^\@with_description$/; } @targets;
|
@targets = grep { ! m/^\@with_description$/; } @targets;
|
||||||
}
|
}
|
||||||
|
|
||||||
my @interfaces = get_interfaces($junos, $opts, @targets);;
|
my @interfaces = get_interfaces($plugin, $opts, @targets);;
|
||||||
|
|
||||||
my $down_count = 0;
|
my $down_count = 0;
|
||||||
my @down_ifaces = ();
|
my @down_ifaces = ();
|
||||||
|
@ -331,7 +276,7 @@ sub check_interfaces
|
||||||
my $have_lag_ifaces = 0;
|
my $have_lag_ifaces = 0;
|
||||||
|
|
||||||
foreach my $iface (@interfaces) {
|
foreach my $iface (@interfaces) {
|
||||||
my $name = get_object_value_by_spec($iface, 'name');
|
my $name = $plugin->get_query_object_value($iface, 'name');
|
||||||
my $status = check_interface($plugin, $iface, $opts, @targets);
|
my $status = check_interface($plugin, $iface, $opts, @targets);
|
||||||
|
|
||||||
if ($status == 0) {
|
if ($status == 0) {
|
||||||
|
@ -350,7 +295,7 @@ sub check_interfaces
|
||||||
|
|
||||||
$have_lag_ifaces = 1;
|
$have_lag_ifaces = 1;
|
||||||
|
|
||||||
my @markers = get_object_by_spec($iface,
|
my @markers = $plugin->get_query_object($iface,
|
||||||
['logical-interface', 'lag-traffic-statistics', 'lag-marker']);
|
['logical-interface', 'lag-traffic-statistics', 'lag-marker']);
|
||||||
|
|
||||||
if (! @markers) {
|
if (! @markers) {
|
||||||
|
@ -359,13 +304,13 @@ sub check_interfaces
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $marker (@markers) {
|
foreach my $marker (@markers) {
|
||||||
my $phy_name = get_object_value_by_spec($marker, 'name');
|
my $phy_name = $plugin->get_query_object_value($marker, 'name');
|
||||||
$phy_name =~ s/\.\d+$//;
|
$phy_name =~ s/\.\d+$//;
|
||||||
|
|
||||||
$plugin->verbose(3, "Quering physical interface '$phy_name' "
|
$plugin->verbose(3, "Quering physical interface '$phy_name' "
|
||||||
. "for $name.");
|
. "for $name.");
|
||||||
|
|
||||||
my @phy_interfaces = get_interfaces($junos, {}, $phy_name);
|
my @phy_interfaces = get_interfaces($plugin, {}, $phy_name);
|
||||||
foreach my $phy_iface (@phy_interfaces) {
|
foreach my $phy_iface (@phy_interfaces) {
|
||||||
if (check_interface($plugin, $phy_iface, {}, $phy_name) == 0) {
|
if (check_interface($plugin, $phy_iface, {}, $phy_name) == 0) {
|
||||||
++$phys_down_count;
|
++$phys_down_count;
|
||||||
|
@ -422,18 +367,18 @@ sub check_chassis_environment
|
||||||
my $items_ok = 0;
|
my $items_ok = 0;
|
||||||
|
|
||||||
my $class = "";
|
my $class = "";
|
||||||
foreach my $item (get_object_by_spec($res, 'environment-item')) {
|
foreach my $item ($plugin->get_query_object($res, 'environment-item')) {
|
||||||
my $name = get_object_value_by_spec($item, 'name');
|
my $name = $plugin->get_query_object_value($item, 'name');
|
||||||
|
|
||||||
if (scalar(@targets) && (! grep { m/^$name$/ } @targets)) {
|
if (scalar(@targets) && (! grep { m/^$name$/ } @targets)) {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_object_value_by_spec($item, 'class')) {
|
if ($plugin->get_query_object_value($item, 'class')) {
|
||||||
$class = get_object_value_by_spec($item, 'class');
|
$class = $plugin->get_query_object_value($item, 'class');
|
||||||
}
|
}
|
||||||
|
|
||||||
my $status = get_object_value_by_spec($item, 'status');
|
my $status = $plugin->get_query_object_value($item, 'status');
|
||||||
|
|
||||||
if ($status eq "Absent") {
|
if ($status eq "Absent") {
|
||||||
if (! scalar(@targets)) {
|
if (! scalar(@targets)) {
|
||||||
|
@ -457,7 +402,7 @@ sub check_chassis_environment
|
||||||
$status);
|
$status);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $temp = get_object_value_by_spec($item, 'temperature');
|
my $temp = $plugin->get_query_object_value($item, 'temperature');
|
||||||
if (! $temp) {
|
if (! $temp) {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
@ -505,21 +450,21 @@ sub check_system_storage
|
||||||
|
|
||||||
my $res = $plugin->send_query('get_system_storage');
|
my $res = $plugin->send_query('get_system_storage');
|
||||||
|
|
||||||
foreach my $re (get_object_by_spec($res,
|
foreach my $re ($plugin->get_query_object($res,
|
||||||
'multi-routing-engine-item')) {
|
'multi-routing-engine-item')) {
|
||||||
my $re_name = get_object_value_by_spec($re, 're-name');
|
my $re_name = $plugin->get_query_object_value($re, 're-name');
|
||||||
|
|
||||||
foreach my $fs (get_object_by_spec($re,
|
foreach my $fs ($plugin->get_query_object($re,
|
||||||
['system-storage-information', 'filesystem'])) {
|
['system-storage-information', 'filesystem'])) {
|
||||||
my $name = get_object_value_by_spec($fs, 'filesystem-name');
|
my $name = $plugin->get_query_object_value($fs, 'filesystem-name');
|
||||||
my $mnt_pt = get_object_value_by_spec($fs, 'mounted-on');
|
my $mnt_pt = $plugin->get_query_object_value($fs, 'mounted-on');
|
||||||
|
|
||||||
if (scalar(@targets) && (! grep { m/^$name$/ } @targets)
|
if (scalar(@targets) && (! grep { m/^$name$/ } @targets)
|
||||||
&& (! grep { m/^$mnt_pt$/ } @targets)) {
|
&& (! grep { m/^$mnt_pt$/ } @targets)) {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $used = get_object_value_by_spec($fs, 'used-percent') + 0;
|
my $used = $plugin->get_query_object_value($fs, 'used-percent') + 0;
|
||||||
|
|
||||||
my $state = $plugin->check_threshold($used);
|
my $state = $plugin->check_threshold($used);
|
||||||
if ($state != OK) {
|
if ($state != OK) {
|
||||||
|
|
|
@ -380,6 +380,64 @@ sub send_query
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub get_query_object
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $res = shift;
|
||||||
|
my $spec = shift;
|
||||||
|
|
||||||
|
if (! $res) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $spec) {
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! ref($spec)) {
|
||||||
|
$spec = [ $spec ];
|
||||||
|
}
|
||||||
|
|
||||||
|
my $iter = $res;
|
||||||
|
for (my $i = 0; $i < scalar(@$spec) - 1; ++$i) {
|
||||||
|
my $tmp = $iter->getElementsByTagName($spec->[$i]);
|
||||||
|
|
||||||
|
if ((! $tmp) || (! $tmp->item(0))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$iter = $tmp->item(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wantarray) {
|
||||||
|
my @ret = $iter->getElementsByTagName($spec->[scalar(@$spec) - 1]);
|
||||||
|
return @ret;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my $ret = $iter->getElementsByTagName($spec->[scalar(@$spec) - 1]);
|
||||||
|
if ((! $ret) || (! $ret->item(0))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return $ret->item(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_query_object_value
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $res = $self->get_query_object(@_);
|
||||||
|
|
||||||
|
if (! $res) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ref($res) eq "XML::DOM::NodeList") {
|
||||||
|
$res = $res->item(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $res->getFirstChild->getNodeValue;
|
||||||
|
}
|
||||||
|
|
||||||
sub verbose
|
sub verbose
|
||||||
{
|
{
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
Loading…
Reference in a new issue