フタなしカンヅメ

徒然なるままに @happytar0

Scribeでログの集約・収集【中編】

前編ではScribeのインストールと動作確認までおこないました。実際にWebサーバのログをScribeで処理していくわけですが、その前にネットワークを経由して正常にログの受け渡しができるかどうかを調べていきます。

別のサーバにもScribeをインストールして試したほうがいいのですが、今回はローカル内にポートを変えて二つのscribedを起動して検証します。

## ログサーバ側と仮定 ###
## 今回は設定サンプルのcentralというのを使ってみる 
$ mkdir /tmp/scribetest
$ /usr/local/bin/scribed examples/example2central.conf

## Webサーバ側と仮定 ###
## 別のシェルから同じように設定ファイルを変えて立ち上げる
$ mkdir /tmp/scribetest2
$ /usr/local/bin/scribed examples/example2client.conf

## 別シェルからWebサーバ(ポート1464)に向けて、メッセージを送信
## -h オプションで送信先を指定できる
$ echo "web server message." | ./examples/scribe_cat -h localhost:1464 log

## Webサーバ側で下記のようなメッセージが出力される
## ログサーバにメッセージが送信された
[Thu Jul 30 19:37:50 2009] "Successfully sent <1> messages to remote scribe server <localhost:1463>"

## メッセージを受信できたか調べる
$ cat /tmp/scribetest/log/log_current
web server message.

## ログサーバ(ポート1463)を停止してみる
# ./examples/scribe_ctrl stop 1463

## 次に停止してるログサーバに向けてメッセージを送信
$ echo "hello tokyo." | ./examples/scribe_cat -h localhost:1463 log

## 次のようなメッセージを出力
[Thu Jul 30 19:40:38 2009] "Failed to send <1> messages to remote scribe server <localhost:1463> error <No more data to read.>" 
Thrift: Thu Jul 30 19:40:38 2009 TSocket::open() error on socket (after poll) <Host: localhost Port: 1463>Connection refused
[Thu Jul 30 19:40:38 2009] "failed to open connection to remote scribe server <localhost:1463> thrift error <socket open() error: Connection refused>" 
[Thu Jul 30 19:40:38 2009] "[log] Opened file </tmp/scribetest2/log/log_00000> for writing" 
[Thu Jul 30 19:40:38 2009] "[log] choosing new retry interval <29> seconds" 
[Thu Jul 30 19:40:38 2009] "[log] Changing state from <STREAMING> to <DISCONNECTED>" 

## ログサーバを復帰させる
$ /usr/local/bin/scribed examples/example2central.conf
[Thu Jul 30 19:42:36 2009] "Opened connection to remote scribe server <localhost:1463>" 
[Thu Jul 30 19:42:36 2009] "[log] Changing state from <DISCONNECTED> to <SENDING_BUFFER>" 
[Thu Jul 30 19:42:36 2009] "[log] successfully read <1> entries from file </tmp/scribetest2/log/log_00000>" 
[Thu Jul 30 19:42:36 2009] "Successfully sent <1> messages to remote scribe server <localhost:1463>" 
[Thu Jul 30 19:42:36 2009] "[log] No more buffer files to send, switching to streaming mode" 
[Thu Jul 30 19:42:36 2009] "[log] Changing state from <SENDING_BUFFER> to <STREAMING>" 

## 復帰したログサーバにメッセージが届いているか確認
$ cat /tmp/scribetest/log/log_current
web server message.
hello tokyo.

無事に成功しました。これでネットワーク経由でログメッセージのやり取りが可能だということがわかりましたので、次は実際にWebサーバのログをやり取りしていきたいと思います。