Skip to content

Latest commit

 

History

History
67 lines (43 loc) · 2.89 KB

README.md

File metadata and controls

67 lines (43 loc) · 2.89 KB

vertx-webtail

Simple "tail -f" using websocket on Vert.x

Vert.xを利用したシンプルなtailコマンドのサンプルです。

timerで一定時間おきにファイルサイズをチェックし、ファイルサイズが増加していたら差分をイベントバスに送信し、WebSocketサーバー経由でブラウザにリアルタイム表示します。

一応、ファイルの読み込み部分はファイルサイズが大きくなっても耐えられるよう、NIO2のSeekableByteChannelとByteBufferを利用してランダムアクセスを行っています。

このサンプルは、2014/1/17開催の新春恒例GGX2013ロンドン報告&LT大会! - JGGUG G*ワークショップZ Jan 2014で発表した内容に、多少手を加えたものです。 発表資料はこちらです。

前提条件

  • JDK7以上
  • Vert.x 2.0以上(2.1M2で動作確認済み)
  • WebSocket対応ブラウザ

利用方法

vert.xインストール

http://vertx.io/install.html を参照してください。

Bashが使える環境でしたら、GVMを利用するのがオススメです。

できればvertxコマンドにパスを通しておく方が何かと楽です。

vertx-webtail(このモジュール)取得

適当なフォルダでgit cloneなりしてください。vert.x以外への依存関係はないので、配置先など特に制限はありません。

監視対象ファイル設定

WebTail.conf(JSON)を編集して、

  • tail対象のファイル名
  • WebSocketのポート

を指定してください。

起動

$ vertx run WebTail.groovy -conf WebTail.conf

サーバーが起動したら、WebSocket対応ブラウザ(Chrome/Safari等)で http://localhost:<websocket_port/ を開いてください。

1秒おきに監視対象のファイルの内容の更新差分がブラウザに表示されるはずです。例えば以下のコマンドなどで試してください。

$ for i in {1..5}; do date >> /tmp/dummy.log; sleep 1; done

$ cat /dev/null > /tmp/dummy.log

参考情報

ToDo

  • エラーハンドリング全般
  • フィルタ(メッセージ変換)でJSON化など->ElasticSearch連携とか
  • セキュリティ確保の仕組み