# 運用・管理 / ログ

本製品のログ機能について説明します。
ログ機能は初期状態で有効になっており、ランタイムメモリーとフラッシュメモリー上に保存されるよう設定されています。また、重要なログメッセージがログイン中の仮想端末にも出力されるよう設定されているほか、ターミナルモニターという機能を使って、任意の管理端末上でリアルタイムにログを確認することもできます。
本製品ではさらに、任意の出力先を定義することにより、ログメッセージをsyslogサーバーに送信したり、特定のメールアドレスに送信したりすることもできます。また、メッセージフィルターを使ってログの出力条件をカスタマイズし、特定の条件を満たしたメッセージだけを保存・出力するよう設定することもできます。

## ログメッセージ

本製品が生成するログメッセージは次の各フィールドで構成されています。

    <date> <time> <facility>.<severity> <program[<pid>]>: <message>

各フィールドの意味は次のとおりです。

表 1
フィールド名 | 意味
date | メッセージの生成日付
time | メッセージの生成時刻
facility | ファシリティー。どの機能グループに関連するメッセージかを示す（別表を参照）
severity | ログレベル。メッセージの重大さを示す（別表を参照）
program[pid] | メッセージを生成したプログラムの名前とプロセスID（PID）
message | メッセージ本文

### ファシリティー

ファシリティー（facility）には次のものがあります。

表 2
名称 | 説明
auth | 認証サブシステム
authpriv | 認証サブシステム（機密性の高いもの）
cron | 定期実行デーモン（crond）
daemon | システムデーモン
ftp | ファイル転送サブシステム
kern | カーネル
lpr | プリンタースプーラーサブシステム
mail | メールサブシステム
news | ネットニュースサブシステム
syslog | syslogデーモン（syslogd）
user | ユーザープロセス
uucp | UUCPサブシステム

### ログレベル

ログレベル（severity）には次のものがあります。各レベルには番号と名称が付けられており、番号は小さいほど重大であることを示します。

表 3
数字 | 名称 | 説明
0 | emergencies | システムが使用不能であることを示す
1 | alerts | ただちに対処を要する状況であることを示す
2 | critical | 重大な問題が発生したことを示す
3 | errors | 一般的なエラーメッセージ
4 | warnings | 警告メッセージ
5 | notices | エラーではないが、管理者の注意を要するかもしれないメッセージ
6 | informational | 通常運用における詳細情報
7 | debugging | きわめて詳細な情報

## ログ出力先

本製品内部で生成されたログメッセージは、あらかじめ定義しておいた「ログ出力先」に出力されます。ログメッセージがどの出力先に出力されるかは、各出力先に関連付けられた「メッセージフィルター」（出力条件）の内容によって決まります。
設定によりログメッセージを複数の出力先に出力したり、まったく出力しないよう設定したりすることも可能です。

### 既定のログ出力先

初期状態では、次に示す4つのログ出力先（既定のログ出力先）が定義されており、それぞれ以下の基準でログメッセージを出力するよう設定されています。
これら既定のログ出力先は、個別に出力を停止（無効化）したり、出力条件を変更したり、保存サイズを変更したりできます。詳しくは以降の各節をご覧ください。

表 4：既定のログ出力先
名称 | 出力先 | 出力条件 | 備考
buffered | ランタイムメモリー | noticesレベル以上（0～5） | ランタイムメモリー（RAM）に50KByte（RAMが4GB以下の場合）または5000KByte（RAMが4GBを超える場合）まで保存。前記上限を超えた場合は古いメッセージから順に消去
permanent | フラッシュメモリー | warningsレベル以上（0～4） | フラッシュメモリー（flash:デバイス）に50KByte（フラッシュメモリーが4GB以下の場合）または5000KByte（フラッシュメモリーが4GBを超える場合）まで保存。前記上限を超えた場合は古いメッセージから順に消去
monitor | ターミナルモニター | debuggingレベル以上（0～7） | 任意の端末でterminal monitorコマンドを入力することにより、該当端末の画面にリアルタイムで出力されるようになる
console | 仮想端末 | criticalレベル以上（0～2） | ログイン中の仮想端末の画面にリアルタイムで出力される

