Module: check_mk
Branch: master
Commit: f54cab52ac188b6e1134337133cf761d1693022f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f54cab52ac188b…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Apr 15 09:30:30 2015 +0200
#2202 FIX hr_fs: Remove Label:... from mount point, replace \ with /
This makes the filesystem check via SNMP kompatible with the one via
the Windows agent. Note: This change is incompatible since the item
names of the checks will change for Windows systems. You need to
rediscover in this case.
This does not affect Windows hosts that are monitored via the normal
Check_MK Agent.
---
.werks/2202 | 15 +++++++++++++++
ChangeLog | 2 ++
checks/hr_fs | 5 ++++-
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/.werks/2202 b/.werks/2202
new file mode 100644
index 0000000..848f94d
--- /dev/null
+++ b/.werks/2202
@@ -0,0 +1,15 @@
+Title: hr_fs: Remove Label:... from mount point, replace \ with /
+Level: 1
+Component: checks
+Compatible: incomp
+Version: 1.2.7i1
+Date: 1429082929
+Class: fix
+
+This makes the filesystem check via SNMP kompatible with the one via
+the Windows agent. Note: This change is incompatible since the item
+names of the checks will change for Windows systems. You need to
+rediscover in this case.
+
+This does not affect Windows hosts that are monitored via the normal
+Check_MK Agent.
diff --git a/ChangeLog b/ChangeLog
index f749720..c441a0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -324,6 +324,8 @@
* 2198 FIX: windows_updates: Fix missing warning if reboot required in case forced reboot is in the past...
* 1955 FIX: lnx_quota: Fixed status message to show the correct values of limits...
* 2064 FIX: windows agent: crash.log now uses \r\n as newline
+ * 2202 FIX: hr_fs: Remove Label:... from mount point, replace \ with /...
+ NOTE: Please refer to the migration notes!
Multisite:
* 1758 Improved exception hander: Shows details without additional debug request, added mailto link for error report...
diff --git a/checks/hr_fs b/checks/hr_fs
index 49c9bee..2e9bb33 100644
--- a/checks/hr_fs
+++ b/checks/hr_fs
@@ -27,9 +27,12 @@
# Juniper devices put information about the device into the
# field where we expect the mount point. Ugly. Remove that crap.
def fix_hr_fs_mountpoint(mp):
- mp = snmp_decode_string(mp)
+ mp = snmp_decode_string(mp).replace("\\", "/")
if "mounted on:" in mp:
return mp.rsplit(":",1)[-1].strip()
+ elif "Label:" in mp:
+ pos = mp.find("Label:")
+ return mp[:pos].rstrip()
else:
return mp
Module: check_mk
Branch: master
Commit: 5ea4609347120c68688478fe3b539bc6700f98df
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5ea4609347120c…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Apr 15 08:46:52 2015 +0200
Fixed syntax error in Werk description
---
.werks/1903 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.werks/1903 b/.werks/1903
index 64c61c2..ea2f51e 100644
--- a/.werks/1903
+++ b/.werks/1903
@@ -39,7 +39,7 @@ Definition of a REMOTE_INSTANCE:
<tt>REMOTE_INSTANCE_<Number>=<Configuration String></tt>
The definition of the database connection is as follows.
-<tt><username>:<password>:<sysdba>:<Database hostname>:<Listener Port><piggyback Hostname>:<ORACLE_SID>:<ORACLE-Release></tt>
+<tt>username:password:sysdba:Database hostname:Listener Port:piggyback Hostname:ORACLE_SID:ORACLE-Release</tt>
Notes regarding <tt>REMOTE_INSTANCE_x</tt>
You need to make sure, that the name of the variable including
Module: check_mk
Branch: master
Commit: 9d3c2c7e7d3087507ab2f87e1ccee80d8946fcc9
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9d3c2c7e7d3087…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Apr 14 16:46:15 2015 +0200
cmc: Fixed update of services when host has just been added and fist performed check was the discovery check
---
modules/check_mk.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules/check_mk.py b/modules/check_mk.py
index f8709e2..a89e404 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -892,7 +892,7 @@ def get_check_table(hostname, remove_duplicates=False, use_cache=True, world='co
global g_multihost_checks
# speed up multiple lookup of same host
- if use_cache and hostname in g_check_table_cache:
+ if not skip_autochecks and use_cache and hostname in g_check_table_cache:
if remove_duplicates and is_dual_host(hostname):
return remove_duplicate_checks(g_check_table_cache[hostname])
else:
@@ -993,7 +993,7 @@ def get_check_table(hostname, remove_duplicates=False, use_cache=True, world='co
if d in all_descr:
deps.append(d)
- if use_cache:
+ if not skip_autochecks and use_cache:
g_check_table_cache[hostname] = check_table
if remove_duplicates and is_dual_host(hostname):
Module: check_mk
Branch: master
Commit: 2de6e343db6819848304ebff1966f4861da2ddc3
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2de6e343db6819…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Apr 14 16:09:27 2015 +0200
Renamed ORACLE_HOME_REMOTE back to REMOTE_ORACLE_HOME
---
.werks/1903 | 2 +-
agents/plugins/mk_oracle | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.werks/1903 b/.werks/1903
index 1ac0a5f..64c61c2 100644
--- a/.werks/1903
+++ b/.werks/1903
@@ -22,7 +22,7 @@ in downtime you'll put all other database checks from mk_oracle in a downtime as
H2: Configuration
You need an Oracle Client. You could use the remote option from an existing Database Server
-to monitor another Server. It is recommended to set <tt>ORACLE_HOME_REMOTE</tt> in <tt>mk_oracle.cfg</tt>
+to monitor another Server. It is recommended to set <tt>REMOTE_ORACLE_HOME</tt> in <tt>mk_oracle.cfg</tt>
for the <tt>ORACLE_HOME</tt> which should be used for all remote connections.
An existing <tt>ORACLE_HOME</tt> could be used as well, but do not do that in mixed configurations
diff --git a/agents/plugins/mk_oracle b/agents/plugins/mk_oracle
index f07030c..3adfdcb 100755
--- a/agents/plugins/mk_oracle
+++ b/agents/plugins/mk_oracle
@@ -694,7 +694,7 @@ function set_oraenv () {
if [[ "$SID" =~ ^REMOTE_INSTANCE_.* ]] ; then
# we get the ORACLE_HOME from mk_oracle.cfg for REMOTE execution
- ORACLE_HOME=${ORACLE_HOME:-${ORACLE_HOME_REMOTE}}
+ ORACLE_HOME=${ORACLE_HOME:-${REMOTE_ORACLE_HOME}}
else
# we need to keep an existing ORACLE_SID in remote mode
Module: check_mk
Branch: master
Commit: 05a988500e5c1d319129b8e4861aa6cba69b01a6
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=05a988500e5c1d…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Apr 14 15:54:17 2015 +0200
Fix for ORACLE remote monitoring
---
.werks/1903 | 25 ++++++++++++++-----------
agents/plugins/mk_oracle | 18 +++++++++++-------
2 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/.werks/1903 b/.werks/1903
index 24bf084..1ac0a5f 100644
--- a/.werks/1903
+++ b/.werks/1903
@@ -21,28 +21,31 @@ host with mk_oracle is responsible for the piggyback data. If you put the Check_
in downtime you'll put all other database checks from mk_oracle in a downtime as well.
H2: Configuration
-You need an Oracle Client. If ORACLE_HOME is not set in the login shell of root, you need
-to add the ORACLE_HOME variable to mk_oracle.mk.
+You need an Oracle Client. You could use the remote option from an existing Database Server
+to monitor another Server. It is recommended to set <tt>ORACLE_HOME_REMOTE</tt> in <tt>mk_oracle.cfg</tt>
+for the <tt>ORACLE_HOME</tt> which should be used for all remote connections.
+
+An existing <tt>ORACLE_HOME</tt> could be used as well, but do not do that in mixed configurations
+with local and remote monitoring of Oracle Databases.
Add the following lines to <tt>mk_oracle.cfg</tt>. The path is an example for the RPM Instant
-Client from Oracle for 64bit.
-<tt>ORACLE_HOME=/usr/lib/oracle/11.2/client64</tt>
+Client from Oracle for 64bit on Linux.
+<tt>REMOTE_ORACLE_HOME=/usr/lib/oracle/11.2/client64</tt>
-<tt>REMOTE_INSTANCE_1_omd110=check_mk:check_mk:::::XE:11.2</tt>
-<tt>REMOTE_INSTANCE_2_omd110=check_mk:check_mk:::::XE2:11.2</tt>
+<tt>REMOTE_INSTANCE_1=check_mk:check_mk::dbhost:1521:piggybackhost:XE:11.2</tt>
+<tt>REMOTE_INSTANCE_2=check_mk:check_mk::dbhost:1521:piggybackhost:XE2:11.2</tt>
Definition of a REMOTE_INSTANCE:
-<tt>REMOTE_INSTANCE_<Number>_<piggyback Hostname>=<Configuration String></tt>
+<tt>REMOTE_INSTANCE_<Number>=<Configuration String></tt>
The definition of the database connection is as follows.
-<tt><username>:<password>:<sysdba>:<port>:<Database hostname>:<reserved for future use>:<ORACLE_SID>:<ORACLE-Release></tt>
+<tt><username>:<password>:<sysdba>:<Database hostname>:<Listener Port><piggyback Hostname>:<ORACLE_SID>:<ORACLE-Release></tt>
Notes regarding <tt>REMOTE_INSTANCE_x</tt>
You need to make sure, that the name of the variable including
the hostname is unique for every database in <tt>mk_oracle.cfg</tt>.
-Only 3 '_' are allowed in front of the piggyback hostname.
-Otherwise the plugin won't work correctly. The Oracle Release must
-be 9.2, 10.1, 10.2, 11.1, 11.2 or 12.1. No other values are allowed.
+The Oracle Release must be 9.2, 10.1, 10.2, 11.1, 11.2 or 12.1.
+No other values are allowed.
Don't forget to use the testmode before starting the inventory on
the monitoring host.
diff --git a/agents/plugins/mk_oracle b/agents/plugins/mk_oracle
index f0599bf..f07030c 100755
--- a/agents/plugins/mk_oracle
+++ b/agents/plugins/mk_oracle
@@ -694,7 +694,7 @@ function set_oraenv () {
if [[ "$SID" =~ ^REMOTE_INSTANCE_.* ]] ; then
# we get the ORACLE_HOME from mk_oracle.cfg for REMOTE execution
- ORACLE_HOME=${ORACLE_HOME:-${REMOTE_ORACLE_HOME}}
+ ORACLE_HOME=${ORACLE_HOME:-${ORACLE_HOME_REMOTE}}
else
# we need to keep an existing ORACLE_SID in remote mode
@@ -835,7 +835,7 @@ function sqlplus() {
TNSALIAS=$(echo $REMOTE_VARNAME | cut -d"_" -f3-)
# we need to add the piggyback sections!
- remote_hostname=$(echo $SID | cut -d"_" -f4-)
+ remote_hostname=$(echo ${ORACFGLINE} | cut -d":" -f$[6])
# build the piggyback information in loc_stdin
# <<<<hostname>>>> SQL-Statements <<<<>>>>
@@ -1114,12 +1114,13 @@ function do_instance() {
# '----------------------------------------------------------------------'
# Are there any remote configurations?
-for element in $(compgen -A variable | grep -E "^REMOTE_INSTANCE_.*_.*") ; do
+for element in $(compgen -A variable | grep -E "^REMOTE_INSTANCE_.*") ; do
REMOTE_DBS=$REMOTE_DBS" "$element
- element_suffix=$(echo $element | cut -d"_" -f4-)
- REMOTE_HOSTLIST=${element_suffix}" "${REMOTE_HOSTLIST}
+ remote_hostname=$(echo $element | cut -d":" -f6)
+
+ REMOTE_HOSTLIST=${remote_hostname}" "${REMOTE_HOSTLIST}
done
if [ "$REMOTE_HOSTLIST" ] ; then
@@ -1127,9 +1128,9 @@ if [ "$REMOTE_HOSTLIST" ] ; then
REMOTE_HOSTLIST=$(echo $REMOTE_HOSTLIST | tr ' ' '\n' | sort | uniq)
# create empty piggyback SECTIONS
- for remote_hostname in $REMOTE_HOSTLIST ; do
+ for element in $REMOTE_HOSTLIST ; do
- rhostname=$(echo $remote_hostname | cut -d"_" -f3- )
+ remote_hostname=$(echo $element | cut -d":" -f6)
echo "<<<<"$remote_hostname">>>>"
for section in $SYNC_SECTIONS $ASYNC_SECTIONS $SYNC_ASM_SECTIONS $ASYNC_ASM_SECTIONS
@@ -1206,6 +1207,9 @@ for REMOTE_DB in $REMOTE_DBS ; do
# the ORACLE_SID is needed for the oracle_instance check for ASM and normal instance
ORACLE_SID=$(echo $REMOTE_DB_LINE | cut -d":" -f7)
+ # This is the piggyback hostname
+ remote_hostname=$(echo $element | cut -d":" -f6)
+
get_oraversion $REMOTE_DB
do_instance $REMOTE_DB
done
Bugfix for checkpoints in the future
Message-ID: <552d17d2.5dAByGC3VNxJq6Zz%mk(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: a2a035b3283099b51cb9fdea324b41d5d7950782
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a2a035b3283099…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Apr 14 15:36:13 2015 +0200
#1905 FIX: oracle_recovery_status: Bugfix for checkpoints in the future
---
.werks/1905 | 13 +++++++++++++
ChangeLog | 1 +
checkman/oracle_recovery_status | 5 ++++-
checks/oracle_recovery_status | 16 +++++++++++++---
4 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/.werks/1905 b/.werks/1905
new file mode 100644
index 0000000..51ac4ae
--- /dev/null
+++ b/.werks/1905
@@ -0,0 +1,13 @@
+Title: oracle_recovery_status: Bugfix for checkpoints in the future
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.7i1
+Date: 1427882680
+Class: fix
+
+The check results in CRITICAL state when the last checkpoint time is in
+the futute. This is possible after daylight changes or after a change of
+time on the database server after the start of the instance.
+This has been corrected. The check leads to a WARNING state when the last
+checkpoint is in the future and the time is displayed as a result.
diff --git a/ChangeLog b/ChangeLog
index 9b471eb..6fe6419 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -315,6 +315,7 @@
* 2110 FIX: netapp_api_aggr: check did not take configured levels when using Nagios
* 1954 FIX: fileinfo / fileinfo.groups: Fixed discovery function for fileinfo groups and equalize agent output of fileinfo agents...
* 1904 FIX: mk_oracle: added processes check to ASM...
+ * 1905 FIX: oracle_recovery_status: Bugfix for checkpoints in the future...
* 2111 FIX: hitachi_hnas_volume: fix for cases when size information of volumes is not available
* 2190 FIX: jolokia_metrics.gc: Fixed exception in check if no warn/crit levels are defined
* 2192 FIX: check_notify_count": Fix exception in PNP template in case of explit email addresses...
diff --git a/checkman/oracle_recovery_status b/checkman/oracle_recovery_status
index 5f42a03..bc2ffbc 100644
--- a/checkman/oracle_recovery_status
+++ b/checkman/oracle_recovery_status
@@ -10,7 +10,7 @@ description:
of an archived redolog will move the checkpoint of the database. This
is a usual way to monitor the apply of archived redologs on a Physical
Standby Database without Data Guard. This is normaly needed for
- Standard Edition Databases. There is an imporatnt difference between
+ Standard Edition Databases. There is an important difference between
Primary and Standby Database. Primary will only create WARNINGs, when
the level of levels is exceeded. A value for CRITICAL is only usable
when the Database is in Physical Standby Mode.
@@ -25,6 +25,9 @@ description:
monitored. The rule describes the maximum time for an active backup
mode for a datafile until a WARN or CRIT is generated.
+ If the last checkpoint time is in the future the check generates a WARN
+ and is displaying an information to check the time on the host system.
+
{Important Information}
There is no checkpoint created if a database is in backup mode. It
is expected, that the checkpoint time could also reach a configured
diff --git a/checks/oracle_recovery_status b/checks/oracle_recovery_status
index e98e34f..b1482e2 100644
--- a/checks/oracle_recovery_status
+++ b/checks/oracle_recovery_status
@@ -41,7 +41,7 @@ def inventory_oracle_recovery_status(info):
def check_oracle_recovery_status(item, params, info):
state = 0
offlinecount = 0
- oldest_checkpoint_age = -1
+ oldest_checkpoint_age = None
oldest_backup_age = -1
backup_count = 0
@@ -75,16 +75,26 @@ def check_oracle_recovery_status(item, params, info):
if datafilestatus == 'ONLINE':
checkpoint_age = int(checkpoint_age)
- oldest_checkpoint_age = max(oldest_checkpoint_age, checkpoint_age)
+ if oldest_checkpoint_age is None:
+ oldest_checkpoint_age = checkpoint_age
+ else:
+ oldest_checkpoint_age = max(oldest_checkpoint_age, checkpoint_age)
else:
offlinecount += 1
if itemfound == True:
infotext = "%s database" % (database_role.lower())
- if oldest_checkpoint_age == -1:
+ if oldest_checkpoint_age is None:
infotext += ", no online datafiles found(!!)"
state = 2
+
+ elif oldest_checkpoint_age <= -1:
+ # we found a negative time for last checkpoint
+ infotext += ", oldest checkpoint is in the future %s(!), check the time on the server" \
+ % get_age_human_readable(int(oldest_checkpoint_age)*-1)
+ state = 1
+
else:
infotext += ", oldest Checkpoint %s ago" \
% (get_age_human_readable(int(oldest_checkpoint_age)))