Module: check_mk
Branch: master
Commit: a14f10f33b004fa9fd991af0fd2b02f597f52f28
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a14f10f33b004f…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Sep 12 15:36:29 2014 +0200
winperf_phydisk: fix UNKNOWN, make compatible again with diskstat.include
---
checks/winperf_phydisk | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/checks/winperf_phydisk b/checks/winperf_phydisk
index b32a3cd..7c267bd 100644
--- a/checks/winperf_phydisk
+++ b/checks/winperf_phydisk
@@ -63,36 +63,39 @@
check_includes['winperf_phydisk'] = [ "diskstat.include" ]
def winperf_phydisk_convert(info):
+ # node_info has been activated. This check simply ignores this
+ # for now.
# In case disk performance counters are not enabled, the agent sends
# an almost empty section, where the second line is missing completely
if len(info) == 1:
return []
- disks = [ d.split('_')[-1] for d in info[1][2:-1] ]
+ disks = [ d.split('_')[-1] for d in info[1][3:-1] ]
for line in info[2:]:
- if line[0] == '-14':
- disk_read_bytes = [ int(x) / 512 for x in line[1:-2] ]
- elif line[0] == '-12':
- disk_write_bytes = [ int(x) / 512 for x in line[1:-2] ]
- elif line[0] == '-20':
- disk_reads = [ int(x) for x in line[1:-2] ]
- elif line[0] == '-18':
- disk_writes = [ int(x) for x in line[1:-2] ]
- elif line[0] == '1168': # Average Disk Read Queue Length
- disk_readq_ctrs = [ int(x) for x in line[1:-2] ]
- elif line[0] == '1170': # Average Disk Read Queue Length
- disk_writeq_ctrs = [ int(x) for x in line[1:-2] ]
+ if line[1] == '-14':
+ disk_read_bytes = [ int(x) / 512 for x in line[2:-2] ]
+ elif line[1] == '-12':
+ disk_write_bytes = [ int(x) / 512 for x in line[2:-2] ]
+ elif line[1] == '-20':
+ disk_reads = [ int(x) for x in line[2:-2] ]
+ elif line[1] == '-18':
+ disk_writes = [ int(x) for x in line[2:-2] ]
+ elif line[1] == '1168': # Average Disk Read Queue Length
+ disk_readq_ctrs = [ int(x) for x in line[2:-2] ]
+ elif line[1] == '1170': # Average Disk Read Queue Length
+ disk_writeq_ctrs = [ int(x) for x in line[2:-2] ]
# Missing columns are donted by negative values (Linux sends here latency
# information)
empty = [ -1 for x in disks ]
+ none = [ None for x in disks ] # Used as dummy node info
- return zip(disks, disk_read_bytes, disk_write_bytes, disk_reads, disk_writes, empty, disk_readq_ctrs, disk_writeq_ctrs)
+ return zip(none, disks, disk_read_bytes, disk_write_bytes, disk_reads, disk_writes, empty, disk_readq_ctrs, disk_writeq_ctrs)
def inventory_winperf_phydisk(info):
return inventory_diskstat_generic(winperf_phydisk_convert(info))
def check_winperf_phydisk(item, params, info):
- this_time = int(float(info[0][0]))
+ this_time = int(time.time())
return check_diskstat_generic(item, params, this_time, winperf_phydisk_convert(info))
@@ -100,6 +103,7 @@ check_info["winperf_phydisk"] = {
'check_function': check_winperf_phydisk,
'inventory_function': inventory_winperf_phydisk,
'service_description': 'Disk IO %s',
+ 'node_info': True,
'has_perfdata': True,
'group': 'disk_io',
}
Module: check_mk
Branch: master
Commit: 6a9d4ebbaae0cc7d2ae3eadbe74616e99d8d8c4a
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6a9d4ebbaae0cc…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Sep 12 14:18:19 2014 +0200
Added script for makeing a statistics of used check plugins
---
doc/treasures/cmk-plugin-statistics | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/doc/treasures/cmk-plugin-statistics b/doc/treasures/cmk-plugin-statistics
new file mode 100755
index 0000000..ee2171b
--- /dev/null
+++ b/doc/treasures/cmk-plugin-statistics
@@ -0,0 +1,20 @@
+#!/bin/bash
+# This script makes a statistics of the usage of the various check plugins.
+# It makes a Livestatus-Connection and outputs a list of plugins and the
+# information on how many different hosts this plugin is being used.
+
+if [ "$OMD_ROOT" ] ; then
+ LIVE_SOCKET=$OMD_ROOT/tmp/run/live
+elif [ -z "$LIVE_SOCKET" ] ; then
+ echo "Please do an 'export LIVE_SOCKET=/path/to/your/livestatus/socket'" >&2
+ echo "and then call me again." >&2
+ exit 1
+fi
+
+echo -e "GET services\nColumns: host_name check_command" \
+ | unixcat "$LIVE_SOCKET" \
+ | sort -u \
+ | cut -d\; -f2 \
+ | sort \
+ | uniq -c \
+ | sort -rn
Module: check_mk
Branch: master
Commit: 0c2d6c3ec331fa112f405290febe4b8fe794b748
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=0c2d6c3ec331fa…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Sep 12 15:22:15 2014 +0200
#1399 FIX Fix left-over tac processes when showing Event Console history
When you show the Event Console history and run into a soft or hard
query limit (of usually 1,000 or 5,000 entries), then every time one
<tt>tac</tt> process was left over. This has been fixed.
---
.werks/1399 | 12 ++++++++++++
ChangeLog | 1 +
mkeventd/bin/mkeventd | 9 ++++-----
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/.werks/1399 b/.werks/1399
new file mode 100644
index 0000000..0a2f0ee
--- /dev/null
+++ b/.werks/1399
@@ -0,0 +1,12 @@
+Title: Fix left-over tac processes when showing Event Console history
+Level: 2
+Component: ec
+Class: fix
+Compatible: compat
+State: unknown
+Version: 1.2.5i6
+Date: 1410528075
+
+When you show the Event Console history and run into a soft or hard
+query limit (of usually 1,000 or 5,000 entries), then every time one
+<tt>tac</tt> process was left over. This has been fixed.
diff --git a/ChangeLog b/ChangeLog
index 452c646..b13a75c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -123,6 +123,7 @@
* 1148 Allow execution of actions when cancelling events...
* 1395 Event Console can now create notifications via Check_MK RBN...
* 1007 FIX: check_mkevents: fix case where events contain binary zeroes
+ * 1399 FIX: Fix left-over tac processes when showing Event Console history...
HW/SW-Inventory:
* 0643 windows inventory: OS now contains the install date, reg_uninstall now contains the path...
diff --git a/mkeventd/bin/mkeventd b/mkeventd/bin/mkeventd
index 122f8a5..ee18dc5 100755
--- a/mkeventd/bin/mkeventd
+++ b/mkeventd/bin/mkeventd
@@ -577,14 +577,13 @@ def parse_history_file(path, headers, filters, greptexts, limit):
cmd = 'tac "%s"' % path
if greptexts:
cmd += ' | grep -i -e %s' % ".*".join(greptexts)
- grep = subprocess.Popen(cmd, shell = True, close_fds=True, stdout=subprocess.PIPE)
- logfile = grep.stdout
+ grep = subprocess.Popen(cmd, shell=True, close_fds=True, stdout=subprocess.PIPE)
- for line in logfile:
+ for line in grep.stdout:
line_no += 1
if limit != None and len(entries) > limit:
- if greptexts:
- os.kill(grep.pid, 15)
+ grep.kill()
+ grep.wait()
break
try:
Module: check_mk
Branch: master
Commit: 4d55e5bde21ddf3de0cf52b05a96be86e60441e5
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=4d55e5bde21ddf…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Sep 11 15:10:41 2014 +0200
#1398 Allow to spread times of next check when rescheduling
When you do the action <i>Reschedule active checks</i> for more than one
active checks then you now can enter a number of minutes. All checks will
then be distributed evenly over that time.
This feature is interesting for checks with larger intervals. Most prominent
example is the <tt>Check_MK Inventory</tt> check, which usually is done every
2, 4 or 24 hours. By spreading the executing of these checks you avoid large
peaks in CPU load.
---
.werks/1398 | 16 ++++++++++++++++
ChangeLog | 1 +
web/htdocs/views.py | 17 ++++++++++++-----
web/plugins/views/commands.py | 30 ++++++++++++++++++++++++------
4 files changed, 53 insertions(+), 11 deletions(-)
diff --git a/.werks/1398 b/.werks/1398
new file mode 100644
index 0000000..20148ee
--- /dev/null
+++ b/.werks/1398
@@ -0,0 +1,16 @@
+Title: Allow to spread times of next check when rescheduling
+Level: 2
+Component: multisite
+Compatible: compat
+Version: 1.2.5i6
+Date: 1410440913
+Class: feature
+
+When you do the action <i>Reschedule active checks</i> for more than one
+active checks then you now can enter a number of minutes. All checks will
+then be distributed evenly over that time.
+
+This feature is interesting for checks with larger intervals. Most prominent
+example is the <tt>Check_MK Inventory</tt> check, which usually is done every
+2, 4 or 24 hours. By spreading the executing of these checks you avoid large
+peaks in CPU load.
diff --git a/ChangeLog b/ChangeLog
index 5098f31..87bec08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -92,6 +92,7 @@
Multisite:
* 1066 Implemented Dashboard Designer...
* 1392 WATO Folder filter: show only the paths a user is allowed to see
+ * 1398 Allow to spread times of next check when rescheduling...
* 1067 FIX: Fixed login problem in LDAP connector when no user filter specified...
* 1094 FIX: sidebar snaping 'Tree of folders': fixed exception
* 1154 FIX: Availability: Fixed unwanted redirect to edit annotation page after editing availability options...
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index d6ba10d..dfaa22f 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -1890,7 +1890,7 @@ def show_command_form(is_open, datasource):
# (host name, service description, downtime/commands id) and
# construct one or several core command lines and a descriptive
# title.
-def core_command(what, row):
+def core_command(what, row, row_nr, total_rows):
host = row.get("host_name")
descr = row.get("service_description")
@@ -1917,7 +1917,14 @@ def core_command(what, row):
# confirmation dialog.
for cmd in multisite_commands:
if config.may(cmd["permission"]):
- result = cmd["action"](cmdtag, spec, row)
+
+ # Does the command need information about the total number of rows
+ # and the number of the current row? Then specify that
+ if cmd.get("row_stats"):
+ result = cmd["action"](cmdtag, spec, row, row_nr, total_rows)
+ else:
+ result = cmd["action"](cmdtag, spec, row)
+
if result:
executor = cmd.get("executor", command_executor_livestatus)
commands, title = result
@@ -1965,14 +1972,14 @@ def do_actions(view, what, action_rows, backurl):
return False # no actions done
command = None
- title, executor = core_command(what, action_rows[0])[1:3] # just get the title and executor
+ title, executor = core_command(what, action_rows[0], 0, len(action_rows))[1:3] # just get the title and executor
if not html.confirm(_("Do you really want to %(title)s the following %(count)d %(what)s?") %
{ "title" : title, "count" : len(action_rows), "what" : _(what + "s"), }, method = 'GET'):
return False
count = 0
- for row in action_rows:
- core_commands, title, executor = core_command(what, row)
+ for nr, row in enumerate(action_rows):
+ core_commands, title, executor = core_command(what, row, nr, len(action_rows))
for command in core_commands:
if type(command) == unicode:
command = command.encode("utf-8")
diff --git a/web/plugins/views/commands.py b/web/plugins/views/commands.py
index 4cdc8ef..5f6cdb8 100644
--- a/web/plugins/views/commands.py
+++ b/web/plugins/views/commands.py
@@ -40,21 +40,39 @@
#file('/tmp/1', 'a').write('%s %s\n%s' % (datetime.datetime.now(), current_language, ''.join(traceback.format_stack())))
# RESCHEDULE ACTIVE CHECKS
+def command_reschedule(cmdtag, spec, row, row_nr, total_rows):
+ if html.var("_resched_checks"):
+ spread = saveint(html.var("_resched_spread"))
+ text = _("<b>reschedule an immediate check")
+ if spread:
+ text += _(" spreaded over %d minutes") % spread
+
+ text += "</b>" + _("of")
+
+ t = time.time()
+ if spread:
+ t += spread * 60.0 * row_nr / total_rows
+
+ command = "SCHEDULE_FORCED_" + cmdtag + "_CHECK;%s;%d" % (spec, int(t))
+ return command, text
+
config.declare_permission("action.reschedule",
_("Reschedule checks"),
_("Reschedule host and service checks"),
[ "user", "admin" ])
+
multisite_commands.append({
"tables" : [ "host", "service" ],
"permission" : "action.reschedule",
- "title" : _("Reschedule"),
+ "title" : _("Reschedule active checks"),
"render" : lambda: \
- html.button("_resched_checks", _("Reschedule active checks")),
- "action" : lambda cmdtag, spec, row:
- html.var("_resched_checks") and (
- "SCHEDULE_FORCED_" + cmdtag + "_CHECK;%s;%d" % (spec, int(time.time())),
- _("<b>reschedule an immediate check</b> of"))
+ html.button("_resched_checks", _("Reschedule")) == \
+ html.write(_("and spread over") + " ") == \
+ html.number_input("_resched_spread", 0, size=3) == \
+ html.write(" " + _("minutes") + " "),
+ "action" : command_reschedule,
+ "row_stats" : True, # Get information about number of rows and current row nr.
})
Module: check_mk
Branch: master
Commit: 2132af7799816aba34d4dc45347edc655e9c6e78
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2132af7799816a…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Thu Sep 11 14:18:54 2014 +0200
#1110 FIX windows agent: fixed missing agent section problem if a cached script ran into a timeout
If a cache_age was set for a local or plugin script and the script ran into a timeout,
no data was reported by this script until the cache_age was expired.
This lead to missing agent sections.
---
.werks/1110 | 11 +++++++++++
ChangeLog | 1 +
agents/windows/build_version | 2 +-
agents/windows/check_mk_agent-64.exe | Bin 208896 -> 208896 bytes
agents/windows/check_mk_agent-64.unversioned.exe | Bin 208896 -> 208896 bytes
agents/windows/check_mk_agent.cc | 2 +-
agents/windows/check_mk_agent.exe | Bin 178176 -> 178176 bytes
agents/windows/check_mk_agent.unversioned.exe | Bin 178176 -> 178176 bytes
agents/windows/install_agent-64.exe | Bin 160065 -> 160067 bytes
agents/windows/install_agent.exe | Bin 156986 -> 156984 bytes
10 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/.werks/1110 b/.werks/1110
new file mode 100644
index 0000000..109b8c5
--- /dev/null
+++ b/.werks/1110
@@ -0,0 +1,11 @@
+Title: windows agent: fixed missing agent section problem if a cached script ran into a timeout
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.5i6
+Date: 1410437655
+Class: fix
+
+If a cache_age was set for a local or plugin script and the script ran into a timeout,
+no data was reported by this script until the cache_age was expired.
+This lead to missing agent sections.
diff --git a/ChangeLog b/ChangeLog
index 5098f31..ddd3a5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -88,6 +88,7 @@
* 1393 FIX: casa_cpu_temp, casa_cpu_util: Change service description to standard...
NOTE: Please refer to the migration notes!
* 1104 FIX: winperf_if: Improved matching of data from wmic_if.bat / wmic_if.ps1 scripts...
+ * 1110 FIX: windows agent: fixed missing agent section problem if a cached script ran into a timeout...
Multisite:
* 1066 Implemented Dashboard Designer...
diff --git a/agents/windows/build_version b/agents/windows/build_version
index 8643cf6..7fe4e49 100644
--- a/agents/windows/build_version
+++ b/agents/windows/build_version
@@ -1 +1 @@
-89
+91
diff --git a/agents/windows/check_mk_agent-64.exe b/agents/windows/check_mk_agent-64.exe
index 2262cd3..9cda56e 100755
Binary files a/agents/windows/check_mk_agent-64.exe and b/agents/windows/check_mk_agent-64.exe differ
diff --git a/agents/windows/check_mk_agent-64.unversioned.exe b/agents/windows/check_mk_agent-64.unversioned.exe
index 752375a..6fa477c 100755
Binary files a/agents/windows/check_mk_agent-64.unversioned.exe and b/agents/windows/check_mk_agent-64.unversioned.exe differ
diff --git a/agents/windows/check_mk_agent.cc b/agents/windows/check_mk_agent.cc
index dd9569b..7cae6c1 100755
--- a/agents/windows/check_mk_agent.cc
+++ b/agents/windows/check_mk_agent.cc
@@ -2809,6 +2809,7 @@ DWORD WINAPI ScriptWorkerThread(LPVOID lpParam)
cont->status = SCRIPT_FINISHED;
cont->last_problem = SCRIPT_NONE;
cont->retry_count = cont->max_retries;
+ cont->buffer_time = time(0);
break;
case 1:
cont->status = SCRIPT_ERROR;
@@ -2858,7 +2859,6 @@ void run_script_container(script_container *cont)
if (cont->status == SCRIPT_COLLECT || cont->status == SCRIPT_FINISHED) {
return;
}
- cont->buffer_time = time(0);
cont->status = SCRIPT_COLLECT;
if (cont->worker_thread != INVALID_HANDLE_VALUE)
diff --git a/agents/windows/check_mk_agent.exe b/agents/windows/check_mk_agent.exe
index 1ff882a..27826ec 100755
Binary files a/agents/windows/check_mk_agent.exe and b/agents/windows/check_mk_agent.exe differ
diff --git a/agents/windows/check_mk_agent.unversioned.exe b/agents/windows/check_mk_agent.unversioned.exe
index c27128f..8a10df5 100755
Binary files a/agents/windows/check_mk_agent.unversioned.exe and b/agents/windows/check_mk_agent.unversioned.exe differ
diff --git a/agents/windows/install_agent-64.exe b/agents/windows/install_agent-64.exe
index fc4de25..e7e29ec 100755
Binary files a/agents/windows/install_agent-64.exe and b/agents/windows/install_agent-64.exe differ
diff --git a/agents/windows/install_agent.exe b/agents/windows/install_agent.exe
index dff5540..a018288 100755
Binary files a/agents/windows/install_agent.exe and b/agents/windows/install_agent.exe differ