Module: check_mk
Branch: master
Commit: cb8c4bdc3d53f71d7d30de387fc4daf00a73f7cb
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=cb8c4bdc3d53f7…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Dec 18 16:53:55 2018 +0100
7013 FIX mk_mysql: Fixed detecting wrong MySQL instances
On systems with mysqld running together with php-cgi using specific options on the command
line
(like it is done by Check_MK sites), it could happen that the mk_mysql agent plugin
detects not
existing MySQL instances which leads to UNKNOWN services in Check_MK.
Processes that lead to wrong discovered services look like this:
root 901 1 0 Dec10 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 1274 901 0 Dec10 ? 01:27:32 /usr/sbin/mysqld --basedir=/usr
--datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql
--log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid
--socket=/var/run/mysqld/mysqld.sock --port=3306
wiki 16937 32282 0 13:21 ? 00:00:00 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/wiki/tmp/php/session -d
upload_tmp_dir=/omd/sites/wiki/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/wiki/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/wiki/tmp/run/mysqld/mysqld.sock
intern 27074 32276 0 10:39 ? 00:00:00 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/intern/tmp/php/session -d
upload_tmp_dir=/omd/sites/intern/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/intern/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/intern/tmp/run/mysqld/mysqld.sock
wiki 29129 32282 0 10:46 ? 00:00:02 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/wiki/tmp/php/session -d
upload_tmp_dir=/omd/sites/wiki/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/wiki/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/wiki/tmp/run/mysqld/mysqld.sock
root 29561 26105 0 16:51 pts/0 00:00:00 grep mysqld
wiki 30673 32282 0 09:00 ? 00:00:03 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/wiki/tmp/php/session -d
upload_tmp_dir=/omd/sites/wiki/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/wiki/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/wiki/tmp/run/mysqld/mysqld.sock
Only the process 1274 should be detected as MySQL instance.
Change-Id: I0740ace0d5b2b86b111cd0faafc17104b597a0ec
---
.werks/7013 | 25 +++++++++++++++++++++++++
agents/plugins/mk_mysql | 6 +++---
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/.werks/7013 b/.werks/7013
new file mode 100644
index 0000000..561a350
--- /dev/null
+++ b/.werks/7013
@@ -0,0 +1,25 @@
+Title: mk_mysql: Fixed detecting wrong MySQL instances
+Level: 1
+Component: checks
+Class: fix
+Compatible: compat
+Edition: cre
+State: unknown
+Version: 1.6.0i1
+Date: 1545148271
+
+On systems with mysqld running together with php-cgi using specific options on the
command line
+(like it is done by Check_MK sites), it could happen that the mk_mysql agent plugin
detects not
+existing MySQL instances which leads to UNKNOWN services in Check_MK.
+
+Processes that lead to wrong discovered services look like this:
+
+root 901 1 0 Dec10 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
+mysql 1274 901 0 Dec10 ? 01:27:32 /usr/sbin/mysqld --basedir=/usr
--datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql
--log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid
--socket=/var/run/mysqld/mysqld.sock --port=3306
+wiki 16937 32282 0 13:21 ? 00:00:00 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/wiki/tmp/php/session -d
upload_tmp_dir=/omd/sites/wiki/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/wiki/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/wiki/tmp/run/mysqld/mysqld.sock
+intern 27074 32276 0 10:39 ? 00:00:00 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/intern/tmp/php/session -d
upload_tmp_dir=/omd/sites/intern/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/intern/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/intern/tmp/run/mysqld/mysqld.sock
+wiki 29129 32282 0 10:46 ? 00:00:02 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/wiki/tmp/php/session -d
upload_tmp_dir=/omd/sites/wiki/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/wiki/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/wiki/tmp/run/mysqld/mysqld.sock
+root 29561 26105 0 16:51 pts/0 00:00:00 grep mysqld
+wiki 30673 32282 0 09:00 ? 00:00:03 /usr/bin/php5-cgi -d
session.save_handler=files -d session.save_path=/omd/sites/wiki/tmp/php/session -d
upload_tmp_dir=/omd/sites/wiki/tmp/php/upload -d
soap.wsdl_cache_dir=/omd/sites/wiki/tmp/php/wsdl-cache -d safe_mode=Off -d
mysql.default_socket=/omd/sites/wiki/tmp/run/mysqld/mysqld.sock
+
+Only the process 1274 should be detected as MySQL instance.
diff --git a/agents/plugins/mk_mysql b/agents/plugins/mk_mysql
index 72593da..be2254e 100755
--- a/agents/plugins/mk_mysql
+++ b/agents/plugins/mk_mysql
@@ -26,7 +26,7 @@
# gets optional socket as argument
function do_query() {
INSTANCE=$(echo $1|awk -v FS="=" '{print $2}')
- COUNT=$(ps -efww | grep [/]usr/sbin/mysqld | grep socket | wc -l)
+ COUNT=$(ps -fww -C mysqld | grep socket | wc -l)
if [ $COUNT -gt 1 ]
then
INSTANCE_NAME=$(ps -efww|grep socket|grep "${INSTANCE}"|grep
"[u]ser" | sed -ne 's/.*socket=\([^.]*\).*/\1/p')
@@ -68,7 +68,7 @@ if which mysqladmin >/dev/null
then
mysql_sockets=$(fgrep socket $MK_CONFDIR/mysql.cfg|sed -ne 's/.*socket=\([^
]*\).*/\1/p')
if [ -z "$mysql_sockets" ] ; then
- mysql_sockets=$(ps -efww | grep mysqld | grep "[s]ocket" | sed -ne
's/.*socket=\([^ ]*\).*/\1/p')
+ mysql_sockets=$(ps -fww -C mysqld | grep "[s]ocket" | sed -ne
's/.*socket=\([^ ]*\).*/\1/p')
fi
if [ -z "$mysql_sockets" ] ; then
do_query ""
@@ -81,7 +81,7 @@ then
#mysql -V
echo "<<<mysql_port>>>"
- ps -efww|grep mysqld|while read LINE; do echo $LINE|grep "[u]ser" | sed -ne
's/.*user=\([^ ]*\).*/\1/p'; echo $LINE|grep mysqld | grep "[p]ort"|sed
-ne 's/.*port=\([^ ]*\).*/\1/p' ; done|xargs -n2
+ ps -fww -C mysqld |while read LINE; do echo $LINE|grep "[u]ser" | sed -ne
's/.*user=\([^ ]*\).*/\1/p'; echo $LINE|grep mysqld | grep "[p]ort"|sed
-ne 's/.*port=\([^ ]*\).*/\1/p' ; done|xargs -n2
#echo "<<<mysql_instances>>>"
#mysql --defaults-extra-file=$MK_CONFDIR/mysql.cfg $1 -s \