### 任意設定のログ出力先

本製品では、既定のログ出力先に加え、次の2種類の出力先を任意で定義することもできます。同じ種類の出力先を複数定義することも可能です（たとえば、syslogサーバー192.168.10.5と192.168.10.11）。初期状態では、任意設定のログ出力先は定義されていません。
これら任意設定のログ出力先を定義する方法については、以降の各節をご覧ください。

表 5：任意設定のログ出力先
名称 | 出力先 | 出力条件 | 備考
host | syslogサーバー（IPv4/IPv6アドレス） | 任意に設定可 | 出力条件に合致したメッセージをsyslogプロトコルで送信
email | 電子メールアドレス | 任意に設定可 | 出力条件に合致したメッセージを電子メールとして送信（SMTP）

Note

emailログを使用する場合は、あらかじめメール送信のための基本設定を済ませておく必要があります（mail fromコマンド、mail smtpserverコマンド）。詳しくは「運用・管理」の「メール送信」をご覧ください。

## ログの閲覧

メモリーに保存されているログ、すなわち、bufferedログ（RAM上に保存されたログ）とpermanentログ（フラッシュメモリーに保存されたログ）の内容を見るには、それぞれ特権EXECモードのshow logコマンド、show log permanentコマンドを使います。
Note

これらのコマンドは、グローバルコンフィグモードでも実行可能です。

bufferedログ、permanentログを見るにはそれぞれ次のようにします。

    AT-AMF-app# show log
    AT-AMF-app# show log permanent

最新の10件だけを見たいときは次のようにします。

    AT-AMF-app# show log tail
    AT-AMF-app# show log permanent tail

tailパラメーターに数値を指定すれば、指定件数の最新メッセージだけを見ることができます。前述のとおり、省略時は最新の10個が表示されます。

    AT-AMF-app# show log tail 50
    AT-AMF-app# show log permanent tail 50

特定のメッセージだけを表示させたい場合は、モディファイアを使用します。たとえば、「FAILED」という文字列を含むメッセージだけを表示させたい場合は、includeフィルターを使って次のようにします。

    AT-AMF-app# show log | include FAILED
    2012 Jan 14 00:57:25 authpriv.notice login: FAILED LOGIN 1 FROM (null) FOR manag
    er, Authentication failure

モディファイアの詳細については、「運用・管理」の「コマンドラインインターフェース（CLI）」をご覧ください（「モディファイアとリダイレクション」）。
bufferedログ、permanentログを消去するには、clear logコマンドを使います。
単に「clear log」とした場合は、bufferedログとpermanentログの両方が消去されます。

    AT-AMF-app# clear log buffered
    AT-AMF-app# clear log permanent
    AT-AMF-app# clear log

monitorログとconsoleログは、管理端末の画面にリアルタイムで出力されます。
monitorログを見るには、管理端末上でterminal monitorコマンドを実行し、「ターミナルモニター」をオンにします。これにより、monitorログの出力条件に合致するメッセージが、該当端末画面にリアルタイムに出力されるようになります。初期設定では、monitorログにはすべてのメッセージ（debuggingレベル以上のメッセージ）を出力するよう設定してあるため、ターミナルモニターをオンにすると該当端末には大量のメッセージが表示されます。

    AT-AMF-app# terminal monitor
    01:09:10 syslog: 2. init app syslog-ng sessPt=268908776, addr=805392384
    01:09:35 login: pam_unix(login:auth): authentication failure; logname= uid=0 eui
    d=0 tty=pts/1 ruser= rhost=localhost  user=manager
    01:09:36 login: FAILED LOGIN 1 FROM localhost FOR manager, Authentication failur
    e
    01:09:38 login: pam_unix(login:session): session opened for user manager by (uid
    =0)
    01:09:38 login: LOGIN ON pts/1 BY manager FROM localhost
    ...

