[[Linux]] ---- contents #ls2(Linux/evlog); ---- #contents ---- #br * evlogについて [#n68040f9] ここではevlogについて導入やら設定やらを簡単にまとめて行こうと思います。 evlogはキャリアなど対象のイベントログ (POSIX 1003.25) で、特定のfacility/severityやsyslog messageの文字列に対応したactionを実行でき、actionの作り方によっては障害発生時の通知や障害復旧等に使える。~ daemon動作中にdaemonを停止することなく設定変更・反映が可能で、確かにそのあたりは基本サービス無停止のキャリア向け。 ここで載せるデーモン・コマンドは、evlogのprojectオリジナルのものだけです。~ distributerがメンテナンスしているenhanceについては一切触れません。 #br ** 注意 [#qedd3912] evlogは syslog-ng と一緒に CGL の STD.21.0 POSIX Event Logging のアプリケーション候補として挙げられているものですが、このwikiに記載する情報はcarrier向けに運用・設定情報を展開するものではありませんのでご注意ください。~ 日本語man page程度にお考えください。 CGL4.0のindexに STD.21.0 POSIX Event Logging が見つからないんですが…消えた? #br ** evlogをどう使う? [#v9da10e4] - 考えられる組み合わせ -- syslogd + evlogd (+ evlnotifyd + evlactiond ) --- syslogd にはイベントに対応してコマンドを叩いたりできないので、組み合わせとしてはアリ -- syslog-ng + evlogd (+ evlnotifyd + evlactiond ) --- syslog-ng は filter, destination などの設定組み合わせでコマンド実行したりできるので、これはかなり無駄な組み合わせ -- rsyslog + evlogd (+ evlnotifyd + evlactiond ) --- syslogdの後継としてはrsyslogの方が良さそうな感じ %%(msec単位で連続して飛んで来るログの出力が若干おかしい気がするけど)%% -- kernel-2.6.4に evlog のパッチ適用して kern facility だけ取る --- 対応kernelが古いし、微妙すぎ #br * evlog [#rb0a886f] - project site~ http://sourceforge.net/projects/evlog/ #br ** daemons [#z9fb493e] #br *** evlogd [#uc11e85e] - 概要 -- enterprise向けのeventlog daemon~ syslogdと違い、文字列やfacility/severityによるfilterと、filterにマッチしたeventに対応したactionを実行することが可能~ 障害検出時の通知やリカバリ用途か~ --- %%現在では、 syslog-ng の方が扱いやすく同じようなことができるので、果たしてcarrier向けとしてもevlogである必要があるのかどうか??%%~ 年末あたり、 syslog-ng-1.6 で evlactiond 相当の機能を実現 ( destination に pipe() 指定することで、メッセージを子プロセスの標準入力へ pipe する ) してみましたが、あまりよろしくなかったです。~ pipe()指定したプロセスは pipe したまま常駐プロセスとなるわけですが、そのプロセスをkillすると何もしなくなる (プロセスをまた起動して pipe し直すなどの処理が無い) ので、使い物になりませんでした。~ syslog-ng-2.0以降だとどうなるかは見ていません。 #br *** evlogrmtd [#i25f66ea] - 概要 -- evlogのリモートからのログ待ち受け用デーモン #br *** evlnotifyd [#w1b77f1d] - 概要 -- evlnotifyで登録したイベントに該当するログの到着を通知するデーモン #br *** evlactiond [#xd68656d] - 概要 -- eventに対応したactionを実行する - 関連ファイル -- /var/evlog/action_registry #br ** commands [#a64e3945] #br *** evlconfig [#j4c3aeac] - 概要 -- evlogdの設定変更用コマンド~ evlogdを起動したまま設定の変更反映とconfの保存が可能 #br *** evlgentmpls [#u31ec022] #br *** evlnotify [#pc8ba254] - 概要 -- evlactiondのaction登録用コマンド。~ evlactiondが起動した状態でないと使用不可。 - オプション -f 'filter' : 'filter' でactionの実行トリガーとなるeventを指定する。 -a 'action' : 'action' でeventに対応したコマンドラインを指定する。 %recid% でrecode IDを挿入できる。 -p : 継続するactionとして登録する。(action_registryにずっと保存する) -o : 1回だけ実行するactionとして登録する。(action_registryに保存するが、1回実行したら消去する) -l : 設定内容をリスト出力する。 #br *** evlogmgr [#a8bf66c0] - 概要 -- eventlogファイルの管理用コマンド。~ DBのコンパクションや破損修復が可能。 - オプション -f : eventlogの修復を実施する。 -c 'filter' : 'filter' で指定する条件で eventlog をコンパクションする。 - 注意 -- コンパクション処理はカレントディレクトリに一時ファイルを作成し、その一時ファイルにコンパクションを実施する。~ このため、ディスク上には一時的に eventlog ファイルと同じサイズの空き容量が必要。 - 使用例 30日以上経過したログを削除してコンパクションする # evlogmgr -c 'age > "30d"' #br *** evlsend [#m0df7de0] - 概要 -- event送信用コマンド。~ evlogdに対して任意のevent/messageを送信可能。 (loggerのevlog版) #br *** evltc [#h3e0b44f] #br *** evlview [#re62a577] - 概要 -- eventlogのヴューワ。 - オプション -t <N> : 最後の N 個のイベントだけ出力する。 -c : 出力をコンパクトにする。 -l <log-file-name> : /var/evlog/eventlog以外を参照させる。 #br * evlog-telco [#sa91672c] - project site~ http://sourceforge.net/projects/evlog-telco/ #br ** daemons [#uf89846a] #br *** evlforward [#s888fae6] - 概要 -- syslogメッセージをevlogへ転送する。 - オプション -p : POSIX log を syslog へ転送しない。 -i <file-to-follow> : POSIX log へ転送するための読み込み元ログファイルを指定する。 (無指定は/var/log/messagesを参照) - 注意仕様 -- evlforwardは '''kernel:''' か '''evlforward:''' を含むメッセージは転送しない。~ evlforwardの -f オプションで指定可能なfacilityにも、kernは含まれていません。 -- kern facilityのメッセージを printk() の延長で evlog へ転送するカーネルパッチは evlog の project site にありますが、すでにメンテナンスされていないので、現行のカーネルにはパッチ適用不可です。 -- evlforwardはファイルから evlogd へメッセージを転送するため、syslogメッセージ本来の facility, severity は失われます。~ facility, severityの引き継ぎをするには、syslogdのpipeのenhanceやpipeでメッセージを受けてevlogdへ転送するようなデーモンを作る必要あり。 (某distributerではenhance実装済み) - 参考: '''evlforward:''' を含むメッセージを evlogd へ転送しない理由 -- evlforward は、読み込み元ログファイル(デフォルトは/var/log/messages)から evlogd へ転送したメッセージを、syslog に対して「evlogdへ転送しているぞ」という記録を出力します。~ 従って、 evlforward が syslog へ出力したメッセージを、さらに読み込んで evlogd へ転送し、また syslog へ記録を…とループし続けないようにするためと考えられます。 --- ''-p'' オプションや ''-i'' オプションを指定したときには、この syslog へのメッセージ出力はしなくなります。(-pは該当処理の抑止オプション) #br * 更新履歴 [#b96a5671] - 2009/03/03 evlogmgrについて記述を追加 - 2009/02/27 evlogd, evlforwardについて記述を追加 - 2008/12/19 注意追加 - 2008/12/03 一部のデーモン記述を追加 - 2008/12/02 一部のオプション記述を追加 - 2008/12/01 evlogのコマンドを追加 - 2008/11/27 evlog-telcoを追加