cactiで利用されるmk-heartbeatのデーモンを動かす

1. cactiで利用されるmk-heartbeat

現在、cactiでmk-heartbeatと呼ばれるレプリケーションの遅延計測を行っている。

maatkitと呼ばれる、perlで書かれたスクリプト群があり、その中にレプリケーション遅延がどれぐらい発生しているかを調べるためのツールがある。

そのツールとcactiを利用して遅延を計測し、遅延が一定値を超えた時など必要に応じてアラートメールを飛ばすようにしている。

repl

2. mk-heartbeatの仕組み

cactiでレプリケーションの遅延を計測できる仕組みはこうだ

  1. マスタサーバにmk-heartbeatデーモンが定期的に現在時刻を書き込む
  2. 通常時であればスレーブがマスタサーバから書き込まれた時刻情報を転送してきて実行して更新する
  3. cactiでマスタサーバとの遅延を計測する

スレーブに何らかのエラーが発生してクエリの実行が止まった、またはトラフィックの増大やリソース不足により転送遅延や実行遅延が生じた場合、2、3にて時刻の差分が発生する。これをcactiが描画してくれる、という訳だ。

hb

さて、今回対象となるのは1番の、mk-heatbeatデーモンを起動させること。コレを起動させておかないと定期的な時刻がマスターサーバに書き込まれず、遅延を計測することが出来ない。

3. maatkitのインストール

mk-heatbeatデーモンを動かすホストはFreeBSDだ。maatkitはportsにあるのでそれを利用する。

インストールして、rc.confに必要事項を記載したらスタートアップスクリプトを書く。maatkitをインストールしただけだとスタートアップスクリプトが見つからなかった。

以前にmk-heatbeatをインストールしたのだけれど、そのときもどこかからか拾ってきたのだろうかな。

shell> portinstall –c databases/maatkit

shell> grep mkheartbeat /etc/rc.conf

mkheartbeat_enable="YES"
mkheartbeat_user="cacti"
mkheartbeat_dbhost="masterdb"
mkheartbeat_dbname="mkdb"
mkheartbeat_dbuser="dbuser"
mkheartbeat_dbpass="dbpass"


shell> more /usr/local/etc/rc.d/mk-heartbeat
#!/bin/sh

# PROVIDE: mk-heartbeat
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="mkheartbeat"
rcvar=`set_rcvar`
load_rc_config ${name}

: ${mkheartbeat_enable="NO"}
: ${mkheartbeat_user="root"}
: ${mkheartbeat_dbhost="localhost"}
: ${mkheartbeat_dbname="mysql"}
: ${mkheartbeat_dbuser="root"}
: ${mkheartbeat_dbpass="pass"}

command_interpreter="perl"
command_args="-D ${mkheartbeat_dbname} -h ${mkheartbeat_dbhost} -u ${mkheartbeat_dbuser} -p ${mkheartbeat_dbpass} --daemonize --update"
command="/usr/local/bin/mk-heartbeat"

run_rc_command "$1"

shell> /usr/local/etc/rc.d/mk-heartbeat start




最後にデーモンを起動してオシマイ。

コメントを残す