/etc/munin/plugins/mysql_replag
マスタースレーブレプリケーションの状態を確認するためにMySQLサーバーを照会するMuninスクリプトがあります。
#!/bin/sh
# Plugin to monitor the Seconds_Behind_Master of replication on a MySQL slave
MYSQLOPTS="$mysqlopts"
MYSQL=${mysql:-mysql}
if [ "$1" = "autoconf" ]; then
$MYSQL --version 2>/dev/null >/dev/null
if [ $? -eq 0 ]
then
$MYSQL $MYSQLOPTS -e '' 2>/dev/null >/dev/null
if [ $? -eq 0 ]
then
echo yes
exit 0
else
echo "no (could not connect to mysql)"
fi
else
echo "no (mysql not found)"
fi
exit 1
fi
if [ "$1" = "config" ]; then
echo 'graph_title Replication lag'
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel lag in secs'
echo 'graph_category mysql'
echo 'lag.label lag'
exit 0
fi
/usr/bin/printf "lag.value "
mysql $MYSQLOPTS -e 'show slave status\G' | grep Seconds_Behind_Master | awk '{print $2}'
プラグイン設定ファイルは次のとおりです/etc/munin/plugin-conf.d/mysql_replag
。(注:編集済み)
[mysql_replag]
user root
env.mysqlopts -umyuser -pmyp4ssw0rd -h 10.13.13.13
ただし、プラグインを実行すると、プラグイン構成ファイルは明らかに無視されます。
# munin-run mysql_replag
lag.value ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
設定ファイルからMySQLオプションを削除し、変数を介してプラグインから直接指定すると、プラグインは機能します$MYSQLOPTS
。構成ファイルが無視されるのはなぜですか?
答え1
muninの変数は、env.var myvariableではなくenv.myvariableを使用して宣言されます。
env.mysqlopts -umyuser -pmyp4ssw0rd -h 10.13.13.13
答え2
mysql_queries
以下で見つけた形式なので、この形式を使用してプラグインを構成しようとしています。/usr/share/munin/plugins/mysql_
[mysql*]
env.mysqluser MyUser
env.mysqlpassword MyPassword
Patrice Levesqueの答えのおかげで、いくつかのMysql muninプラグイン(例mysql_queries
:)が次の形式を使用していることに気づきました。
[mysql_queries]
env.mysqlopts -uMyUser -pMyPassword