元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2010/08/27

モニタリング

Linux等でのログのモニタリングで簡単にアラートをキャッチするワンライナー


昔、『「ping -a」で音が鳴る!』なエントリでも書いたのですが、何らかをリアルタイムにチェック/監視したい時に、視覚だけではなくアラートが一緒に出ると、モニタリングしやすいものです。

というわけで、Linuxなんかで、とあるログファイルの出力から、ある文字列が検出された際に、ビープ音を鳴らすワンライナーは以下。

$ tail -f ログファイル | sed -e 's/\(対象文字列\)/\1^G/'

上記を実行中に、指定ログファイルに対象文字列が出力されるとビープ(Beep)音が鳴るはず。

^G」(0x07)の部分が、ASCIIのBELキャラクタのリテラルです。

$ echo -n "^G"

などとしてやれば、ベル(ビープ音)が鳴りますよね。

ちなみに、「^G」は、[Ctrl-V] ⇒ [Ctrl-G] の順に入力してやればOK。emacsだと[Ctrl-Q] ⇒ [Ctrl-G]かな。

人手によるログ監視w や、開発時のテストなんかのお供にいかがでしょうか。


ちょっと応用

せっかくなので、音だけではなく出力される文字表示にアレンジを加える場合は、エスケープシーケンスを活用します。

例えば、下記の例は、ログ内に"error"という文字列が出力された場合に、ビープ音と画面(標準出力)に表示される"error"の文字列を反転させて表示させるというもの。

# tail -f /var/log/messages | sed -e 's/\(error\)/^[[7m\1^[[m^G/'

^[」はESCを示します。「ESC[7m」はリバース、すなわち反転を示すエスケープコードです。「ESC[m」は「ESC[0m」と同じ意味合いで属性を無指定にする(指定属性をクリアする)意味となります。

ちなみに、「^[」は[Ctrl-V] ⇒ [ESC]で入力します。

・・・で、結果は以下のような感じです。少し目立つようになりました。(# めんどくさかったので、rootで作業しちゃったYO!w)

f:id:rx7:20100827005915p:image


エスケープコードは、複数組み合わせることができ、この場合、「;」(セミコロン)で区切ってやります。

例えば、以下は「ESC[4m」(下線)と「ESC[31m」(赤に色付け)を組み合わせた例です。

# tail -f /var/log/messages | sed -e 's/\(error\)/^[[4;31m\1^[[m^G/'

結果は以下のような感じ。これも目立ちますね。

f:id:rx7:20100827005916p:image


その他のエスケープシーケンス(VT-100エミュレーション)については、以下のリンク先が詳しいです。もっとアレコレしたい方はご参考までに。


参考


はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)