
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)
エスケープコードは、複数組み合わせることができ、この場合、「;」(セミコロン)で区切ってやります。
例えば、以下は「ESC[4m」(下線)と「ESC[31m」(赤に色付け)を組み合わせた例です。
# tail -f /var/log/messages | sed -e 's/\(error\)/^[[4;31m\1^[[m^G/'
結果は以下のような感じ。これも目立ちますね。
その他のエスケープシーケンス(VT-100エミュレーション)については、以下のリンク先が詳しいです。もっとアレコレしたい方はご参考までに。
参考
LinuxサーバHacks―プロが使うテクニック&ツール100選
- 作者: ロブフリッケンガー,Rob Flickenger,山口晴広,イメージズアンドワーズ
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/11
- メディア: 単行本
- 購入: 4人 クリック: 44回
- この商品を含むブログ (47件) を見る
Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング
- 作者: Bill von Hagen,Brian K. Jones,菅野良二
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/10/24
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 21回
- この商品を含むブログ (29件) を見る







![[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)](http://ecx.images-amazon.com/images/I/51GW5jxmdvL._SL150_.jpg)
![[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用](http://ecx.images-amazon.com/images/I/51uK4ACymiL._SL150_.jpg)
![エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド](http://ecx.images-amazon.com/images/I/41oqE-9dM2L._SL150_.jpg)
![Googleを支える技術 ~巨大システムの内側の世界 [WEB+DB PRESS plusシリーズ] (WEB+DB PRESSプラスシリーズ)](http://ecx.images-amazon.com/images/I/51m8phYZbyL._SL120_.jpg)

















