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エミュレーション)については、以下のリンク先が詳しいです。もっとアレコレしたい方はご参考までに。

参考:US ASCII CODE LIST

+---------+---------+---------+---------+
|CHAR HEX |CHAR HEX |CHAR HEX |CHAR HEX |
+---------+---------+---------+---------+
|NUL  0x00|SP   0x20|@    0x40|`    0x60|
|SOH  0x01|!    0x21|A    0x41|a    0x61|
|STX  0x02|"    0x22|B    0x42|b    0x62|
|ETX  0x03|#    0x23|C    0x43|c    0x63|
|EOT  0x04|$    0x24|D    0x44|d    0x64|
|ENQ  0x05|%    0x25|E    0x45|e    0x65|
|ACK  0x06|&    0x26|F    0x46|f    0x66|
|BEL  0x07|'    0x27|G    0x47|g    0x67|
|BS   0x08|(    0x28|H    0x48|h    0x68|
|HT   0x09|)    0x29|I    0x49|i    0x69|
|LF   0x0a|*    0x2a|J    0x4a|j    0x6a|
|VT   0x0b|+    0x2b|K    0x4b|k    0x6b|
|NP   0x0c|,    0x2c|L    0x4c|l    0x6c|
|CR   0x0d|-    0x2d|M    0x4d|m    0x6d|
|SO   0x0e|.    0x2e|N    0x4e|n    0x6e|
|SI   0x0f|/    0x2f|O    0x4f|o    0x6f|
|DLE  0x10|0    0x30|P    0x50|p    0x70|
|DC1  0x11|1    0x31|Q    0x51|q    0x71|
|DC2  0x12|2    0x32|R    0x52|r    0x72|
|DC3  0x13|3    0x33|S    0x53|s    0x73|
|DC4  0x14|4    0x34|T    0x54|t    0x74|
|NAK  0x15|5    0x35|U    0x55|u    0x75|
|SYN  0x16|6    0x36|V    0x56|v    0x76|
|ETB  0x17|7    0x37|W    0x57|w    0x77|
|CAN  0x18|8    0x38|X    0x58|x    0x78|
|EM   0x19|9    0x39|Y    0x59|y    0x79|
|SUB  0x1a|:    0x3a|Z    0x5a|z    0x7a|
|ESC  0x1b|;    0x3b|[    0x5b|{    0x7b|
|FS   0x1c|<    0x3c|\    0x5c||    0x7c|
|GS   0x1d|=    0x3d|]    0x5d|}    0x7d|
|RS   0x1e|>    0x3e|^    0x5e|~    0x7e|
|US   0x1f|?    0x3f|_    0x5f|DEL  0x7f|
+---------+---------+---------+---------+
           US ASCII CODE LIST

via. http://homepage1.nifty.com/pokke/pdocs/pd7.html


LinuxサーバHacks―プロが使うテクニック&ツール100選

LinuxサーバHacks―プロが使うテクニック&ツール100選

  • 作者: ロブフリッケンガー,Rob Flickenger,山口晴広,イメージズアンドワーズ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2003/11/01
  • メディア: 単行本
  • 購入: 4人 クリック: 56回
  • この商品を含むブログ (51件) を見る
Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング

Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング

  • 作者: Bill von Hagen,Brian K. Jones,菅野良二
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2006/10/24
  • メディア: 単行本(ソフトカバー)
  • 購入: 3人 クリック: 26回
  • この商品を含むブログ (31件) を見る