- ベストアンサー
syslogを使った複数のclient-PCからのsyslogの保存方法
- syslogを使用して複数のclient-PCからのsyslogを個別のファイルに保存する方法について教えてください。
- 現在、syslog-serverを使って1台のclient-PCからsyslogを保存していますが、更にもう1台のclient-PCを追加してsyslogを別々のファイルに保存したいです。
- client-PC側のsyslog.confの設定について調べましたが、名前を変更するとsyslogが上がらなくなってしまいました。どのような設定が必要ですか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
?無理じゃないですか? syslogによって記録されたログの各行には、 ホスト名も入ってますから、ごっちゃになった ログからgrepか何かで、欲しいホストのログだけ 抽出すれば良い、と思っていたので、 ホストごとにファイルを作るなんて考えたことも なかったです。もしかしたら、何か方法が あるのかなあ。いや、syslog.confの書き方から 考えて、方法はないように思いますよ。 syslog.confの第1コラムのセレクタフィールドの user.*とかをuserooo.*にしてみた、と書かれていますが、 ピリオドの前後のワードは、システムに予約されて いるものしか使えません。したがって、useroooなどの ように勝手に名前をつけることはできません。 syslog.confのmanを見ればすぐ分かることですが、 ピリオドの前が"facility"と言って、ログを吐いた プログラムの種類を表します。ログを吐いたホストを 特定するfacilityはありません。後ろが"priority"で、 その名の通り重要度や緊急性を表します。 で、第2コラムのアクションフィールドでは、 セレクタフィールドで指定した種類のログに対する アクションを規定します。/で始まるファイル名を 指定するとファイルへのセーブ、@ホスト名で ログホストのsyslogdへ送信、|名前付きパイプ名で 名前付きパイプへの送信、あと、指定したユーザの コンソール画面へログを表示、ttyに表示、などの アクションがあります。 さて、そうすると、 A.ログホスト側で特定のホストから来たログだけを 選んで、別個のアクションを取る B.ログを送るクライアント側のsyslog.confで、 ログホストが取るアクションを規定する C.ログを送るクライアント側のsyslog.confで、 ログホストが解釈するfacilityを規定する といういずれも不可能であることが分かると思います。 したがって、クライアントホストごとに異なるファイルに 保存するのは無理なんじゃないかと思います。 ひとつ方法を提案すると、ログファイルをgrepして ホストごとのログファイルをつくるスクリプトをつくって、 cronで定期的に実行する、というのはどうでしょう?
お礼
御回答ありがとうございます。 本当に助かりました。なるほど…そういったものなのですね! 是非、cronを作ってみたいと思います。 本当にありがとうございました。