Module: check_mk
Branch: master
Commit: 397958b86742003a4519c8df471f59b39a5f80f5
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=397958b8674200…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Jun 4 19:12:56 2012 +0200
postgres_sessions: New check for PostgreSQL number of sessions
---
ChangeLog | 1 +
agents/plugins/mk_postgres | 6 +++
checks/postgres_sessions | 72 ++++++++++++++++++++++++++++++++++
web/plugins/wato/check_parameters.py | 31 ++++++++++++++
4 files changed, 110 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f1bdc43..f19d22e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@
* mysql.sessions: New check for MySQL sessions (need new plugin mk_mysql)
* mysql.innodb_io: New check for Disk-IO of InnoDB
* mysql_capacity: New check for used/free capacity of MySQL databases
+ * postgres_sessions: New check for PostgreSQL number of sessions
1.2.0b6:
Multisite:
diff --git a/agents/plugins/mk_postgres b/agents/plugins/mk_postgres
new file mode 100755
index 0000000..3dc2840
--- /dev/null
+++ b/agents/plugins/mk_postgres
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+if id postgres >/dev/null ; then
+ echo '<<<postgres_sessions>>>'
+ echo "select current_query = '<IDLE>', count(*) from pg_stat_activity group by (current_query = '<IDLE>');" | su - postgres -c "psql -A -t -F' '"
+fi
diff --git a/checks/postgres_sessions b/checks/postgres_sessions
new file mode 100644
index 0000000..8e9b9cb
--- /dev/null
+++ b/checks/postgres_sessions
@@ -0,0 +1,72 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+# <<<postgres_sessions>>>
+# f 1
+# t 4
+
+# t -> idle sessions, f -> active sessions
+
+def inventory_postgres_sessions(info):
+ if len(info) == 2:
+ return [(None, {})]
+
+def check_postgres_sessions(_no_item, params, info):
+ parsed = dict(info)
+ idle = int(parsed['t'])
+ running = int(parsed['f'])
+ total = idle + running
+
+ status = 0
+ infos = []
+ perfdata = []
+ for value, what, format, unit in [
+ ( total, "total", "%d", "" ),
+ ( running, "running", "%d", "" )]:
+ infos.append((format + " %s%s") % (value, what, unit))
+ if what in params:
+ warn, crit = params[what]
+ if value >= crit:
+ status = 2
+ infos[-1] += "(!!)"
+ elif value >= warn:
+ status = max(status, 1)
+ infos[-1] += "(!)"
+ else:
+ warn, crit = None, None
+ perfdata.append((what, value, warn, crit))
+
+ infotext = " - " + ", ".join(infos)
+ return (status, nagios_state_names[status] + infotext, perfdata)
+
+
+check_info['postgres_sessions'] = {
+ "check_function" : check_postgres_sessions,
+ "inventory_function" : inventory_postgres_sessions,
+ "service_description" : "PostgreSQL Sessions",
+ "has_perfdata" : True,
+ "group" : "postgres_sessions",
+}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 3738b51..f7b9543 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -1032,6 +1032,37 @@ checkgroups.append((
checkgroups.append((
subgroup_applications,
+ "postgres_sessions",
+ _("PostgreSQL Sessions"),
+ Dictionary(
+ help = _("This check monitors the current number of active and idle sessions on PostgreSQL"),
+ elements = [
+ ( "total",
+ Tuple(
+ title = _("Number of current sessions"),
+ elements = [
+ Integer(title = _("Warning at"), unit = _("sessions"), default_value = 100),
+ Integer(title = _("Critical at"), unit = _("sessions"), default_value = 200),
+ ],
+ ),
+ ),
+ ( "running",
+ Tuple(
+ title = _("Number of currently running sessions"),
+ help = _("Levels for the number of sessions that are currently active"),
+ elements = [
+ Integer(title = _("Warning at"), unit = _("sessions"), default_value = 10),
+ Integer(title = _("Critical at"), unit = _("sessions"), default_value = 20),
+ ],
+ ),
+ ),
+ ]
+ ),
+ None,
+ None))
+
+checkgroups.append((
+ subgroup_applications,
"win_dhcp_pools",
_("Windows DHCP Pool"),
Tuple(
Module: check_mk
Branch: master
Commit: b02a9cd5e71465a8e6632e8d3c820fa85e572250
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=b02a9cd5e71465…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Jun 4 17:10:16 2012 +0200
Updated bug entries #0764
---
.bugs/764 | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/.bugs/764 b/.bugs/764
new file mode 100644
index 0000000..06571ec
--- /dev/null
+++ b/.bugs/764
@@ -0,0 +1,10 @@
+Title: Move simple agent plugins (Linux) into standard Agent
+Component: checks
+State: open
+Date: 2012-06-04 17:09:32
+Targetversion: future
+Class: todo
+
+Plugins like mk_mysql, dmi_sysinfo and others that run fast
+and do not break anything should be put into the normal
+agent.
Module: check_mk
Branch: master
Commit: 63d71de4ca107e62d4f907fb387dfe77e42937d4
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=63d71de4ca107e…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Jun 4 17:15:34 2012 +0200
Mysql-Check for database capacities
---
agents/plugins/mk_mysql | 43 ++++++++++++++++++++
checks/mysql_capacity | 61 +++++++++++++++++++++++++++++
pnp-templates/check_mk-mysql_capacity.php | 1 +
web/plugins/perfometer/check_mk.py | 1 +
4 files changed, 106 insertions(+), 0 deletions(-)
diff --git a/agents/plugins/mk_mysql b/agents/plugins/mk_mysql
new file mode 100755
index 0000000..8d2ed9d
--- /dev/null
+++ b/agents/plugins/mk_mysql
@@ -0,0 +1,43 @@
+#!/bin/sh
+# +-----------------------------------------------------------------+
+# | |
+# | ( ___ \ | \ /\|\ /||\ /|( ( /| |
+# | | ( ) ) | \ / /| ) ( || ) ( || \ ( | |
+# | | (__/ / | (_/ / | | | || (___) || \ | | |
+# | | __ ( | _ ( | | | || ___ || (\ \) | |
+# | | ( \ \ | ( \ \ | | | || ( ) || | \ | |
+# | | )___) )_ | / \ \| (___) || ) ( || ) \ | |
+# | |/ \___/(_) |_/ \/(_______)|/ \||/ )_) |
+# | |
+# | Copyright Bastian Kuhn 2011 mail(a)bastian-kuhn.de |
+# +-----------------------------------------------------------------+
+#
+# This file is a check Script for check_mk
+# Information about me can be found at http://bastian-kuhn.de
+# Information about check_mk at http://mathias-kettner.de/check_mk.
+#
+# This 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+#
+# Hint: You may want to set configure:
+# e.g. --socket='/var/run/mysqld/mysqld.sock'
+# e.g. --user=root
+# e.g. --password='XYZ'
+
+if which mysqladmin > /dev/null
+then
+ # Check if mysqld is running and root password setup
+ echo "<<<mysql_ping>>>"
+ mysqladmin --defaults-extra-file=$MK_CONFDIR/mysql.cfg ping 2>&1
+
+ mysql --defaults-extra-file=$MK_CONFDIR/mysql.cfg -sN \
+ -e "select '<<<mysql_status>>>' ; show global status; select '<<<mysql_capacity>>>' ; SELECT table_schema, sum( data_length + index_length ), sum( data_free ) FROM information_schema.TABLES GROUP BY table_schema;"
+fi
diff --git a/checks/mysql_capacity b/checks/mysql_capacity
new file mode 100644
index 0000000..66b7081
--- /dev/null
+++ b/checks/mysql_capacity
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk 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 in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+# <<<mysql_capacity>>>
+# greendb 163840 1428160512
+# hirn 16384 238026752
+# information_schema 9216 0
+# mysql 650067 0
+# performance_schema 0 0
+# wa-confluence 15499264 13805551616
+
+def inventory_mysql_capacity(info):
+ inventory = []
+ for dbname, used, avail in info:
+ if dbname not in [ "information_schema", "mysql", "performance_schema" ]:
+ inventory.append((dbname, {}))
+ return inventory
+
+def check_mysql_capacity(item, params, info):
+ for dbname, used, avail in info:
+ if item == dbname:
+ used_mb = int(used) / 1048576.0
+ avail_mb = int(avail) / 1048576.0
+ size_mb = used_mb + avail_mb
+ return df_check_filesystem(g_hostname, item, size_mb, avail_mb, params)
+
+ return (3, "UNKNOWN - Database not found")
+
+
+check_info['mysql_capacity'] = {
+ "check_function" : check_mysql_capacity,
+ "inventory_function" : inventory_mysql_capacity,
+ "service_description" : "MYSQL Capacity %s",
+ "has_perfdata" : True,
+ "group" : "filesystem",
+ "default_levels_variable" : "filesystem_default_levels",
+ "includes" : [ "df.include" ],
+}
diff --git a/pnp-templates/check_mk-mysql_capacity.php b/pnp-templates/check_mk-mysql_capacity.php
new file mode 120000
index 0000000..28b85a4
--- /dev/null
+++ b/pnp-templates/check_mk-mysql_capacity.php
@@ -0,0 +1 @@
+check_mk-df.php
\ No newline at end of file
diff --git a/web/plugins/perfometer/check_mk.py b/web/plugins/perfometer/check_mk.py
index 9ae4df9..25d38ec 100644
--- a/web/plugins/perfometer/check_mk.py
+++ b/web/plugins/perfometer/check_mk.py
@@ -68,6 +68,7 @@ perfometers["check_mk-df_netapp"] = perfometer_check_mk_df
perfometers["check_mk-df_netapp32"] = perfometer_check_mk_df
perfometers["check_mk-hr_fs"] = perfometer_check_mk_df
perfometers["check_mk-oracle_asm_diskgroup"] = perfometer_check_mk_df
+perfometers["check_mk-mysql_capacity"] = perfometer_check_mk_df
def perfometer_check_mk_kernel_util(row, check_command, perf_data):
Module: check_mk
Branch: master
Commit: 87bc31a4c765b1bcf861792ab284a8e31bfcf2e3
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=87bc31a4c765b1…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Jun 4 16:42:08 2012 +0200
Added fileinfo into linux agent
---
ChangeLog | 5 +++++
agents/check_mk_agent.linux | 8 ++++++++
web/plugins/wato/check_mk_configuration.py | 3 ++-
3 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index bb35ad4..33f00be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1.2.0:
+ Checks & Agents:
+ * fileinfo: added this check to Linux agent. Simply put your
+ file patterns into /etc/check_mk/fileinfo.cfg for configuration.
+
1.2.0b6:
Multisite:
* FIX: Fixed layout of some dropdown fields in view filters
diff --git a/agents/check_mk_agent.linux b/agents/check_mk_agent.linux
index ec86486..e13eda7 100755
--- a/agents/check_mk_agent.linux
+++ b/agents/check_mk_agent.linux
@@ -388,6 +388,14 @@ then
omd status --bare --auto
fi
+# Fileinfo-Check: put patterns for files into /etc/check_mk/fileinfo.cfg
+if [ -r "$MK_CONFDIR/fileinfo.cfg" ] ; then
+ echo '<<<fileinfo:sep(124)>>>'
+ date +%s
+ stat -c "%n|%s|%Y" $(cat "$MK_CONFDIR/fileinfo.cfg")
+fi
+
+
# Einbinden von lokalen Plugins, die eine eigene Sektion ausgeben
if cd $PLUGINSDIR
then
diff --git a/web/plugins/wato/check_mk_configuration.py b/web/plugins/wato/check_mk_configuration.py
index e26e47e..d36e36d 100644
--- a/web/plugins/wato/check_mk_configuration.py
+++ b/web/plugins/wato/check_mk_configuration.py
@@ -996,5 +996,6 @@ register_rule(group,
"the same format the agent would do. This is for example useful for monitoring "
"via SSH. The command line may contain the placeholders <tt><IP></tt> and "
"<tt><HOST></tt>."),
- label = _("Command line to execute")))
+ label = _("Command line to execute"),
+ size = 80))
Module: check_mk
Branch: master
Commit: 61cb7e7436a46529ad8ffe2f61bc38b0bc138da9
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=61cb7e7436a465…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Jun 4 12:22:40 2012 +0200
Updated bug entries #0763
---
.bugs/763 | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/.bugs/763 b/.bugs/763
new file mode 100644
index 0000000..567972f
--- /dev/null
+++ b/.bugs/763
@@ -0,0 +1,23 @@
+Title: Duplicate Check on Cisco 4500
+Component: checks
+State: open
+Date: 2012-06-04 12:20:55
+Targetversion: future
+Class: nastiness
+
+Generating Nagios configuration...Configuration Error: ERROR:
+Duplicate service description 'Temperature Chassis Temperature Sensor'
+for host 'cat_4500_1'!
+
+- 1st occurrance: checktype = cisco_temp_perf, item = 'Chassis
+Temperature Sensor'
+
+- 2nd occurrance: checktype = cisco_temp_sensor, item = 'Chassis
+Temperature Sensor'
+
+Can we invent something in Check_MK that automatically drops
+duplicate services? How can a precedence be implemented? Should
+we at least issue a warning? Should this be checked during
+inventory? The service description is known at this point of
+time and a check for duplicates could be done and the new duplicate
+checks ignored.
Module: check_mk
Branch: master
Commit: 8036445050d7070e2257ff019c833bffd13e1aa0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8036445050d707…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Mon Jun 4 11:33:17 2012 +0200
Check manpages for Veritas and LVM checks
---
checkman/lvm_volstats | 13 +++++++++++++
checkman/vxvm_enclosures | 21 +++++++++++++++++++++
checkman/vxvm_multipath | 18 ++++++++++++++++++
checkman/vxvm_objstatus | 24 ++++++++++++++++++++++++
checkman/vxvm_volstats | 13 +++++++++++++
checks/vxvm_volstats | 4 ----
6 files changed, 89 insertions(+), 4 deletions(-)
diff --git a/checkman/lvm_volstats b/checkman/lvm_volstats
new file mode 100644
index 0000000..0a551e6
--- /dev/null
+++ b/checkman/lvm_volstats
@@ -0,0 +1,13 @@
+title: Linux LVM Volume statistics
+agents: linux
+author: Bastian Kuhn <bk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check traces IO activity on volumes created in Linux LVM
+ It reads the same counters as the basic {diskstat} check, but
+ limits the results on per-Volume basis.
+
+inventory:
+ One item is generated per volume in the volume manager.
+ The naming is {volumegroup}-{volume}.
diff --git a/checkman/vxvm_enclosures b/checkman/vxvm_enclosures
new file mode 100644
index 0000000..da0ddc1
--- /dev/null
+++ b/checkman/vxvm_enclosures
@@ -0,0 +1,21 @@
+title: VxVM Enclosures
+agents: hpux, linux
+author: Bastian Kuhn <bk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check verifies status of disk enclosures or arrays
+ connected to a host running Veritas VxVM.
+
+ It is in status {OK} an enclosure is in status CONNECTED.
+ Any other status will be reported as a {CRIT} status, assuming
+ the enclosure has lost connectivity or has been removed.
+ Veritas also lists the local disks of a system in a
+ "pseudo-enclosure" named {OTHER_DISKS}. If you do not run
+ the local disks under Veritas control, you can add these to
+ {ignored_services}.
+
+inventory:
+ One item is generated per VxVM disk enclosure, the naming is
+ inherited from VxVM. See the man page for {vxdmpadm} about
+ naming enclosures.
diff --git a/checkman/vxvm_multipath b/checkman/vxvm_multipath
new file mode 100644
index 0000000..c00656d
--- /dev/null
+++ b/checkman/vxvm_multipath
@@ -0,0 +1,18 @@
+title: VxVM Multipath
+agents: hpux, linux
+author: Bastian Kuhn <bk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check verifies status of multipath devices managed using
+ Veritas native multipathing {VxDMP} on a host running Veritas VxVM.
+ It will return {OK} if all configured paths are active.
+ Otherwise, it will decide based on the number of active paths.
+ If more than 50% of the paths are still active, it will return a
+ {WARN} status, or a {CRIT} if less than 50% - or none - paths are
+ still working.
+
+
+inventory:
+ One item is generated per multipathed LUN. It is named after the
+ volume managers' {access name} for the disk.
diff --git a/checkman/vxvm_objstatus b/checkman/vxvm_objstatus
new file mode 100644
index 0000000..557f488
--- /dev/null
+++ b/checkman/vxvm_objstatus
@@ -0,0 +1,24 @@
+title: status of objects in VxVM
+agents: hpux, linux
+author: Bastian Kuhn <bk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check is used to track the status of objects in Veritas VxVM.
+ Currently, it can only track the status of {v} - Volume level objects.
+ It will be {OK} if a volume is an active status, or if it was
+ dismounted/stopped cleanly by admin action. If any other status is
+ detected, it will go to {CRIT}.
+
+ If a diskgroup goes to {disabled} by catastrophic failure or admin
+ error, the check can no longer report the volume status, as the
+ volumes as objects become unavailable.
+
+ The check should be extensible for tracking status in multiple layers.
+
+
+inventory:
+ One item is generated per volume in the volume manager.
+ The naming is {diskgroup}-{volume}.
+ The inventory includes layered volumes {v2}, if you do not need data on
+ these, use {ignored_services} to exclude them from monitoring.
diff --git a/checkman/vxvm_volstats b/checkman/vxvm_volstats
new file mode 100644
index 0000000..b7c193e
--- /dev/null
+++ b/checkman/vxvm_volstats
@@ -0,0 +1,13 @@
+title: VxVM Volume statistics
+agents: hpux, linux
+author: Bastian Kuhn <bk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check traces IO activity on volumes created by Veritas VxVM.
+ It uses the {vxstat} utility to track per-KB statistics.
+
+
+inventory:
+ One item is generated per volume in the volume manager.
+ The naming is {diskgroup}-{volume}.
diff --git a/checks/vxvm_volstats b/checks/vxvm_volstats
index f32a68f..1d4eb3a 100644
--- a/checks/vxvm_volstats
+++ b/checks/vxvm_volstats
@@ -24,10 +24,6 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
-# <<<aix_perflib_hbastat>>>
-# Convert to generic format needed for diskstat.include. Upper example
-# would look like:
-# [ ( 'sissas0', 204494394, 156524126 ), ('fcs3', 1760, 0), ... ]
def convert_vxvm_volstats(info):
return [ ( l[0], int(l[1])*2, int(l[2])*2) for l in info[1:] ]