Perconatemplateダウンロード
ダウンロードやインストールは公式のページでだいたいいけます。
http://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html
※1台のサーバーに"複数のMySQLをインストールしポートを3306,3307とか分けてあるサーバーを対象としています。
あとZabbix Agentがインストール済の前提です。
ポート3306,3307,3308がリッスンしてるmysql3ついてZabbixAgent入ってるdbsvrサーバーで実施。
リポジトリを入れる
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
zabbix用percona-templateを入れる
yum install percona-zabbix-templates-1.1.4-1.noarch
テンプレートをインストールするとテンプレートが配置されるだけです。
[root@dbsvr yum.repos.d]# ls -lR /var/lib/zabbix/percona/
/var/lib/zabbix/percona/:
合計 8
drwxr-xr-x 2 root root 4096 2月 12 08:57 2015 scripts
drwxr-xr-x 2 root root 4096 2月 12 08:57 2015 templates
/var/lib/zabbix/percona/scripts:
合計 64
-rwxr-xr-x 1 root root 1251 7月 21 19:02 2014 get_mysql_stats_wrapper.sh
-rwxr-xr-x 1 root root 58226 7月 21 19:02 2014 ss_get_mysql_stats.php
/var/lib/zabbix/percona/templates:
合計 284
-rw-r--r-- 1 root root 18866 7月 21 19:02 2014 userparameter_percona_mysql.conf
-rw-r--r-- 1 root root 269258 7月 21 19:02 2014 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.4.xml
入れたテンプレートを移動
対象これ↓
userparameter_percona_mysql.conf
zabbix agentに読み込ませる為、/etc/zabbix/zabbix_agentd.d/配下にコピーします。
cp -pr /var/lib/zabbix/percona/template/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
デフォルトだとIncludeするファイル置き場は上記のはず
[root@dbsvr zabbix_agentd.d]# cat /etc/zabbix/zabbix_agentd.conf | grep Include
Option: Include
Include=
Include=/etc/zabbix/zabbix_agentd.d/
これがperconaのmysql用zabbix userparamterですね。これをZabbix ServerがAgentに叩かせます。
はい、準備完了です。
環境に合わせた修正点を加えます。
修正点1、user,pass,port
ポートやパスワード情報をpercona scriptsに記載します。
これ
[root@dbsvr zabbix_agentd.d]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php | grep \$mysql
$mysql_user = 'cactiuser';
$mysql_pass = 'cactiuser';
$mysql_port = 3306;
$mysql_ssl = FALSE; # Whether to use SSL to connect to MySQL.
$mysql_ssl_key = '/etc/pki/tls/certs/mysql/client-key.pem';
$mysql_ssl_cert = '/etc/pki/tls/certs/mysql/client-cert.pem';
$mysql_ssl_ca = '/etc/pki/tls/certs/mysql/ca-cert.pem';
これのuser,pass,portを環境に合わせてください。
修正点2、ZabbixServer
Zabbix用テンプレートをZabbixServerに入れます。
以下からpercona-monitoring-plugins-1.1.4.tar.gzをダウンロードし、zabbixのGUIからConfiguration -> Templates -> Importの順でインポートします。
http://www.percona.com/downloads/percona-monitoring-plugins/
詳細は割愛しますが、ZabbixServerから監視アイテムを追加します。
もちろん今回入れたPercona-mysql-templateにあるものです。
キーはこちらのものが監視可能です。たくさんあります。
[root@dbsvr zabbix_agentd.d]# head /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
UserParameter=MySQL.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt
UserParameter=MySQL.slave-stopped,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh
UserParameter=MySQL.Com-replace,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jz
UserParameter=MySQL.innodb-lock-structs,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lp
UserParameter=MySQL.Com-load,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kg
UserParameter=MySQL.State-updating,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh mi
UserParameter=MySQL.Aborted-clients,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ip
これで監視できる状態になっていると思います。
1台のサーバーの1つのMySQL対してです。
修正点3(本題)
こっからが本題ですが、これだと1台の例えば3306ポートをリッスンしてるMySQLのみしか監視できません。
なのでまずZabbix側が認識する監視アイテムのキーを分ける為、userparameter_percona_mysql.confファイルを分けます。
cp -pr userparameter_percona_mysql.conf userparameter_percona_mysql3307.conf
とかにして、中身も以下のように修正します。例えばです。
キーの名前を"MySQL.Sort-scan"から"MySQL2.Sort-scan"に変えただけですが。
[root@stg-db01 dbsvr]# head /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql3307.conf
UserParameter=MySQL2.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh kt
UserParameter=MySQL2.slave-stopped,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh jh
UserParameter=MySQL2.Com-replace,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh jz
UserParameter=MySQL2.innodb-lock-structs,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh lp
UserParameter=MySQL2.Com-load,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh kg
UserParameter=MySQL2.State-updating,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh mi
UserParameter=MySQL2.Aborted-clients,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh ip
UserParameter=MySQL2.innodb-lock-wait-secs,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh ni
UserParameter=MySQL2.Handler-read-key,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh mr
UserParameter=MySQL2.file-reads,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper2.sh gy
次にuser,pass,portの情報も分ける必要があるので、ss_get_mysql_stats.phpファイルも分けます。
cp ss_get_mysql_stats.php ss_get_mysql_stats3307.php
とかにして、中身を以下のように修正します。ここは修正ポイントが明確ですね。
[root@dbsvr zabbix_agentd.d]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php | grep \$mysql
$mysql_user = 'newuser';
$mysql_pass = 'newpassword';
$mysql_port = 3307;
あと上記のss_get_mysql_stats.phpをキックしているシェルがあるのでそちらも分けたい数分作ります。
ファイルはこれ、get_mysql_stats_wrapper.sh
場所は上記と同じ位置、/var/lib/zabbix/percona/scripts
修正箇所は
①
ファイル内に記載してあるss_get_mysql_stats.phpのファイル名(先ほどDIR/ss_get_mysql_stats3307.phpに変更したので)
get_mysql_stats_wrapper.shファイル内のここ
CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"
これに
CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats3307.php --host $HOST --items gg"
②
以下の行のmysqlのパスが、複数のMySQLを入れてれば違うと思うので適宜変えてください。
これを
RES=HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','
これに(例)
RES=HOME=~zabbix /usr/local/mysql_test -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','
③
あとここも変えてください。
これを
CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt"
これ
CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt:3307"
少しハマったのですが以下のようにいちいち添付ファイル作ってそれをsed,grep,awkして値返してるのです。
なのでこのファイル名を変えておかないとファイル名が被って変な事になります。
# Parse cache file
if [ -e $CACHEFILE ]; then
cat $CACHEFILE | sed 's/ /\n/g; s/-1/0/g'| grep $ITEM | awk -F: '{print $2}'
else
echo "ERROR: run the command manually to investigate the problem: $CMD"
fi
あとは新しく追加したキーをZabbixServerに登録で完了
以上。自分備忘録。30分くらいで書いたので雑です。。