技術的雑談-shellscriptからのsyslog出力
環境
とりあえずLinux Fedoracore3
目的
Shell ScriptからSyslogを出力する
方法
Linux標準添付loggerコマンド
SyslogにLogを出力するコマンドです。
Linuxコマンドプロンプト上で「logger log_test_message」を実行
/var/log/messages上に
May 13 09:53:59 sub ahouser: log_test_message
が出力される
同じく「logger -i log_test_message」を実行
/var/log/messages上に
May 13 09:57:55 sub ahouser[15055]: log_test_message
が出力される。(loggerのPIDが[ ]内に記録される)
同じく「logger -s log_test_message」を実行
/var/log/message上に
May 13 10:16:06 sub ahouser: log_test_message
が出力される
同時に、標準エラーにも
May 13 10:16:06 sub ahouser: log_test_message
が出力される
同じく「logger -t aaa log_test_message」を実行
/var/log/message上に
May 13 10:27:56 sub aaa: log_test_message
が出力される。(tagの部分が変更される)
- 時刻はコマンド上から指定できない。loggerコマンド実行時のタイムスタンプが記録される。
- プロセスIDは-iオプションをつけた時のみ記録される
- tagを指定しない場合はログインユーザ名が記録されているものと思われるが、確認できず。
- オンラインマニュアル(man)によると、ログ記録に成功した場合は0を返す。
- ただし、どのような状況で失敗するのかは未記載。
syslogの出力先ファイルの振り分け方法について
syslog.confではファシリティー(facility)とプライオリティー(priority)毎に、受け取ったメッセージをファイルに振り分けたり、ソケットに送信したり、他のホストに転送すること設定が可能である。
- ファシリティー
auth、 authpriv、 cron、daemon、 kern、 lpr、 mail、 mark、news、security (auth と 同 じ) 、syslog、 user、 uucp、 local0〜local7の20種類。
ただし、securityは使うべきではない。
- プライオリティー
debug, info, notice, warning, warn ( warning と同じ), err, error (err と同じ), crit, alert, emerg, panic (emergと同じ)の9段階。
ただし、warn, error, panicは使うべきではない。
- 先述のloggerコマンドでもファシリティー、プライオリティーは自由に設定可能。
- システム設計をするにあたってはファシリティーとプライオリティーを設定する必要がある。
- loggerコマンドでファシリティー、プライオリティーの設定を省略した場合は
-p user.notice
が指定されたものとされる。
syslog出力時のメッセージ書式について
loggerコマンドを使用した場合、以下の情報が記録先に追記される
- loggerコマンド実行時のタイムスタンプ
- loggerコマンドが実行されたホスト名(syslogdの仕様としてリモートロギングに対応しているため)
- ホスト名 --ホスト名のみ(ドメインは表示されない)
- loggerコマンドで指定されたtag(ログファイル内で検索などの目的に使用するためと思われる識別子)
- tag--未指定の場合はlogger実行user IDと思われる。ログの出力元を識別する為に使う。
- タイムスタンプ--ローカル時刻表記(mmm d hh:mm:ss) 秒までの精度 年は記録されない
logrotateコマンドの機能について
logrotateはログに対して特定の処理を自動化するコマンドである。
機能:
- ログファイルのリネーム
- 新規ログファイルの作成
- ログファイルのコピー
- ログファイルの切り詰め
- 切り替え世代の管理(old log数の維持)
- old logの圧縮
- ログ容量のチェック
- 日次、週次、月次でのログ切り替え
- ログ切り替え前後に実行するコマンドの設定(kill -HUPが必要な場合など)
- メールでのlogの送信
使用法:
- 通常cronより起動する
- logrotateの動作は/etc/logrotate.confファイルか、コマンドラインで指定する設定ファイルに記述する
- 取り扱いたいlogに対して適切なアクセス権限を持ったユーザで実行する必要がある
- 今回調査を行ったFedoracore3ではlogrotateがdailyで起動され、システム関係、web関係、メール関係などの各種ログのローテーションを行うように設定されている。
履歴
2005/7/14 -- 初版
技術的雑談へ戻る