Compare commits
1 commit
main
...
stable-0.9
Author | SHA1 | Date | |
---|---|---|---|
caebe508c7 |
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,3 +1,8 @@
|
|||
*.pyc
|
||||
.*.swp
|
||||
|
||||
debian/files
|
||||
debian/*.log
|
||||
debian/*.substvars
|
||||
debian/mymonplugins
|
||||
|
||||
|
|
30
README.md
30
README.md
|
@ -1,30 +0,0 @@
|
|||
MyMonPlugins
|
||||
|
||||
This is the old master branch! New development takes place in the "main" branch!
|
||||
|
||||
Default branch will change in the near future.
|
||||
|
||||
---
|
||||
|
||||
(c) 2010-2011 by Sven Velt and team(ix) GmbH, Nuernberg, Germany
|
||||
sv@teamix.net
|
||||
(c) 2016 by Sven Velt, Germany
|
||||
sven-mymonplugins@velt.biz
|
||||
|
||||
This file is part of "velt.biz - My Monitoring Plugins"
|
||||
a fork of "team(ix) Monitoring Plugins" in 2015
|
||||
URL: https://gogs.velt.biz/velt.biz/MyMonPlugins/
|
||||
|
||||
This file is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published
|
||||
by the Free Software Foundation, either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this file. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
210
check_xbps.py
210
check_xbps.py
|
@ -1,210 +0,0 @@
|
|||
#!/usr/bin/env python2
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
#####################################################################
|
||||
# (c) 2016-2017 by Sven Velt, Germany #
|
||||
# sven-mymonplugins@velt.biz #
|
||||
# #
|
||||
# This file is part of "velt.biz - My Monitoring Plugins" #
|
||||
# a fork of "team(ix) Monitoring Plugins" in 2015 #
|
||||
# URL: https://gogs.velt.biz/velt.biz/MyMonPlugins/ #
|
||||
# #
|
||||
# This file is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published #
|
||||
# by the Free Software Foundation, either version 2 of the License, #
|
||||
# or (at your option) any later version. #
|
||||
# #
|
||||
# This file is distributed in the hope that it will be useful, but #
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this file. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#####################################################################
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
try:
|
||||
from monitoringplugin import MonitoringPlugin
|
||||
except ImportError:
|
||||
print '=========================='
|
||||
print 'AIKS! Python import error!'
|
||||
print '==========================\n'
|
||||
print 'Could not find "monitoringplugin.py"!\n'
|
||||
print 'Did you download "%s"' % os.path.basename(sys.argv[0])
|
||||
print 'without "monitoringplugin.py"?\n'
|
||||
print 'Please go back to'
|
||||
print 'https://gogs.velt.biz/velt.biz/MyMonPlugins and download it,'
|
||||
print 'or even better:'
|
||||
print 'get a full archive at http://gogs.velt.biz/velt.biz/MyMonPlugins/releases'
|
||||
print 'or a master snapshot at http://gogs.velt.biz/velt.biz/MyMonPlugins/archive/master.tar.gz\n'
|
||||
sys.exit(127)
|
||||
|
||||
|
||||
plugin = MonitoringPlugin(
|
||||
pluginname='check_xbps',
|
||||
tagforstatusline='XBPS',
|
||||
description='Check XBPS package manager for updates',
|
||||
version='0.1',
|
||||
)
|
||||
|
||||
plugin.add_cmdlineoption('-P', '--path-xbps-install', 'xbps_install', 'full path to xbps-install', default='/usr/bin/xbps-install')
|
||||
plugin.add_cmdlineoption('-S', '--sync-repo-index', 'sync_repo_index', 'sync repository index files at startup', default=False, action='store_true')
|
||||
plugin.add_cmdlineoption('', '--ignore-sync-failure', 'fail_on_sync_failure', 'ignore repo index sync failures', default=True, action='store_false')
|
||||
plugin.add_cmdlineoption('', '--sudo', 'sudo', 'call "xbps-install" with sudo', default=False, action='store_true')
|
||||
|
||||
plugin.add_cmdlineoption('', '--mymonplugins-testmode', 'mymonplugins_testmode', None, default=False, action='store_true')
|
||||
|
||||
plugin.parse_cmdlineoptions()
|
||||
|
||||
##############################################################################
|
||||
##### Testmode
|
||||
|
||||
if plugin.options.mymonplugins_testmode:
|
||||
mymonplugins_testmode = {}
|
||||
|
||||
mymonplugins_testmode['xbps-install -S'] = '''[*] Updating `https://repo.voidlinux.eu/current/x86_64-repodata' ...
|
||||
'''.split('\n')
|
||||
|
||||
mymonplugins_testmode['xbps-install -un'] = '''elementary-1.17.1_1 remove x86_64 https://repo.voidlinux.eu/current 19821495 12302924
|
||||
bash-4.3.046_2 update x86_64 https://repo.voidlinux.eu/current 5019665 998440
|
||||
libllvm3.9-3.9.0_2 install x86_64 https://repo.voidlinux.eu/current 51052672 12480860
|
||||
linux4.7-4.7.4_1 install x86_64 https://repo.voidlinux.eu/current 61839987 55203908
|
||||
linux-4.7_1 update x86_64 https://repo.voidlinux.eu/current 624
|
||||
linux4.6-4.6.7_1 update x86_64 https://repo.voidlinux.eu/current 60995961 54434936
|
||||
lxc-2.0.4_1 update x86_64 https://repo.voidlinux.eu/current 1837102 468024'''.split('\n')
|
||||
|
||||
##############################################################################
|
||||
|
||||
def run_command(cmdline, needs_sudo=False):
|
||||
tstart = time.time()
|
||||
if needs_sudo and plugin.options.sudo:
|
||||
new = ['sudo', '-n', '--']
|
||||
new.extend(cmdline)
|
||||
cmdline = new
|
||||
plugin.verbose(1, 'Running command line: %s' % subprocess.list2cmdline(cmdline))
|
||||
try:
|
||||
cmd = subprocess.Popen(
|
||||
cmdline,
|
||||
stdout = subprocess.PIPE,
|
||||
stderr = subprocess.PIPE
|
||||
)
|
||||
except OSError:
|
||||
plugin.back2nagios(plugin.RETURNCODE['UNKNOWN'], 'Could not execute command line: %s' % subprocess.list2cmdline(cmdline))
|
||||
|
||||
(sout,serr) = cmd.communicate()
|
||||
plugin.verbose(2, 'Runtime %.3fs' % (time.time() - tstart, ) )
|
||||
|
||||
sout = sout.rstrip().split('\n')
|
||||
if sout == ['']:
|
||||
sout = []
|
||||
serr = serr.rstrip().split('\n')
|
||||
if serr == ['']:
|
||||
serr = []
|
||||
|
||||
return( (sout, serr, cmd.returncode,) )
|
||||
|
||||
##############################################################################
|
||||
|
||||
if plugin.options.sync_repo_index:
|
||||
plugin.verbose(1, '-S/--sync_repo_index given')
|
||||
cmdline = [plugin.options.xbps_install, '-S',]
|
||||
(sout, serr, rc) = run_command(cmdline, needs_sudo=True)
|
||||
sout and plugin.verbose(3, sout, prefix='stdout: ')
|
||||
serr and plugin.verbose(3, serr, prefix='stderr: ')
|
||||
plugin.verbose(2, 'Return code: %d' % rc)
|
||||
if plugin.options.fail_on_sync_failure and (rc != 0 or 'ERROR:' in ' '.join(serr)):
|
||||
if 'Permission denied' in ' '.join(serr):
|
||||
plugin.back2nagios(plugin.RETURNCODE['CRITICAL'], 'Syncing of repository index files failed, permission denied. Do you need "--sudo"?', multiline=serr)
|
||||
plugin.back2nagios(plugin.RETURNCODE['CRITICAL'], 'Syncing of repository index files failed', multiline=serr)
|
||||
|
||||
##############################################################################
|
||||
|
||||
cmdline = [plugin.options.xbps_install, '-un',]
|
||||
(sout, serr, rc) = run_command(cmdline)
|
||||
sout and plugin.verbose(3, sout, prefix='stdout: ')
|
||||
serr and plugin.verbose(3, serr, prefix='stderr: ')
|
||||
plugin.verbose(2, 'Return code: %d' % rc)
|
||||
|
||||
if plugin.options.sudo and 'sudo: ' in ' '.join(serr):
|
||||
# Running with sudo
|
||||
if rc == 1:
|
||||
# sudo RC 1: a password is required
|
||||
plugin.back2nagios(plugin.RETURNCODE['CRITICAL'], ' '.join(serr))
|
||||
if rc == 8:
|
||||
# RC 8: Transaction aborted due to unresolved shlibs.
|
||||
plugin.back2nagios(plugin.RETURNCODE['WARNING'], serr[-1], serr[:-1])
|
||||
elif rc not in [0, 6]:
|
||||
# RC 0: Packages to update
|
||||
# RC 6: Package(s) already installed
|
||||
plugin.back2nagios(plugin.RETURNCODE['WARNING'], 'Unknown returncode "%s", please contact the author of plugin or open an issue!' % rc)
|
||||
|
||||
action = {'remove':[], 'update':[], 'install':[], 'configure':[]}
|
||||
arch = {}
|
||||
repo = {}
|
||||
downby = 0L
|
||||
|
||||
for line in sout:
|
||||
cols = line.split(' ')
|
||||
# Append package name to action type list
|
||||
try:
|
||||
action[cols[1]].append(cols[0])
|
||||
except KeyError:
|
||||
action[cols[1]] = [ cols[0], ]
|
||||
|
||||
# Count per arch
|
||||
try:
|
||||
arch[cols[2]] += 1
|
||||
except KeyError:
|
||||
arch[cols[2]] = 1
|
||||
|
||||
# Count per repo
|
||||
try:
|
||||
repo[cols[3]] += 1
|
||||
except KeyError:
|
||||
repo[cols[3]] = 1
|
||||
|
||||
# Count bytes to download
|
||||
if len(cols) == 5:
|
||||
downby += long(cols[4])
|
||||
else:
|
||||
downby += long(cols[5])
|
||||
|
||||
if len(sout) == 0:
|
||||
plugin.remember_check('Updates', plugin.RETURNCODE['OK'], 'Everything uptodate')
|
||||
else:
|
||||
out = []
|
||||
multiline = []
|
||||
for act in ['update', 'install', 'remove', 'configure']:
|
||||
pkgs = action.pop(act)
|
||||
pkgs.sort()
|
||||
l = len(pkgs)
|
||||
out.append('%s package%s to %s' % (l, l != 1 and 's' or '', act) )
|
||||
l and multiline.append('%s(%s): %s' % (act, l, ', '.join(pkgs)) )
|
||||
for act in action.keys():
|
||||
pkgs = action.pop(act)
|
||||
pkgs.sort()
|
||||
l = len(pkgs)
|
||||
out.append('%s package%s to %s' % (l, l != 1 and 's' or '', act) )
|
||||
l and multiline.append('%s(%s): %s' % (act, l, ', '.join(pkgs)) )
|
||||
|
||||
out = ', '.join(out)
|
||||
if downby:
|
||||
out += ' - %s to download' % plugin.value_to_human_binary(downby, 'B')
|
||||
|
||||
stats = 'Statistics: '
|
||||
for (k, v) in arch.iteritems():
|
||||
stats += '%sx %s, ' % (v, k)
|
||||
for (k, v) in repo.iteritems():
|
||||
stats += '%s from %s, ' % (v, k)
|
||||
multiline.append(stats[:-2])
|
||||
|
||||
plugin.remember_check('Updates', plugin.RETURNCODE['CRITICAL'], out, multilineoutput=multiline)
|
||||
|
||||
# Exit
|
||||
plugin.brain2output()
|
||||
plugin.exit()
|
||||
|
13
commands.cfg
13
commands.cfg
|
@ -118,19 +118,6 @@ define command {
|
|||
}
|
||||
|
||||
|
||||
### check_xbps.py
|
||||
# check_command check_xbps
|
||||
define command {
|
||||
command_name check_xbps
|
||||
command_line $USER3$/check_xbps.py
|
||||
}
|
||||
# check_command check_xbps
|
||||
define command {
|
||||
command_name check_xbps_syncrepoindex
|
||||
command_line $USER3$/check_xbps.py -S
|
||||
}
|
||||
|
||||
|
||||
### check_zypper.sh
|
||||
# check_command check_zypper
|
||||
define command {
|
||||
|
|
5
debian/changelog
vendored
Normal file
5
debian/changelog
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
mymonplugins (0.9~rc2-1) unstable; urgency=low
|
||||
|
||||
* Initial release
|
||||
|
||||
-- Sven Velt <sven@velt.de> Sat, 03 Dec 2016 14:25:44 +0100
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
9
|
25
debian/control
vendored
Normal file
25
debian/control
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
Source: mymonplugins
|
||||
Section: net
|
||||
Priority: extra
|
||||
Maintainer: Sven Velt <sven@velt.de>
|
||||
Build-Depends: debhelper (>= 8.0.0)
|
||||
Standards-Version: 3.9.3
|
||||
Homepage: https://gogs.velt.biz/velt.biz/MyMonPlugins/wiki
|
||||
Vcs-Git: https://gogs.velt.biz/velt.biz/MyMonPlugins.git
|
||||
Vcs-Browser: https://gogs.velt.biz/velt.biz/MyMonPlugins
|
||||
|
||||
Package: mymonplugins
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends}, python, python2.7
|
||||
Description: "My Monitoring Plugins" collection (former "teamix Monitoring-Plugins")
|
||||
Plugins which were written by Sven Velt:
|
||||
- check_apaches.py
|
||||
- check_collectd.py
|
||||
- check_cups.py
|
||||
- check_iface-dns.py
|
||||
- check_livestatus_latency.py
|
||||
- check_naf.py
|
||||
- check_nagiostats.py
|
||||
- check_netconnections.py
|
||||
- check_sensors.py
|
||||
- check_zypper.sh
|
30
debian/copyright
vendored
Normal file
30
debian/copyright
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: MyMonPlugins
|
||||
Source: https://gogs.velt.biz/velt.biz/MyMonPlugins/wiki
|
||||
|
||||
Files: *
|
||||
Copyright: 2015- Sven Velt <sven-mymonplugins@velt.biz>
|
||||
2010-2015 by Sven Velt and team(ix) GmbH, Nuernberg, Germany
|
||||
License: GPL-2.0+
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2016 Sven Velt <sven@velt.de>
|
||||
License: GPL-2.0+
|
||||
|
||||
License: GPL-2.0+
|
||||
This package is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
.
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
5
debian/dirs
vendored
Normal file
5
debian/dirs
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
usr/lib/nagios/plugins
|
||||
usr/share/mymonplugins
|
||||
etc/pnp4nagios/templates.d
|
||||
etc/pnp4nagios/check_commands
|
||||
|
0
debian/docs
vendored
Normal file
0
debian/docs
vendored
Normal file
31
debian/rules
vendored
Executable file
31
debian/rules
vendored
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
export DH_VERBOSE=1
|
||||
export DH_OPTIONS
|
||||
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
|
||||
override_dh_install:
|
||||
cp -a $(CURDIR)/monitoringplugin.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
|
||||
cp -a $(CURDIR)/check_apaches.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_collectd.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_cups.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_iface-dns.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_livestatus_latency.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_naf.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_nagiostats.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_netconnections.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_sensors.py $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
cp -a $(CURDIR)/check_zypper.sh $(CURDIR)/debian/mymonplugins/usr/lib/nagios/plugins/
|
||||
|
||||
cp -a $(CURDIR)/commands.cfg $(CURDIR)/debian/mymonplugins/usr/share/mymonplugins/
|
||||
cp -a $(CURDIR)/PNP $(CURDIR)/debian/mymonplugins/usr/share/mymonplugins/
|
||||
|
||||
ln -s /usr/share/mymonplugins/PNP/templates $(CURDIR)/debian/mymonplugins/etc/pnp4nagios/templates.d/mymonplugins
|
||||
ln -s /usr/share/mymonplugins/PNP/check_commands/check_naf.cfg $(CURDIR)/debian/mymonplugins/etc/pnp4nagios/check_commands/
|
||||
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
Loading…
Reference in a new issue