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

Compare commits

..

16 Commits

Author SHA1 Message Date
Tomas Edwardsson
3606e03170 Automatic commit of package [nagios-okplugin-check_uptime] release [1.0.2-1]. 2013-12-30 20:40:11 +00:00
Tomas Edwardsson
63f285a037 Added Fedora 20 2013-12-30 20:31:22 +00:00
Tomas Edwardsson
be7032f4e4 Added fedora 19 2013-12-30 20:30:35 +00:00
Pall Sigurdsson
d259894a9d spec file added 2013-12-06 15:56:44 +00:00
Pall Sigurdsson
6d0ce2c869 Allow -L without -H provided as well 2013-12-06 15:53:59 +00:00
Pall Sigurdsson
4aae5f6327 README updated 2013-12-06 15:53:42 +00:00
Pall Sigurdsson
2112847349 test script added 2013-12-06 15:49:07 +00:00
Pall Sigurdsson
f382acb1a6 lsmgrp added 2013-12-06 15:48:55 +00:00
Pall Sigurdsson
d7efe24a34 fix typos 2013-12-06 14:19:23 +00:00
Pall Sigurdsson
72f2c0de16 added support for more queries 2013-12-06 14:16:57 +00:00
Pall Sigurdsson
7c41c09b2f enclosure battery support added 2013-12-06 13:58:44 +00:00
Pall Sigurdsson
f87963f554 switched to semicolon format. lsdrive added 2013-12-06 13:48:39 +00:00
Pall Sigurdsson
38a207065e Refactor - support for lsdrive added 2013-11-19 15:59:36 +00:00
Pall Sigurdsson
831156308b check_storwize.py added
Experimental!

replaces check_storwize.sh

only lsarray and lsmdiskgrp are supported for now
2013-11-19 11:18:02 +00:00
Tomas Edwardsson
356bb2c762 Renamed to markdown 2013-10-27 23:05:51 +00:00
Tomas Edwardsson
bc15b653b1 Added examples and documentation 2013-10-27 22:57:43 +00:00
11 changed files with 424 additions and 5 deletions

View File

@@ -1,3 +0,0 @@
check_ipa
Various checks for IPA http://freeipa.org/ server

19
check_ipa/README.md Normal file
View File

@@ -0,0 +1,19 @@
check_ipa_replication
=====================
You need some configuration for this plugin to have access to replication
information.
Allow anonymous read to replication information
-----------------------------------------------
You will need to do this for every IPA server, masters and replicas
```
ldapmodify -x -D "cn=directory manager" -W -f grant_anonymous_replication_view.ldif -h ipa-host.example.com
```
Configure the directory manager credentials
-------------------------------------------
NOT RECOMENDED, you can use -D and -w with the directory manager credentials
and the plugin will work as expected.

View File

@@ -0,0 +1,4 @@
dn: cn="dc=mr,dc=lan",cn=mapping tree,cn=config
changetype: modify
add: aci
aci: (targetattr=*)(targetfilter="(|(objectclass=nsds5replicationagreement)(objectclass=nsDSWindowsReplicationAgreement))")(version 3.0; aci "permission:Read Replication Agreements"; allow (read, search, compare) groupdn = "ldap:///anyone";)

View File

