前提
Zabbixのインストール
以下2点を実施してZabbixが使える状態にしておいてください。
- 監視する側にZabbixサーバーをインストール
- 監視される側へZabbixエージェントをインストール
MySQLのインストール
監視される側のサーバーにはMySQLをインストールしておいてください。
MySQLのインストールが分からない場合は下記記事を参照してください。
監視するための準備
監視される側のサーバー
ユーザーの作成
Zabbixエージェントが監視できるように監視される側のMySQLにユーザーを作成。
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password' grant all privileges on *.* to 'zabbix'@'%';
FLUSH PRIVILEGES;
※権限の割当は状況に合わせてください。
.my.cnfファイルの作成
「/var/lib/zabbix/.my.cnf」を作成してください。
デフォルトでは上記ファイルが存在しないのでtouchから実施することになります。
[client]
host=IP(監視される側のサーバーのIP)
user=zabbix
password='password'
※hostにはlocalhostを指定しても問題ないはずですが、自分の場合はIPを指定しないと動かなかったです。
userparameter_mysql.conf の設定
「/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 」を編集します。
このファイルでやりたいことは以下になります。
- 「--defaults-extra-file」オプションにてMySQLのconfigファイルを指定
- 「mysql.ping」「mysql.status」などのkeyとcommandを指定
UserParameter=mysql.ping[*], mysqladmin --defaults-extra-file=/var/lib/zabbix/.my.cnf UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -N | awk '{print $$2}' UserParameter=mysql.get_status_variables[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sNX -e "show global status" UserParameter=mysql.version[*], mysqladmin --defaults-extra-file=/var/lib/zabbix/.my.cnf -s version UserParameter=mysql.db.discovery[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sN -e "show databases" UserParameter=mysql.dbsize[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'" UserParameter=mysql.replication.discovery[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sNX -e "show slave status" UserParameter=mysql.slave_status[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sNX -e "show slave status"
※configファイルのパスやファイルの中身(ユーザー名やパスワード)が間違っていると正常に監視ができずエラー吐きます。
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/userparameters
監視する側のサーバーにて監視設定
Ping監視
画像がないので恐縮ですが、以下手順で実行することが出来ます。
- Zabbixサーバーにログインし、Webインターフェースを開く
- 監視対象のMySQLサーバーを選択し、「設定」>「ホスト」を選択
- 監視対象のMySQLサーバーの設定ページで、「アイテム」タブを選択
- 「アイテムの追加」をクリックし、以下の設定を入力
- キー:mysql.ping
- 名前:MySQL Ping
- タイプ:Zabbixエージェント
- タイプの情報:MySQLサーバーのIPアドレスまたはホスト名
- 「監視」>「グラフ」を選択し、グラフを作成
上記の設定で、ZabbixからMySQLサーバーへPingリクエストを定期的に送信し、「MySQLが生きているか」を監視できるようになります。
また、グラフを使用して、Ping応答時間の変化を視覚的に確認することもできます。
スロークエリ
MySQL側の設定
MySQLの設定ファイルに以下を設定し、スロークエリの検出を有効化します。
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
MySQLのスロークエリログは、長時間実行されたクエリを特定し、パフォーマンスの問題を特定するための有用なツールです。
my.iniはwindows用、my. cnfはwindows以外のOS用の設定ファイル
Zabbix側の設定
画像がないので恐縮ですが、以下手順で実行することが出来ます。
- Zabbixサーバーにログインし、Webインターフェースを開く
- 監視対象のMySQLサーバーを選択し、「設定」>「ホスト」を選択
- 監視対象のMySQLサーバーの設定ページで、「アイテム」タブを選択
- 「アイテムの追加」をクリックし、以下の設定を入力
- キー:mysql.slowqueries
- 名前:MySQL Slow Queries
- タイプ:Zabbixエージェント
- タイプの情報:MySQLサーバーのIPアドレスまたはホスト名
- 更新間隔:30秒(または必要に応じて変更します)
- アプリケーション:MySQL
- 「監視」>「トリガー」を選択し、トリガーを作成
- 名前:MySQL Slow Queries
- 説明:MySQL Slow Queries
- エスカレーション:通知する
- 表示:プロブレム
- 依存:なし
- 条件:{MySQL: mysql.slowqueries.last()}>0
- 縮小条件:なし
上記の設定でスロークエリを監視できますー。