Unix-system-logging
Unix/Linux-システムロギング
この章では、Unixでのシステムロギングについて詳しく説明します。
Unixシステムには非常に柔軟で強力なロギングシステムがあり、想像できるほとんどすべてを記録し、ログを操作して必要な情報を取得できます。
Unixの多くのバージョンは、 syslog と呼ばれる汎用のログ機能を提供します。 情報をログに記録する必要がある個々のプログラムは、情報をsyslogに送信します。
Unix _syslog_は、ホストで設定可能な統一されたシステムロギング機能です。 システムは、プログラム /etc/syslogd または /etc/syslog を実行する集中システムロギングプロセスを使用します。
システムロガーの操作は非常に簡単です。 プログラムは、ログエントリを_syslogd_に送信します。_syslogd_は、構成ファイル /etc/syslogd.conf または /etc/syslog を参照し、一致が見つかった場合、目的のログファイルにログメッセージを書き込みます。
あなたが理解する必要がある4つの基本的なsyslog用語があります-
Sr.No. | Term & Description |
---|---|
1 |
Facility ログメッセージを送信したアプリケーションまたはプロセスの説明に使用される識別子。 たとえば、メール、カーネル、ftp。 |
2 |
Priority メッセージの重要性の指標。 レベルは、デバッグ情報から重要なイベントまで、ガイドラインとしてsyslog内で定義されます。 |
3 |
Selector 1つ以上の施設とレベルの組み合わせ。 着信イベントがセレクターに一致すると、アクションが実行されます。 |
4 |
Action セレクターに一致する着信メッセージの処理—アクションは、メッセージをログファイルに書き込む、メッセージをコンソールまたは他のデバイスにエコーする、ログインユーザーにメッセージを書き込む、またはメッセージを別のsyslogサーバーに送信することができます。 |
syslogファシリティ
これで、syslog機能について理解できます。 セレクターで使用できる機能は次のとおりです。 Unixのすべてのバージョンにすべての機能が存在するわけではありません。
Facility | Description |
---|---|
1 |
auth 名前とパスワードの要求に関連するアクティビティ(getty、su、login) |
2 |
authpriv authと同じですが、選択したユーザーのみが読み取れるファイルに記録されます |
3 |
console 一般にシステムコンソールに送信されるメッセージをキャプチャするために使用 |
4 |
cron cronシステムスケジューラからのメッセージ |
5 |
daemon システムデーモンキャッチオール |
6 |
ftp ftpデーモンに関連するメッセージ |
7 |
kern カーネルメッセージ |
8 |
local0.local7 サイトごとに定義されたローカル施設 |
9 |
lpr ライン印刷システムからのメッセージ |
10 |
メールシステムに関するメッセージ |
11 |
mark ログファイルにタイムスタンプを生成するために使用される疑似イベント |
12 |
news ネットワークニュースプロトコル(nntp)に関連するメッセージ |
13 |
ntp ネットワークタイムプロトコルに関連するメッセージ |
14 |
user 通常のユーザープロセス |
15 |
uucp UUCPサブシステム |
syslogの優先順位
syslogの優先順位は次の表にまとめられています-
Sr.No. | Priority & Description |
---|---|
1 |
emerg 差し迫ったシステムクラッシュなどの緊急状態は、通常、すべてのユーザーにブロードキャストします |
2 |
alert 破損したシステムデータベースなど、すぐに修正する必要がある条件 |
3 |
crit ハードウェアエラーなどの重大な状態 |
4 |
err 通常のエラー |
5 |
Warning 警告 |
6 |
notice エラーではないが、おそらく特別な方法で処理する必要がある条件 |
7 |
info 情報メッセージ |
8 |
debug プログラムのデバッグ時に使用されるメッセージ |
9 |
none メッセージを記録しないことを指定するために使用される疑似レベル |
機能とレベルの組み合わせにより、何がログに記録され、その情報がどこに保存されるかを識別できます。
各プログラムはメッセージをシステムロガーに忠実に送信するため、ロガーは、セレクターで定義されたレベルに基づいて、何を追跡し、何を破棄するかを決定します。
レベルを指定すると、システムはそのレベル以上のすべてを追跡します。
===/etc/syslog.confファイル
*/etc/syslog.conf* ファイルは、メッセージが記録される場所を制御します。 典型的な *syslog.conf* ファイルは次のようになります-
*.err;kern.debug;auth.notice/dev/console
daemon,auth.notice /var/log/messages
lpr.info /var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @prep.ai.mit.edu
auth.* root,amrood
netinfo.err /var/log/netinfo.log
install.* /var/log/install.log
*.emerg *
*.alert |program_name
mark.* /dev/console
ファイルの各行には2つの部分が含まれています-
- ログに記録するメッセージの種類を指定する*メッセージセレクター*。 たとえば、カーネルからのすべてのエラーメッセージまたはすべてのデバッグメッセージ。
- メッセージで何をすべきかを示す*アクションフィールド*。 たとえば、ファイルに入れるか、メッセージをユーザーの端末に送信します。
上記の構成の注目すべき点は次のとおりです-
- メッセージセレクタには、2つの部分があります。 a facility と a priority です。 たとえば、_kern.debug_は、カーネル(機能)によって生成されたすべてのデバッグメッセージ(優先度)を選択します。
- メッセージセレクタ_kern.debug_は、debugよりも大きいすべての優先順位を選択します。
- ファシリティまたは優先順位の代わりのアスタリスクは、「すべて」を示します。 たとえば、。debug はすべてのデバッグメッセージを意味し、 kern。はカーネルによって生成されたすべてのメッセージを意味します。
- コンマを使用して複数の機能を指定することもできます。 セミコロンを使用して、2つ以上のセレクターをグループ化できます。
ロギングアクション
アクションフィールドは、5つのアクションのいずれかを指定します-
- ログメッセージをファイルまたはデバイスに記録します。 たとえば、 /var/log/lpr.log または /dev/console 。
- ユーザーにメッセージを送信します。 複数のユーザー名をコンマで区切って指定できます。たとえば、root、amrood。 すべてのユーザーにメッセージを送信します。 この場合、アクションフィールドはアスタリスクで構成されています。例えば、 。
- メッセージをプログラムにパイプします。 この場合、プログラムはUnixパイプ記号(|)の後に指定されます。
- 別のホストのsyslogにメッセージを送信します。 この場合、アクションフィールドは、アットマークが前に付いたホスト名で構成されます。たとえば、@ finddevguides.com。
ロガーコマンド
Unixは logger コマンドを提供します。これは、システムロギングを処理するのに非常に便利なコマンドです。 logger コマンドはロギングメッセージをsyslogdデーモンに送信し、その結果システムロギングを引き起こします。
これは、 syslogd デーモンとその構成をいつでもコマンドラインから確認できることを意味します。 loggerコマンドは、コマンドラインからシステムログファイルに1行のエントリを追加する方法を提供します。
コマンドの形式は-
logger [-i] [-f file] [-p priority] [-t tag] [message]...
ここにパラメータの詳細があります-
Sr.No. | Option & Description |
---|---|
1 |
-f filename ファイルfilenameの内容をログに記録するメッセージとして使用します。 |
2 |
-i ロガープロセスのプロセスIDを各行に記録します。 |
3 |
-p priority 指定された優先度(指定されたセレクタエントリ)でメッセージを入力します。メッセージの優先度は、数値で指定するか、facility.priorityのペアとして指定できます。 デフォルトの優先度はuser.noticeです。 |
4 |
-t tag 指定されたタグでログに追加された各行をマークします。 |
5 |
message 内容が指定された順序でスペースで区切られて連結されている文字列引数。 |
link:/unix/unix-manpage-help [Manpage Help]を使用して、このコマンドの完全な構文を確認できます。
ログローテーション
ログファイルは非常に高速に成長し、大量のディスク領域を消費する傾向があります。 ログのローテーションを有効にするには、ほとんどのディストリビューションが newsyslog や logrotate などのツールを使用します。
これらのツールは、* cronデーモン*を使用して、頻繁に呼び出す必要があります。 詳細については、_newsyslog_または_logrotate_のマニュアルページを確認してください。
重要なログの場所
すべてのシステムアプリケーションは、ログファイルを /var/log とそのサブディレクトリに作成します。 ここにいくつかの重要なアプリケーションとそれに対応するログディレクトリがあります-
Application | Directory |
---|---|
httpd | /var/log/httpd |
samba | /var/log/samba |
cron | /var/log/ |
/var/log/ | |
mysql | /var/log/ |