/var/log/messages出力形式について
お世話になっております。
現在、/var/log/messagesを対象とした監視導入を計画中です。
通常、エラー等のステータスを示すキーワードとなる
priority(notice,warning,err,error,crit,critical,alert,emerg)の各文字列を
監視ソフトウェアで検知対象とする事を検討しています。
そこでご質問になりますが、実際にsystemトラブルが発生した場合は、
そもそもpriorityは、/var/log/messages内にどのように出力されるものでしょうか?
当方、/var/log/messagesログの標準的な出力形式は、
以下内容となる程度しか認識がありません。
<日付> <時間> <ホスト名> <プログラム名> <ログメッセージ>
実際の監視対象OS上では、過去にwarningとして以下2パターンの
出力のみがありました。
Aパターン
ホスト名直後にコロンで区切られた箇所がある(Warningの直後はコロンで区切られる)
・Jan 1 00:00:01 host001 kernel: bonding: Warning: messagexxx
Bパターン
ホスト名直後に(プロセスID?を含む)プログラム名が記され、
コロンで区切られた箇所がある(WARNINGの直後はコロンで区切られる)
・Jan 1 00:00:01 host001 avahi-daemon[4079]: WARNING: messagexxx
これらの内容から、全てのpriorityの出力形式は、以下の通りと考慮しますが、
間違いないものでしょうか?
[メッセージ+半角ブランク+priorityのいずれか+直後にコロン+半角ブランク+メッセージ]
===
環境)
・OS: RedHat Enterprise Linux 5.4
・syslogデーモン設定はデフォルト設定(syslog-ng等へのカスタマイズなし)
syslog.conf内の記述は、以下の通りです。
デフォルトの設定です。
*info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv. * /var/log/secure
mail. * /var/log/maillog
cron. * /var/log/cron
*. emerg *
uucp, news. crit /var/log/spooler
local7. * /var/log/boot.log
[authprivとcronを除いた全てのfacilityでinfo以上のメッセージを
/var/log/messagesに出力する(デフォルト設定)]
お礼
早速の回答ありがとうございいます。 仰るとおり直接/var/log/messagesに直接書き込むのは乱暴と言うか・・・危険ですね。今回は回答の通り、system関数でloggerを呼び出すことにします。 ちなみに興味本位でご存知でしたら教えていただきたいのですが、 特定のファイルに対して別のプロセスによる書き込みがあった場合に、その対象のファイルの書き込みが終わるまで待機して、書き込みが終わった後にファイルの書き込みを行うような事は、perlで出来るんでしょうか? 質問ばかりですみません。