CentOS6にMonitをインストールしてMariaDB(MySQL)の死活監視

monitMariaDB Galera ClusterのノードになっているサーバーがPIDファイルを残したまま止まるので死活監視サービスを導入しようと調査したときの覚書。

環境: CentOS 6.7, MariaDB 10.0.21, Monit 5.14

 

目次

  1. ある日のエラー
  2. 監視ツールの選定
  3. MonitをYUM経由でインストール・設定

 


1.ある日のエラー

Node.jsからデータベース(MariaDB Galera Cluster)に接続できなくて状態を確認したら、こんなメッセージ。

# /etc/rc.d/init.d/mysql status

ERROR! MySQL is not running, but PID file exists

原因不明。あとで詳しく調べる。

ロードバランサになっているサーバーに監視ツールを導入して、エラーになったらメールを送る仕組みを構築することにした。

 


2.監視ツールの選定

サーバー監視ツールとして「Zabbix」が人気らしい。

けど、監視するサーバーにApacheやMySQLが必要。このためだけに複数サービスをインストールしたくない。

Monitを使うと簡単に監視できるらしい。

 


3.MonitをYUM経由でインストール・設定

EPELのYUMリポジトリからインストール。
# yum install monit

設定するのに参考にしたサイト

 

まずはインストール直後の設定ファイルを眺める
# less /etc/monit.conf

メールの設定をする
# vi /etc/monit.d/mail.conf

set mailserver localhost
set alert info@hoge.co.jp
set mail-format {
  from: info@hoge.co.jp
}

ローカルのMariaDB(MySQL)を監視してみる
# vi /etc/monit.d/mysqld.conf

check host APP01 with address localhost
  if failed
    port 3306
    protocol MYSQL username "user" password "pass"
  then alert

サービス起動。自動起動にもしとく。
# /etc/rc.d/init.d/monit start
# chkconfig monit on

"Monit instance changed"のメールが届く。

MariaDBを停止してみる。
# /etc/rc.d/init.d/mysql stop

メールが届けば成功。デフォルトでは30秒感覚でチェックしてる。

MariaDBを起動すると、接続に成功したとメールが来る。

 

あとは本番環境で設定ファイルの「localhost」「user」「pass」を監視対象のIPアドレスとデータベースのパスワードに設定すれば動くはず。

MariaDB Galera Clusterと別ネットワークの場合はファイヤーウォールの設定などが必要。

 

 

< Related Posts >