このサイトにはプロモーションが含まれます

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

前提

Zabbixのインストール

以下2点を実施してZabbixが使える状態にしておいてください。

  • 監視する側にZabbixサーバーをインストール
  • 監視される側へZabbixエージェントをインストール

MySQLのインストール

監視される側のサーバーにはMySQLをインストールしておいてください。
MySQLのインストールが分からない場合は下記記事を参照してください。

やんやん

プログラマーとしてLEMP環境に主に生息しており、DevOps 的な立ち回りをしながらご飯を食べている当ブログの管理人のやんやんと申します。
最近はTmux使うのを辞めました。

 

監視するための準備

監視される側のサーバー

ユーザーの作成

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でフォローしよう

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