トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

正規表現

正規表現

正規表現に関する覚え書きです。

Apr 12 18:37:19 asiapacific su: + tty?? root-oracle
Apr 12 18:37:33 asiapacific jevstop[11721]: KAJP1003-I asiapacific: The event server will now stop.
Apr 12 18:37:35 asiapacific jevservice[1655]: KAJP1861-I The JP1/SES remote management server will now stop.
Apr 12 18:37:36 asiapacific jevservice[1655]: KAJP1802-I The event management server will now stop.
Apr 12 18:37:22 asiapacific su: + tty?? root-oracle
Apr 12 18:38:02 asiapacific diagmond[1347]: Exit due to user requested abort
Apr 12 18:38:03 asiapacific FontServer[1255]: terminating
Apr 12 18:38:09 asiapacific cimserver[1229]: HP-UX WBEM Services stopped.
Apr 12 18:38:16 asiapacific inetd[840]: Going down on signal 15

例えば上記のようなログがあったとする。

ログ監視などで特定のメッセージを検知するには?

運用監視業務をしていると『ログ監視』という言葉がよく出てきます。
『ログ監視』とはある特定の文字列を定義(設定)し、ログ監視用のプログラムが
ログを一行ずつ定義(設定)された文字列を一行のログの中から評価(検索)して
パターンがマッチしたものをアラームとして発報したりする監視の事を言います。

運用の現場でよく使われているのが業務アプリケーションの出力するログを監視して、
業務アプリケーションの障害を検知するという仕組みですね。

その他にはオペレーティングシステム(OS)のシステムログ(syslog)を監視して
ファイルシステムフル(ファイルシステムの容量が100%に到達すること)や
各種デーモンの異常メッセージを監視したり、ハードウェアの監視などにも
代用したりします。

では先ほどの『正規表現』の項で出てきたログの中の以下の文字列を
検知したい場合はどのような『正規表現』が出来るだろうか。。。

Apr 12 18:38:09 asiapacific cimserver[1229]: HP-UX WBEM Services stopped.

このメッセージを良く観察していくと前半部分はsyslog出力としては決まったもののようですね。
以下の部分です。

Apr 12 18:38:09 asiapacific 

これはいわゆるログ一行の中でのヘッダーです。
<日付> <ホスト名>という並びです。

では続いて

cimserver[1229]: HP-UX WBEM Services stopped.

の部分ですが、これは『cimserver』というデーモン(プロセス)の出力メッセージと言うことを表しています。
[*****]の中の数字はUNIXシステムで言うところのPID(プロセスID)になります。
ここで一つポイントですがPIDはデーモンがリスタートしたりすると変更されるといことです。

では、このメッセージを手っ取り早く『正規表現』を使ってログ監視などで定義(設定)する場合は以下のようにすればよいわけです。

cimserver[.*]: HP-UX WBEM Services stopped.

極々簡単に.*で [ ] の中にどんな文字列が来てもいい様にサクッと設定できます。