1
0
mirror of https://github.com/opinkerfi/nagios-plugins.git synced 2026-02-13 02:20:57 +01:00

Compare commits

...

6 Commits

Author SHA1 Message Date
Tomas Edwardsson
f23ac92b64 Automatic commit of package [nagios-okplugin-check_hpasm] release [4.1.4-1]. 2014-10-03 10:27:52 +00:00
Tomas Edwardsson
7ab36cbc66 Added rhel7 releaser 2014-09-03 07:57:38 +00:00
Tomas Edwardsson
bf0edd899b Regex filtering broke disk checks 2014-08-28 11:33:30 +00:00
Tomas Edwardsson
9060a171f0 Revert to working copy. 2014-06-26 13:06:45 +00:00
Tomas Edwardsson
1420e93c5c Added lvm mirror checks 2014-06-26 13:04:50 +00:00
Tomas Edwardsson
cbcaa14997 Add metrics without updates for known types
Closes #13
2014-06-21 16:51:15 +00:00
6 changed files with 147 additions and 6 deletions

View File

@@ -251,10 +251,10 @@ if ($ret > 1) {
#
foreach my $l (@output) {
next if ($l =~ m/$opt_R/);
next if ($l !~ m/$opt_r/);
next if ($l =~ m/$exclude_re/);
if($l =~ /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+([\/\w\d\.-]+)$/) {
next if ($l =~ m/$opt_R/);
next if ($l !~ m/$opt_r/);
next if ($l =~ m/$exclude_re/);
my ($s,$u,$f,$pu,$d) = ($1,$2,$3,$4,$5);
$alldisks{$d}->{pused} = $pu;
$alldisks{$d}->{pfree} = 100-$pu;
@@ -268,10 +268,10 @@ foreach my $l (@output) {
# This is the output of df.exe on Windows
#C:\ 9097126 6094081 3003045 67% argon-c (ntfs)
else {
if ($l =~ /(\w)\:\\\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+(.*)$/) {
next if ($l =~ m/$opt_R/);
next if ($l !~ m/$opt_r/);
next if ($l =~ m/$exclude_re/);
if ($l =~ /(\w)\:\\\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+(.*)$/) {
my ($d,$s,$u,$f,$pu) = ("/$1",$2,$3,$4,$5);
$alldisks{$d}->{pused} = $pu;
$alldisks{$d}->{pfree} = 100-$pu;

View File

@@ -2,7 +2,7 @@
Summary: A Nagios plugin to check HP Hardware Status
Name: nagios-okplugin-check_hpasm
Version: 4.1.3
Version: 4.1.4
Release: 1%{?dist}
License: GPLv2+
Group: Applications/System
@@ -45,6 +45,9 @@ rm -rf %{buildroot}
/etc/nrpe.d/check_hpasm.cfg
%changelog
* Fri Oct 03 2014 Tomas Edwardsson <tommi@tommi.org> 4.1.4-1
- hpasm invalid nrpe check command name (tommi@tommi.org)
* Thu May 15 2014 Tomas Edwardsson <tommi@tommi.org> 4.1.3-1
- new package built with tito

View File

@@ -0,0 +1,117 @@
#!/usr/bin/python
from pynag.Plugins import simple as Plugin, WARNING, CRITICAL, UNKNOWN, OK
from subprocess import Popen, PIPE
import os
def main():
global plugin
plugin = Plugin(must_threshold=False)
plugin.add_arg("l", "logical-volume",
"Comma seperated list of VG/LV, eg vg00/data,vg00/snap",
required=False)
plugin.add_arg("V", "volume-group",
"Comma seperated list of VG, eg vg00,vg01",
required=False)
plugin.add_arg("a", "check-all", "Check all LVs", required=False,
action="store_true")
plugin.activate()
lvs = plugin["logical-volume"] and plugin["logical-volume"].split(
",") or []
vgs = plugin["volume-group"] and plugin["volume-group"].split(",") or []
if not lvs and not vgs and not plugin['check-all']:
plugin.parser.error(
"Either logical-volume or volume-group must be specified")
elif plugin['check-all'] and ( lvs or vgs ):
plugin.parser.error(
"Mixing check-all and logical-volume or volume-group does not make sense")
check_mirror(lvs, vgs, plugin['check-all'], plugin['host'])
(code, message) = (plugin.check_messages(joinallstr="\n"))
plugin.nagios_exit(code, message)
def check_mirror(lv_list, vg_list, check_all, hostname):
# Ensure the right locale for text parsing
"""
:rtype : None
"""
# Change lang setting for string consitency
env = os.environ.copy()
env['LC_ALL'] = 'C'
# Remote execution
if hostname:
cmd = ['check_nrpe', '-H', hostname, '-c', 'get_lvm_mirrors']
# Local
else:
cmd = ["lvs", "--separator", ";", "-o",
"vg_name,lv_name,lv_attr,copy_percent"]
# Execute lvs
ret = None
lvs_output = None
try:
lvs = Popen(cmd, stdout=PIPE, shell=False, env=env)
ret = lvs.wait()
lvs_output = lvs.stdout.readlines()
except Exception, e:
plugin.nagios_exit(UNKNOWN, "Unable to execute lvs: %s" % (e))
if ret != 0:
plugin.nagios_exit(CRITICAL,
"lvs execution failed, return code %i" % (ret))
all_lvs = []
all_vgs = []
# Loop through lvs output
linenumber = 0
for l in lvs_output:
linenumber += 1
try:
vg_name, lv_name, lv_attr, copy_percent = l.strip().split(";")
except ValueError as error:
plugin.add_message(UNKNOWN,
"Unable to parse lvs line %i: %s\n%s" % (
linenumber, error, l))
continue
all_lvs.append("%s/%s" % (vg_name, lv_name))
if vg_name not in all_vgs:
all_vgs.append(vg_name)
if check_all or "%s/%s" % (
vg_name, lv_name) in lv_list or vg_name in vg_list:
if lv_attr[0] != "m" and lv_attr[0] != "M":
plugin.add_message(CRITICAL,
"LV %s/%s not mirrored" % (vg_name, lv_name))
elif lv_attr[2] != "a":
plugin.add_message(CRITICAL,
"LV %s/%s not active" % (vg_name, lv_name))
elif lv_attr[5] != "o":
plugin.add_message(CRITICAL,
"LV %s/%s not open" % (vg_name, lv_name))
elif float(copy_percent or 0) < 100:
plugin.add_message(WARNING, "LV %s/%s Copy Percent %s" % (
vg_name, lv_name, copy_percent))
else:
plugin.add_message(OK, "LV %s/%s functioning" % (vg_name, lv_name))
# Find lvs that were specified in cmd line but were not found via lvs
for v in vg_list:
if v not in all_vgs:
plugin.add_message(CRITICAL, "VG %s not found" % (v))
# Find lvs that were specified in cmd line but were not found via lvs
for l in lv_list:
if l not in all_lvs:
plugin.add_message(CRITICAL, "LV %s not found" % (l))
if __name__ == "__main__":
main()

View File

@@ -45,6 +45,11 @@ def main():
for pkg in pkg_updates[update_type]:
p.add_long_output(" %s" % pkg)
for m in known_types:
m = m.lower()
if not p.get_metric(m):
p.add_metric(m, 0)
p.check_all_metrics()
p.exit()

View File

@@ -1 +1 @@
4.1.3-1 check_hpasm/
4.1.4-1 check_hpasm/

View File

@@ -1,3 +1,19 @@
# RHEL 7 Production
[production-el7-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = epel-7-x86_64
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/rhel7/x86_64/
# RHEL 7 Test
[test-el7-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = epel-7-x86_64
builder.test = 1
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/rhel7/x86_64/
# RHEL 6 Production
[production-el6-x86_64]
releaser = tito.release.YumRepoReleaser