ターミナルモニターをオフにするには、terminal monitorコマンドを「terminal no monitor」の形式で実行します。monitorログはプロンプトと非同期で出力されるため、行頭にコマンドプロンプトが表示されていない場合もありますが、気にせずに「terminal no monitor」と入力し、Enterキーを押せば問題ありません。あるいは、Enterキーを押してコマンドプロンプトを表示させてからコマンドを入力してもかまいません（この場合も入力途中に次のログメッセージが出力される可能性があります）。

    01:09:38 login: pam_unix(login:session): session opened for user manager by (uid
    =0)
    01:09:38 login: LOGIN ON pts/1 BY manager FROM localhost
    ...
    AT-AMF-app# terminal no monitor

Note

ターミナルモニターは現行のログインセッションにおいてのみ有効なので、ログアウトすると無効になります。

consoleログは、出力条件に合致したログメッセージが生成されると、自動的にログイン中の仮想端末に出力されます。初期設定では、consoleログにはcriticalレベル以上の重大なメッセージだけが出力されます。

## ログ設定のカスタマイズ

ログ機能の設定は、次の2つの要素を組み合わせることによって行います。

1. 出力先の定義
   出力先には、既定4種と任意2種の合計6種類があります。さらに任意の2種類に関しては、それぞれ複数の出力先を定義できます。
   各出力先において設定できる項目は以下のとおりです。

   表 6：出力先ごとの設定可能項目
   名称 | 種別（数） | 出力先指定 | 状態設定 | 保存量設定 | 時差設定
   buffered | 既定（1） | － | ○ 有効/無効 | ○ | －
   permanent | 既定（1） | － | ○ 有効/無効 | ○ | －
   monitor | 既定（1） | － | △ ターミナルモニターをオン/オフ | － | －
   console | 既定（1） | － | ○ 有効/無効 | － | －
   host | 任意（複数） | IPv4/IPv6アドレス | △ 作成/削除 | － | ○
   email | 任意（複数） | メールアドレス | △ 作成/削除 | － | ○

   - 既定のログ出力先のうち、buffered、permanent、consoleに関しては、有効（出力する）・無効（出力しない）の設定変更が可能です。
   - 既定のログ出力先のうち、monitorに関しては、管理端末ごとにターミナルモニターをオン・オフすることで出力する・しないを制御するため、monitorログ総体としての有効・無効設定はありません。
   - 既定のログ出力先のうち、buffered、permanentに関しては、保存するメッセージの最大量（KByte）を変更可能です。
   - 任意設定のログ出力先（host、email）に関しては、syslogサーバーのIPv4/IPv6アドレスや電子メールアドレスを指定することで、新規出力先を定義できます。
   - 任意設定のログ出力先（host、email）に関しては、出力先（syslogサーバーや電子メール受信者）との時差を設定できます。時差を設定した場合、ログメッセージ中の時刻情報が受信側の時刻に変換された上で送信されます。
2. メッセージフィルターの設定
   各出力先定義に対してメッセージフィルターを設定することで、該当出力先への出力条件を指定します。
   メッセージフィルターでは、個々のログメッセージの内容（ログレベル、ファシリティー、生成元プログラム、メッセージ内容）に応じて、出力する・しないを決定します。出力先定義にメッセージフィルターを関連付けることによって、初めてログメッセージが出力されるようになります。
   さらに、メッセージフィルターによって出力対象となったログメッセージの中から、特定の条件に当てはまるものを除外する設定も可能です（ログ出力抑制機能）。出力抑制の条件や設定方法は、メッセージフィルターとほぼ同じです。

以下、各手順について例を挙げながら解説します。

### 出力先の定義

既定のログ出力先は初期状態で有効になっており、メッセージフィルターの条件に合致したログメッセージが出力されるよう設定されています。
これら既定の出力先へのログ出力を停止したり、各種メモリーへのログ保存量を変更したりするには、以下の各例のようにします。
bufferedログ、permanentログ、consoleログへの出力を停止するには、logコマンドをno形式でそれぞれ次のように実行します。

    AT-AMF-app(config)# no log buffered
    AT-AMF-app(config)# no log permanent
    AT-AMF-app(config)# no log console

monitorログは、ターミナルモニターをオンにするまで実際には出力されません。出力を開始するにはterminal monitorコマンドを実行してください。また、出力を停止するにはterminal monitorコマンドを「terminal no monitor」の形式で実行してください。

    AT-AMF-app# terminal monitor
    ...
    AT-AMF-app# terminal no monitor

