いくつかのファイルをまとめて tail する簡易スクリプト

やりたいこと

サービスリリース時に、先に局所的なデプロイをして様子を見る際などに使う

(実際に使っている)ユースケース

  • 広告配信サーバーが数百台あり、リリース時には手始めに1台にデプロイして動作確認というフェーズがある
    • この時、該当1台はバランサーから外している
  • 配信サーバーは、以下の3つのプロセスで成り立っている
    • 広告タグが貼られているメディアからのアクセスを受けるエンドポイント的なApache
    • 配信案件の管理し、場合によってRTBプロセスへのリクエストを行うPlackアプリケーション
    • DSPへのRTBやりとり(外部通信)を行う、RTB
    • 処理の流れとしては メディア -> Apache -> Plack -> RTB -> DSP -> RTB -> Plack -> Apache -> メディア となる
  • 先行1台での動作確認時には以下のあたりを確認したい

で、どうやるか?

簡易的なスクリプトを作ってましたが、ちょっとだけ直して外部に切り出してみました

How To Use の項目のままなのですが、clone して make すれば動きます
もうちょっと詳しく書くと、

  • 実態はperl スクリプト
  • make setup で必要なCPAN Module を $REPOS/local 配下にinstall
    • 正しくはcpanm を拾ってくる所からやるべきですが、手抜きしてリポジトリ内に同封してます
  • etc/config.yaml を 編集します
    • path : (必須)tailしたいログファイルのFull Pathを記入。アクセスログ等はローテートすると思いますが、動的な日付部分は POSIX::strftime() 形式で書けます。File::RotateLogsのやり方をパクりました
    • color : (必須)Term::ANSIColor で色付けして出力するための色指定です
    • option : (任意) File::Tail で出力する際のオプション指定
  • 編集したconfig.yaml のフォーマットが正しいか make test で確認できます
  • make run すれば、動きます。無限ループで動き続けるので、 Ctrl + C で切ってください

画面イメージ

f:id:masartz:20160923110540j:plain

まとめ

Term::ANSIColor や File::Tail など、既存のCPAN Moduleを使えてお手軽に作れました
運用上のログ監視はこんなのとは全然違うしっかりした仕組みがあるので、
あくまでリリース時の開発者作業の一助に過ぎません。そのスコープにおいてはこれで十分かと思います