Unix-system-logging

提供:Dev Guides
移動先:案内検索

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

mail

メールシステムに関するメッセージ

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 facilitya 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]を使用して、このコマンドの完全な構文を確認できます。

ログローテーション

ログファイルは非常に高速に成長し、大量のディスク領域を消費する傾向があります。 ログのローテーションを有効にするには、ほとんどのディストリビューションが newsysloglogrotate などのツールを使用します。

これらのツールは、* cronデーモン*を使用して、頻繁に呼び出す必要があります。 詳細については、_newsyslog_または_logrotate_のマニュアルページを確認してください。

重要なログの場所

すべてのシステムアプリケーションは、ログファイルを /var/log とそのサブディレクトリに作成します。 ここにいくつかの重要なアプリケーションとそれに対応するログディレクトリがあります-

Application Directory
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/