mysqld_mulch環境でのmysql.threads値取得に関して
いつもお世話になっております。togawaと申します。
この度初めての投稿になります。
過去の投稿を参照しましたが、
同一のケースが見つからず、知恵をお貸し頂ければと思い投稿させて頂いた次第です。
●動作環境
OS:CentOS 5.8 x86_64
Zabbix:zabbix-1.8.14-1
DB my.cnf設定
[mysqld1]
port = 3306
datadir = /var/lib/mysql/var1/
socket = /var/lib/mysql/var1/mysql.sock
※mysqld_multiを利用し、上記mysqld1の他に2,3の計3つのDBが1台のサーバで動作している状況です。
このサーバにおいて、以下スレッド数取得コマンドを実行すると正常に値が返ってきます。
mysqladmin -uroot -h127.0.0.1 -S/var/lib/mysql/var1/mysql.sock -P3306 status|cut -f3 -d":"|cut -f1 -d"Q"
しかしこの設定をzabbix_agent.confにUserParameterで設定し、監視下に置くと、ZBX_NOTSUPPORTEDが返ってきて正常に取得できない状況です。
⇒UserParameter=mysql.threads,mysqladmin -uroot -h127.0.0.1 -S/var/lib/mysql/var1/mysql.sock -P3306 status|cut -f3 -d":"|cut -f1 -d"Q"
【エラーログ】
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!
エラーログを見る限り、ユーザパラメータで指定した”/var/lib/mysql/var1/mysql.sock”を見てくれず、
mysqlデフォルトの”/var/lib/mysql/mysql.sock”を見ていると思われます。
こちらを解決する方法ご存知の方いらっしゃいましたら、ご返答頂ければ幸いです。
お手数かけ致しますが、よろしくお願いいたします。
fripper - 投稿数: 495
UserParameter 句は、「sh -c」の引数として、そのまま渡される仕様のようです。
sh -c mysql.threads,mysqladmin -uroot -h127.0.0.1 -S/var/lib/mysql/var1/mysql.sock -P3306 status|cut -f3 -d":"|cut -f1 -d"Q"
-XX といった形の引数を与えると、 sh 側がそれをパースしてしまい、意図せぬエラーとなった経験があります
zabbix_agentd.conf へ直接パラメータ類を記載するのではなく、シェルスクリプト等を経由しては
いかがでしょうか?
togawa - 投稿数: 2
なるほど、そういった仕様だったのですね。
シェルスクリプトを経由する方法で行ったところ、正常に取得することができました。
大変助かりました。助言いただきありがとうございました。