/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