メモリー上にログメッセージを保存するbufferedログとpermanentログでは、保存するメッセージの最大量を変更することができます。これにはlog sizeコマンドを使います。
たとえば、bufferedログの保存メッセージ量を20000KByteに変更するには、次のようにします。

    AT-AMF-app(config)# log buffered size 20000

任意設定のログ出力先は初期状態では定義されていません。
syslogプロトコルや電子メールでログを出力するには、logコマンドを使って最初に出力先を定義する必要があります。以下に例を示します。
syslogサーバーにログを送信する場合は、syslogサーバーのIPv4/IPv6アドレスを指定してhostログの出力先を定義します。hostログの出力先は複数定義できます。

    AT-AMF-app(config)# log host 192.168.10.2

Note

hostログの出力先を定義したら、次にメッセージフィルターを作成して該当syslogサーバーへのログ出力条件を指定してください。出力先にメッセージフィルターを関連付けるまで、ログメッセージは出力されません。詳しくは次項「メッセージフィルターの設定」をご覧ください。

Note

syslogサーバーへのログ送信時に使う始点IPv4/IPv6アドレスは、log host sourceコマンドで明示的に指定することができます。なお、同コマンドの設定はすべてのsyslogサーバーに対して適用されます。

電子メールでログを送信する場合は、宛先のメールアドレスを指定してemailログの出力先を定義します。emailログの出力先は複数定義できます。

    AT-AMF-app(config)# log email admin@example.com

Note

emailログを使用する場合は、あらかじめメール送信のための基本設定を済ませておく必要があります（mail fromコマンド、mail smtpserverコマンド）。詳しくは「運用・管理」の「メール送信」をご覧ください。

Note

emailログの出力先を定義したら、次にメッセージフィルターを作成して該当メールアドレスへのログ出力条件を指定してください。出力先にメッセージフィルターを関連付けるまで、ログメッセージは出力されません。詳しくは次項「メッセージフィルターの設定」をご覧ください。

hostログとemailログでは、出力先（syslogサーバーや電子メール受信者）のタイムゾーンを設定できます。これにはlog timeコマンドを使います。同コマンドで指定したタイムゾーンが本装置と異なる場合は、ログメッセージ中の時刻情報が受信側の時刻に変換された上で送信されます。
たとえば、出力先のほうが本装置の設置場所よりも3時間進んでいる場合は次のように設定します。この場合、該当出力先に送信するメッセージ内の時刻情報は3時間加算されて送信されます。

    AT-AMF-app(config)# log host 192.168.10.2 time local-offset plus 3

出力先（syslogサーバーや電子メール受信者）のタイムゾーンは、UTC（協定世界時）からの時差としても設定できます。たとえば、さきほどのsyslogサーバー192.168.20.2のタイムゾーンがUTCより12時間進んでいるなら、次のように設定することも可能です。

    AT-AMF-app(config)# log host 192.168.10.2 time utc-offset plus 12

出力先（syslogサーバーや電子メール受信者）と本装置との間に時差がない場合は、log timeコマンドでキーワードlocalを指定します。これは初期値なので、通常log timeコマンドを実行する必要はありませんが、いったん時差を指定した後で時差なしに戻したいときは次のようにします。

    AT-AMF-app(config)# log host 192.168.10.2 time local

hostログ、emailログの出力先を削除するには、logコマンドをno形式で実行します。たとえば、電子メールアドレスadmin@example.comへのログ送信を停止するには、次のようにします。

    AT-AMF-app(config)# no log email admin@example.com

### メッセージフィルターの設定

出力先を定義しただけでは、ログメッセージは出力されません。出力先の定義にメッセージフィルターを関連付け、出力すべきメッセージの条件を指定して初めて、該当出力先にメッセージが出力されるようになります。
既定のログ出力先には初期状態で次のメッセージフィルターが設定されているため、初期設定の出力条件で問題がなければ、設定は不要です。

- buffered：noticesレベル以上（レベル0～5）のメッセージを出力
- permanent：warningsレベル以上（レベル0～4）のメッセージを出力
- monitor：debuggingレベル以上（レベル0～7）のメッセージ（すべてのメッセージ）を出力
- console：criticalレベル以上（レベル0～2）のメッセージを出力

