[備忘録]ZabbixにてMySQL監視する

前提

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のスロークエリログは、長時間実行されたクエリを特定し、パフォーマンスの問題を特定するための有用なツールです。

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
    • 縮小条件:なし

上記の設定でスロークエリを監視できますー。

 

 

Twitterでフォローしよう

読んでみーな
おすすめの記事