@@ -37,6 +37,7 @@ rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%doc README
%doc grant_anonymous_replication_view.ldif
%{_libdir}/nagios/plugins/*
%config(noreplace) %{_sysconfdir}/nrpe.d/check_ipa.cfg

77
check_storwize/README.md Normal file
View File

@@ -0,0 +1,77 @@
check_storwize.py
=================
Nagios plugin to check the status of a remote Storwize disk array.
This plugin is designed to be syntactically compatible with check_storwize.sh from nagios exchange
with the following differences:
- Outputs performance data
- GPL License
- Written in python
- More stable plugin results when disk array is broken
USAGE
=============
```
python check_storwize.py --help
Usage: check_storwize.py [options]
Options:
-h, --help show this help message and exit
-H HOSTNAME, -M HOSTNAME, --hostname=HOSTNAME
Hostname or ip address
-U USER, --user=USER Log in as this user to storwize
-Q QUERY, --query=QUERY
Query to send to storwize (see also -L)
-L, --list-queries List of valid queries
--test Run this plugin in test mode
Generic Options:
--timeout=50 Exit plugin with unknown status after x seconds
--threshold=range Thresholds in standard nagios threshold format
--th=range Same as --threshold
--extra-opts=@file Read options from an ini file. See
http://nagiosplugins.org/extra-opts
-d, --debug Print debug info
Display Options:
-v, --verbose Print more verbose info
--no-perfdata Dont show any performance data
--no-longoutput Hide longoutput from the plugin output (i.e. only
display first line of the output)
--no-summary Hide summary from plugin output
--get-metrics Print all available metrics and exit (can be combined
with --verbose)
--legacy Deprecated, do not use
```
EXAMPLES
========
```
# List array status
python check_storwize -H remote_host -U username -Q lsarray
# List vdisk status
python check_storwize -H remote_host -U username -Q lsarray
```
Valid modes
===========
The following is a list of valid modes (at the time of this writing). For an up-to-date list consult check_storwize -L
* lsarray
* lsdrive
* lsenclosurebattery
* lsenclosurecanister
* lsenclosurepsu
* lsenclosureslot
* lsenclosure
* lsmdiskgrp
* lsmdskgrp
* lsmgrp
* lsrcrelationship
* lsvdisk

View File

@@ -0,0 +1,205 @@
#!/usr/bin/env python
from pynag.Plugins import PluginHelper, ok, warning, critical, unknown
from pynag.Utils import runCommand
from collections import namedtuple
valid_queries = "lsarray lsdrive lsenclosurebattery lsenclosurecanister lsenclosurepsu lsenclosureslot lsenclosure lsmdiskgrp lsmdskgrp lsmgrp lsrcrelationship lsvdisk"
p = PluginHelper()
p.add_option("-H", "--hostname", '-M', help="Hostname or ip address", dest="hostname")
p.add_option("-U", "--user", help="Log in as this user to storwize", dest="user", default="nagios")
p.add_option("-Q", "--query", help="Query to send to storwize (see also -L)", dest="query", default="lsarray")
p.add_option("-L", "--list-queries", help="List of valid queries", dest="list_queries", action="store_true")
p.add_option("--test", help="Run this plugin in test mode", dest="test", action="store_true")
p.parse_arguments()
if p.options.list_queries is True:
p.parser.error("Valid Queries: %s" % valid_queries)
if not p.options.hostname:
p.parser.error("Required options -H is missing")
if p.options.query not in valid_queries.split():
p.parser.error("%s does not look like a valid query. Use -L for a list of valid queries" % p.options.query)
query = p.options.query
# Connect to remote storwize and run a connect
def run_query():
""" Connect to a remote storwize box and run query """
command = "ssh %s@%s %s -delim ':'" % (p.options.user, p.options.hostname, p.options.query)
if p.options.test:
command = "cat %s.txt" % (p.options.query)
return_code, stdout, stderr = runCommand(command)
if return_code != 0:
p.status(unknown)
p.add_summary("Got error %s when trying to log into remote storwize box" % return_code)
p.add_long_output("\ncommand:\n===============\n%s" % command)
p.add_long_output("\nStandard output:\n==============\n%s" % (stdout))
p.add_long_output("\nStandard stderr:\n==============\n%s" % (stderr))
p.exit()
if stderr:
p.status(unknown)
p.add_summary("Error when connecting to storwize: %s" % stderr)
p.exit()
# Parse the output of run query and return a list of "rows"
lines = stdout.splitlines()
top_line = lines.pop(0)
headers = top_line.split(':')
Row = namedtuple('Row', ' '.join(headers))
rows = []
for i in lines:
i = i.strip()
columns = i.split(':')
row = Row(*columns)
rows.append(row)
return rows
def check_lsmdiskgrp():
p.add_summary("%s diskgroups found" % (len(rows)))
p.add_metric("number of groups", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("group %s is %s." % (row.name, row.status))
p.add_long_output("%s: used: %s out of %s" % (row.name, row.used_capacity, row.capacity))
# Add a performance metric
metric_name = "%s_capacity" % row.name
p.add_metric(metric_name, value=row.used_capacity, max=row.capacity)
def check_lsdrive():
p.add_summary("%s drives found" % (len(rows)))
p.add_metric("number of drives", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("drive %s is %s" % (row.id, row.status))
def check_lsmgrp():
p.add_summary("%s groups found" % (len(rows)))
p.add_metric("number of groups", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("group %s is %s" % (row.name, row.status))
def check_lsenclosurebattery():
p.add_summary("%s batteries found" % (len(rows)))
p.add_metric("number of batteries", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("battery %s:%s is %s" % (row.enclosure_id, row.battery_id, row.status))
def check_lsenclosurecanister():
p.add_summary("%s canisters found" % (len(rows)))
p.add_metric("number of canisters", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("canister %s:%s is %s" % (row.enclosure_id, row.canister_id, row.status))
def check_lsenclosurepsu():
p.add_summary("%s psu found" % (len(rows)))
p.add_metric("number of psu", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("psu %s:%s is %s" % (row.enclosure_id, row.PSU_id, row.status))
def check_lsenclosure():
p.add_summary("%s enclosures found" % (len(rows)))
p.add_metric("number of enclosures", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("enclosure %s is %s" % (row.id, row.status))
def check_lsenclosureslot():
p.add_summary("%s slots found" % (len(rows)))
p.add_metric("number of slots", len(rows))
for row in rows:
if row.port_1_status != 'online':
p.status(critical)
p.add_summary("port1 on slot %s:%s is %s" % (row.enclosure_id, row.slot_id, row.port_1_status))
if row.port_2_status != 'online':
p.status(critical)
p.add_summary("port2 on slot %s:%s is %s" % (row.enclosure_id, row.slot_id, row.port_2_status))
def check_lsrcrelationship():
p.add_summary("%s cluster relationships found" % (len(rows)))
p.add_metric("number of relationships", len(rows))
for row in rows:
if row.state != 'consistent_synchronized':
p.status(critical)
p.add_summary("%s is %s" % (row.consistency_group_name, row.state))
def check_lsvdisk():
p.add_summary("%s disks found" % (len(rows)))
p.add_metric("number of disks", len(rows))
for row in rows:
if row.status != 'online':
p.status(critical)
p.add_summary("disk %s is %s" % (row.name, row.status))
def check_lsarray():
p.add_summary("%s arrays found" % (len(rows)))
p.add_metric("number of arrays", len(rows))
for row in rows:
if row.status != 'online':
p.add_summary("array %s is %s." % (row.mdisk_name, row.status))
p.status(critical)
if row.raid_status != 'online':
p.add_summary("array %s has raid status %s." % (row.mdisk_name, row.raid_status))
p.status(critical)
# Add some performance metrics
metric_name = row.mdisk_name + "_capacity"
p.add_metric(metric_name, value=row.capacity)
# Run our given query, and parse the output
rows = run_query()
if query == 'lsmdiskgrp':
check_lsmdiskgrp()
elif query == 'lsarray':
check_lsarray()
elif query == 'lsdrive':
check_lsdrive()
elif query == 'lsvdisk':
check_lsvdisk()
elif query == 'lsmgrp':
check_lsmgrp()
elif query == 'lsenclosure':
check_lsenclosure()
elif query == 'lsenclosurebattery':
check_lsenclosurebattery()
elif query == 'lsenclosurecanister':
check_lsenclosurecanister()
elif query == 'lsenclosurepsu':
check_lsenclosurepsu()
elif query == 'lsrcrelationship':
check_lsrcrelationship()
elif query == 'lsenclosureslot':
check_lsenclosureslot()
else:
p.status(unknown)
p.add_summary("unsupported query: %s. See -L for list of valid queries" % query)
p.exit()
# Check metrics and exit
p.check_all_metrics()
p.exit()

View File

@@ -0,0 +1,50 @@
%define debug_package %{nil}
%define plugin check_storwize
%define packager Pall Sigurdsson <palli@opensource.is>
Summary: A Nagios plugin to check status of a storwize disk array
Name: nagios-okplugin-%{plugin}
Version: 1.0.0
Release: 1%{?dist}
License: GPLv3+
Group: Applications/System
URL: https://github.com/opinkerfi/nagios-plugins/tree/master/%{plugin}
Source0: https://github.com/opinkerfi/nagios-plugins/tree/master/%{plugin}/releases/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Packager: %{packager}
BuildArch: noarch
Requires: pynag
%description
Checks updates via PackageKit and can notify on various different situations
%prep
%setup -q
%build
%install
rm -rf %{buildroot}
install -D -p -m 0755 %{plugin} %{buildroot}%{_libdir}/nagios/plugins/%{plugin}
mkdir -p %{buildroot}%{_sysconfdir}/nrpe.d
sed "s^/usr/lib64^%{_libdir}^g" nrpe.d/%{plugin}.cfg > %{buildroot}%{_sysconfdir}/nrpe.d/%{plugin}.cfg
# Temporary fix for selinux
chcon system_u:object_r:nagios_unconfined_plugin_exec_t:s0 %{plugin} %{buildroot}%{_libdir}/nagios/plugins/%{plugin}
%clean
rm -rf %{buildroot}
%post
/sbin/service nrpe status &> /dev/null && /sbin/service nrpe reload || :
%files
%defattr(-,root,root,-)
%doc README.md
%{_libdir}/nagios/plugins/*
%config(noreplace) %{_sysconfdir}/nrpe.d/%{plugin}.cfg
%changelog
* Fri Dec 6 2013 Pall Sigurdsson 1.0.0-1
- Initial Packaging

33
check_storwize/test.sh Normal file
View File

@@ -0,0 +1,33 @@
CURRENT_PATH=`pwd`
cd $CURRENT_PATH/tests/ok
tests=`echo * | sed 's/.txt//g'`
for i in $tests ; do
command="python $CURRENT_PATH/check_storwize.py --test -H testhost -U nagios -Q $i"
$command > /dev/null 2>&1
RESULT=$?
if [ $RESULT -ne 0 ]; then
echo "FAIL"
echo "cd `pwd`"
echo "Command: $command"
else
echo "$i working as expected"
fi
done
cd $CURRENT_PATH/tests/critical
tests=`echo * | sed 's/.txt//g'`
for i in $tests ; do
command="python $CURRENT_PATH/check_storwize.py --test -H testhost -U nagios -Q $i"
$command > /dev/null 2>&1
RESULT=$?
if [ $RESULT -ne 2 ]; then
echo "FAIL"
echo "cd `pwd`"
echo "Command: $command"
else
echo "$i working as expected"
fi
done

View File

@@ -2,7 +2,7 @@
Summary: A Nagios plugin to check uptime of a remote host via NRPE
Name: nagios-okplugin-check_uptime
Version: 1.0.1
Version: 1.0.2
Release: 1%{?dist}
License: GPLv2+
Group: Applications/System
@@ -41,6 +41,9 @@ rm -rf %{buildroot}
/etc/nrpe.d/check_uptime.cfg
%changelog
* Mon Dec 30 2013 Tomas Edwardsson <tommi@tommi.org> 1.0.2-1
- Updated tag for build with newer tito
* Mon Mar 12 2012 Pall Sigurdsson <palli@opensource.is> 1.0.1-1
- new package built with tito

View File

@@ -1 +1 @@
1.0.1-1 check_uptime/
1.0.2-1 check_uptime/

View File

@@ -1,3 +1,33 @@
# Fedora FC20
[test-fc20-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = fedora-20-x86_64
builder.test = 1
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/fedora20/x86_64/
[production-fc20-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = fedora-20-x86_64
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/fedora20/x86_64/
# Fedora FC19
[test-fc19-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = fedora-19-x86_64
builder.test = 1
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/testing/fedora19/x86_64/
[production-fc19-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = fedora-19-x86_64
rsync = tito@opensource.is:/var/www/sites/opensource.ok.is/repo/fedora19/x86_64/
# Fedora FC18
[test-fc18-x86_64]
releaser = tito.release.YumRepoReleaser