前記出力先への出力条件を変更したい場合は、log(filter)コマンドを使って、それぞれの出力先に設定されたメッセージフィルターの内容を変更します。次に例を示します。
bufferedログへの保存条件を「warningsレベル以上（レベル0～4）」に変更するには、log(filter)コマンドを使って次のようにします。
bufferedログにはあらかじめ「noticesレベル以上」というエントリーが設定されているので、2つ目のコマンドではこれを削除しています。

    AT-AMF-app(config)# log buffered level warnings
    AT-AMF-app(config)# no log buffered level notices

任意設定のログ出力先（hostログ、emailログ）の場合、logコマンドで出力先を定義した直後はメッセージフィルターが関連付けられていないため、実際にはメッセージが出力されません。以下の各例を参考にして、各出力先にメッセージフィルターを設定してください。
すべてのログメッセージを出力したいときは、log(filter)コマンドで次のように「level debugging」を指定します。

    AT-AMF-app(config)# log host 192.168.10.2 level debugging

errorsレベル以上（レベル0～3）のメッセージだけを出力したいときは、次のようにします。

    AT-AMF-app(config)# log host 192.168.10.2 level errors

ログレベルは次のように数字で指定することもできます。

    AT-AMF-app(config)# log host 192.168.10.2 level 3

特定のファシリティーに関するログメッセージだけを出力したいときは、log(filter)コマンドのfacilityパラメーターにファシリティー名を指定します。たとえば、認証関連のメッセージだけを出力させたい場合は次のようにします。

    AT-AMF-app(config)# log host 192.168.10.2 facility auth
    AT-AMF-app(config)# log host 192.168.10.2 facility authpriv

メッセージフィルターの設定では、メッセージに「～を含む」という条件も使えます。たとえば、「FAILED LOGIN」という文字列を含むメッセージだけを出力したい場合は、次のようにします。

    AT-AMF-app(config)# log host 192.168.10.2 msgtext FAILED LOGIN

Note

msgtextパラメーターは、msgtextキーワード以降行末までが値と見なされるため、例のように値に空白が含まれていてもかまいません。ただし、必ずコマンドラインにおける最後のパラメーターとして指定してください。

メッセージフィルターでは、複数の条件を同時に指定することもできます。たとえば、epsr関連のメッセージのうち、warningsレベル以上（レベル0～4）以上のメッセージだけを出力したい場合は次のようにします。

    AT-AMF-app(config)# log host 192.168.10.2 level warnings program epsr

Note

複数の条件を同時に指定する場合でmsgtextパラメーターを使用する場合は、必ずmsgtextパラメーターを最後に記述してください。msgtextパラメーターは、msgtextキーワード以降行末までが値と見なされるためです。

出力先定義からメッセージフィルターを削除するにはlog(filter)コマンドをno形式で実行します。

    AT-AMF-app(config)# no log host 192.168.10.2 msgtext FAILED LOGIN

#### 出力したくないメッセージを除外する（ログ出力抑制機能）

メッセージフィルターによって出力対象となったログメッセージの中に一部出力したくないものが混じっている場合は、メッセージフィルターとほぼ同じ条件指定によって、その出力を抑制することができます。
ログ出力抑制機能の設定は、ログ出力先ごとにlog excludeコマンドで除外条件を指定することによって行います。
bufferedログに「martian」という文字列を含むログメッセージが出力されないようにするには次のようにします。

    AT-AMF-app(config)# log buffered exclude msgtext martian

### 出力時のファシリティー固定設定

個々のログメッセージは個別のファシリティー値を持ち、初期設定では各々のファシリティーで出力されますが、すべてのログメッセージを特定のファシリティーで出力させる設定も可能です。
ファシリティーの固定設定はlog facilityコマンドで行います。この設定はすべての出力先、ログメッセージに適用されます。
すべてのログメッセージをlocal1ファシリティーで出力するには次のようにします。

    AT-AMF-app(config)# log facility local1

ファシリティーの固定設定を解除し、各メッセージ固有のファシリティーで出力する動作に戻すにはlog facilityコマンドをno形式で実行します。

    AT-AMF-app(config)# no log facility

