Module: check_mk
Branch: master
Commit: 36654c5552b1e2d69b7ed7183f91b88e892a33d8
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=36654c5552b1e2…
Author: Goetz Golla <gg(a)mathias-kettner.de>
Date: Sat Jan 17 09:57:17 2015 +0100
#1849 netscaler_dnsrates: new check for DNS statistics of Citrix Netscaler Loadbalancers
---
.werks/1849 | 9 ++++
ChangeLog | 1 +
checkman/netscaler_dnsrates | 37 +++++++++++++++++
checks/netscaler_dnsrates | 76 ++++++++++++++++++++++++++++++++++
web/plugins/wato/check_parameters.py | 29 +++++++++++++
5 files changed, 152 insertions(+)
diff --git a/.werks/1849 b/.werks/1849
new file mode 100644
index 0000000..36d1323
--- /dev/null
+++ b/.werks/1849
@@ -0,0 +1,9 @@
+Title: netscaler_dnsrates: new check for DNS statistics of Citrix Netscaler
Loadbalancers
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.7i1
+Date: 1421484970
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 70c00fb..12aa031 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -37,6 +37,7 @@
* 1841 fileinfo, fileinfo.groups: new parameter for selecting ranges of the time of
the day...
* 1668 Interface groups: Can create groups out of interface item names...
* 1669 mrpe program check_16bit_program.cc: Monitors 16 bit programs on windows...
+ * 1849 netscaler_dnsrates: new check for DNS statistics of Citrix Netscaler
Loadbalancers
* 1457 FIX: logins: new check renamed from "users" check...
NOTE: Please refer to the migration notes!
* 1762 FIX: lnx_thermal: Now ignoring trip points with level 0...
diff --git a/checkman/netscaler_dnsrates b/checkman/netscaler_dnsrates
new file mode 100644
index 0000000..9a56bf8
--- /dev/null
+++ b/checkman/netscaler_dnsrates
@@ -0,0 +1,37 @@
+title: Citrix Netscaler DNS Rates
+agents: snmp
+catalog: app/netscaler
+license: GPL
+distribution: check_mk
+description:
+
+ This check monitors various DNS counter rates of the Citrix Netscaler
+ Loadbalacing Appliance. It uses the {NS-ROOT-MIB} to access the
+ {nsDnsServerStatsGroup} via SNMP.
+
+ Monitored counter rates are the total DNS queries and the total DNS
+ answers (aka replies).
+
+ Warning and critical levels can be configured for each of the rates.
+
+inventory:
+ One service per loadbalancer device will be created.
+
+perfdata:
+ The counter rates of the monitored counters.
+
+item:
+ The name of counter.
+
+[parameters]
+parameters(dict): parameters is a dictionary with a key for each monitored counter.
+
+ {"query_rate"}: a tuple of warning and critical levels.
+
+ {"answer_rate"}: a tuple of warning and critical levels.
+
+ The numbers are integers and represent the counter increase per second.
+
+[configuration]
+netscaler_dnsrates_default_levels(dict): This variable is preset to
+{{ "query_rate": (1500.0, 2000.0), "answer_rate": (1500.0, 2000.0)
}}
diff --git a/checks/netscaler_dnsrates b/checks/netscaler_dnsrates
new file mode 100644
index 0000000..1f672b9
--- /dev/null
+++ b/checks/netscaler_dnsrates
@@ -0,0 +1,76 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2014 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.
+#
+# Example Output:
+# .1.3.6.1.4.1.5951.4.1.1.53.1.1.0 13
+# .1.3.6.1.4.1.5951.4.1.1.53.1.2.0 11
+
+factory_settings["netscaler_dnsrates_default_levels"] = {
+ "query": (1500.0, 2000.0),
+ "answer": (1500.0, 2000.0),
+}
+
+def inventory_netscaler_dnsrates(info):
+ if info:
+ return [ (None, 'netscaler_dnsrates_default_levels') ]
+
+def check_netscaler_dnsrates(_no_item, params, info):
+ queries, answers = map(int, info[0])
+
+ now = time.time()
+ for name, counter in [
+ ( "query", queries ),
+ ( "answer", answers ) ]:
+
+ rate = get_rate(name, now, counter)
+ warn, crit = params[name]
+ infotext = "%s rate %.1f/sec" % (name, rate)
+ perfdata = [ (name+"_rate", rate, warn, crit, 0) ]
+
+ state = 0
+ if rate >= crit:
+ state = 2
+ elif rate >= warn:
+ state = 1
+ if state > 0:
+ infotext += " (levels are %.1f/%.1f /sec)" % (warn, crit)
+
+ yield state, infotext, perfdata
+
+check_info["netscaler_dnsrates"] = {
+ "check_function" : check_netscaler_dnsrates,
+ "inventory_function" : inventory_netscaler_dnsrates,
+ "service_description" : "DNS rates",
+ "has_perfdata" : True,
+ "group" : "netscaler_dnsrates",
+ "snmp_info" : (".1.3.6.1.4.1.5951.4.1.1.53.1", [ #
nsDnsServerStatsGroup
+ 1, # dnsTotQueries
+ 2, # dnsTotAnswers
+ ]),
+ "snmp_scan_function" : lambda oid:
oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.5951.1"),
+ "default_levels_variable" : "netscaler_dnsrates_default_levels",
+
+}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 2e287fe..8ae9352 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -7503,3 +7503,32 @@ register_check_parameters(
),
None, None
)
+
+register_check_parameters(
+ subgroup_applications,
+ "netscaler_dnsrates",
+ _("Citrix Netscaler DNS counter rates"),
+ Dictionary(
+ help = _("Counter rates of DNS parameters for Citrix Netscaler Loadbalancer
"
+ "Appliances"),
+ elements = [
+ ("query",
+ Tuple(
+ title = _("Upper Levels for Total Number of DNS queries"),
+ elements = [
+ Float(title = _("Warning at"), default_value=1500.0,
unit="/sec"),
+ Float(title = _("Critical at"), default_value=2000.0,
unit="/sec")],
+ ),
+ ),
+ ("answer",
+ Tuple(
+ title = _("Upper Levels for Total Number of DNS replies"),
+ elements = [
+ Float(title = _("Warning at"), default_value=1500.0,
unit="/sec"),
+ Float(title = _("Critical at"), default_value=2000.0,
unit="/sec")],
+ ),
+ ),
+ ]
+ ),
+ None, None
+)