### 初期値への復帰

ログ設定（出力先およびメッセージフィルター）を初期値に戻すには、default logコマンドを使います。
既定のログ出力先（buffered、permanent、monitor、console）に対してdefault logコマンドを実行すると、出力の状態（有効・無効）、保存メッセージ量、メッセージフィルターの設定が初期値に戻ります。

    AT-AMF-app(config)# default log buffered
    AT-AMF-app(config)# default log permanent
    AT-AMF-app(config)# default log monitor
    AT-AMF-app(config)# default log console

任意設定のログ出力先（host、email）に対してdefault logコマンドを実行すると、時差設定はlocal（本装置と同じ）に、メッセージフィルターはなしの状態に戻ります。

    AT-AMF-app(config)# default log host 192.168.10.2
    AT-AMF-app(config)# default log email admin@example.com

### ログ設定の確認

ログの出力先定義、および、各出力先に関連付けられているメッセージフィルターの内容は、show log configコマンドで確認できます。これは特権EXECモードのコマンドですが、グローバルコンフィグモードでも実行できます。

    AT-AMF-app(config)# show log config

    Buffered log:
      Status ......... enabled
      Maximum size ... 5000kb
      Filters:
      1   Level ...... warnings
          Program .... any
          Facility ... any
          Msg text ... any
          Type ....... include
      Statistics ..... Not available
    Permanent log:
      Status ......... enabled
      Maximum size ... 5000kb
      Filters:
     *1   Level ...... warnings
          Program .... any
          Facility ... any
          Msg text ... any
          Type ....... include
      Statistics ..... Not available
    Host 192.168.10.2
      Time offset .... +0:00
      Filters:
      1   Level ...... warnings
          Program .... rip
          Facility ... any
          Msg text ... any
          Type ....... include
      2   Level ...... any
          Program .... any
          Facility ... auth
          Msg text ... any
          Type ....... include
      3   Level ...... any
          Program .... any
          Facility ... authpriv
          Msg text ... any
          Type ....... include
      Statistics ..... Not available
    Monitor log:
      Filters:
     *1   Level ...... debugging
          Program .... any
          Facility ... any
          Msg text ... any
          Type ....... include
      Statistics ..... Not available
    Console log:
      Status ......... enabled
      List of consoles:
      1 .............. ttyS0
      Filters:
     *1   Level ...... critical
          Program .... any
          Facility ... any
          Msg text ... any
          Type ....... include
      Statistics ..... Not available

## 設定例

### syslogサーバーへのログ送信

ここでは、すべてのログをsyslogサーバーに転送するための設定を示します。IP等の設定は終わっているものとします。

1. logコマンドでhostログの出力先を定義します。ここでは、syslogサーバーのIPアドレスとして192.168.10.2を指定しています。

       AT-AMF-app(config)# log host 192.168.10.2

2. log(filter)コマンドですべてのログメッセージを出力するメッセージフィルターを設定します。

       AT-AMF-app(config)# log host 192.168.10.2 level debugging

syslogサーバー192.168.10.2がリモートからの接続を受け付けるよう設定されていれば、本製品の生成するすべてのログメッセージがsyslogサーバーに送られ、記録されるようになります。

### 電子メールでのログ送信

ログメッセージを電子メールで特定のメールアドレスに送りたい場合は、次のようにします。

1. メール送信機能の基本設定をします。詳しくは「運用・管理」の「メール送信」をご覧ください。

       AT-AMF-app(config)# mail from manager@bulbul.example.com
       AT-AMF-app(config)# mail smtpserver 172.17.28.1

2. logコマンドでemailログの出力先を定義します。ここでは、宛先メールアドレスとしてadmin@example.comを指定しています。

       AT-AMF-app(config)# log email admin@example.com

3. log(filter)コマンドでcriticalレベル（レベル0～2）の重大なメッセージと「FAILED LOGIN」という文字列を含むメッセージだけを出力するメッセージフィルターを設定します。

       AT-AMF-app(config)# log email admin@example.com level critical
       AT-AMF-app(config)# log email admin@example.com msgtext FAILED LOGIN