この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
目次
Embedded Syslog Manager(ESM)機能は、システム メッセージ ロガーによって伝送される前にシステム ロギング メッセージをフィルタリング、拡大、相互関連付け、ルーティング、カスタマイズできるようにするプログラマブル フレームワークを提供します。
ご使用のソフトウェア リリースでは、このモジュールで説明されるすべての機能がサポートされているとは限りません。 最新の機能情報および警告については、Bug Search Tool およびご使用のプラットフォームおよびソフトウェア リリースのリリース ノートを参照してください。 このモジュールに記載されている機能の詳細を検索し、各機能がサポートされているリリースのリストを確認する場合は、このモジュールの最後にある機能情報の表を参照してください。
プラットフォームのサポートおよびシスコ ソフトウェア イメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。 Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。 Cisco.com のアカウントは必要ありません。
Embedded Syslog Manager(ESM)は Tcl 8.3.4 サブシステムに依存します。これは、ESM フィルタが Tool Command Language(Tcl)で作成されるためです。 ESM は、Tcl バージョン 8.3.4 以降をサポートするイメージでのみ使用可能です。 Tcl 8.3.4 サポートが追加されるかどうかはリリースによって異なります。
ESM フィルタは Tcl で書かれています。
ESM フィルタリングは、SNMP「履歴」ロギングには適用できません。 したがって、logginghistory および snmp-serverenabletrapssyslog コマンドを使ってロギングされるメッセージには ESM フィルタリングが適用されません。
Embedded Syslog Manager を導入すると、システム メッセージを標準メッセージ、XML 形式のメッセージ、または ESM でフィルタリングされたメッセージとして、別個にロギングできるようになります。 これらの出力は、従来のあらゆる syslog ターゲットに送信できます。 たとえば、コンソール接続への標準ロギング、XML 形式のメッセージのバッファへのロギング、および ESM でフィルタリングされたメッセージのモニタへのロギングをイネーブルにできます。 同様に、各タイプの出力は異なるリモート ホストに送信できます。 別個のロギング プロセスの利点は、たとえば ESM フィルタ モジュールに問題がある場合に標準のロギングが影響を受けないことです。
システム ロギング メッセージは、次の形式で表示されます。
%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
以下に、システム ロギング メッセージの例を示します。
%LINK-5-CHANGED: Interface Serial3/3, changed state to administratively down
通常は、これらのメッセージの前にエラー シーケンス番号やタイムスタンプなどの追加のテキストが存在します。
<シーケンス番号>: <タイム スタンプ>:%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
エラー シーケンス番号とタイムスタンプの後に続くシステム ロギング メッセージの例を以下に示します。
000013: Mar 18 14:52:10.039:%LINK-5-CHANGED: Interface Serial3/3, changed state to administratively down
![]() (注) |
システム ロギング メッセージで使用されるタイム スタンプの形式は、servicetimestamps グローバル コンフィギュレーション モード コマンドによって決まります。 servicesequence-numbers グローバル コンフィギュレーション コマンドは、先頭のシーケンス番号をイネーブルまたはディセーブルにします。 時刻の前のアスタリスク(*)は、システム クロックが信頼できる時刻源と同期していないため、時刻が不正確である可能性があることを示しています。 |
Cisco ソフトウェアの組み込み機能である Embedded Syslog Manager(ESM)を使用すると、送信元でのシステム メッセージ ロギングの完全な制御が可能になります。 ESM に備わっているプログラマティック インターフェイスを使用すると、システム ロギングに関連する特定のニーズを満たすカスタム フィルタを作成できます。 この機能の利点は次のとおりです。
カスタマイズ:システム ロギング メッセージを扱う完全にカスタマイズ可能な処理。相互に連携する複数の syslog コレクタをサポートします。
主要なメッセージの重大度のエスカレーション:システム定義の重大度レベルを使用する代わりに、syslog メッセージに関する独自の重大度レベルを設定できます。
特定のメッセージに対象を絞る:ファシリティのタイプや重大度のタイプに基づいて、特定のメッセージまたはメッセージ タイプをさまざまな syslog コレクタにルーティングできます。
SMTP ベースの E メール アラート:TCP ベースの syslog コレクタまたはシンプル メール転送プロトコル(SMTP)サーバなどの外部サーバに TCP を使用して通知する機能。
メッセージの制限:デバイスレベルのイベントを関連付けることにより、syslog の「メッセージ ストーム」を制限し、管理することができます。
ESM は UDP ベースの syslog メカニズムに代わるものではなく、現在のシステム ロギング プロセスと並行して動作可能なオプションのサブシステムです。 たとえば、元の syslog メッセージ ストリームをサーバ A によって収集し続けるのと同時に、フィルタリング、相互関連、その他の方法でカスタマイズされた ESM ロギング ストリームをサーバ B に送信することができます。元の syslog ストリームまたは ESM ストリームのいずれかを受信するよう、syslog メッセージの現在のすべてのターゲット(コンソール、モニタ、バッファ、および syslog ホスト リスト)を設定することができます。 ESM ストリームは、それに応じて、ユーザ定義のストリームにさらに分割し、コレクタにルーティングできます。
Embedded Syslog Manager(ESM)は syslog フィルタ モジュールを使用してシステム ロギング メッセージを処理します。 syslog フィルタ モジュールは、ローカル システム メモリまたはリモート ファイル サーバに保存される Tool Command Language(Tcl)で書かれたスクリプトです。 ESM は、独自のスクリプトを書いて参照できるため、カスタマイズ可能です。
syslog フィルタ モジュールは、プレーンテキスト ファイルまたはコンパイル済みファイルとして書いて、保存できます。 Tcl スクリプトの事前コンパイルは、TclPro などのツールを使用して実行できます。 コンパイル済みスクリプトは編集できないため、セキュリティおよび管理された一貫性の尺度になります。
![]() (注) |
Tcl スクリプト モジュールには実行可能コマンドが含まれているため、コンフィギュレーション ファイルを管理するのと同じ方法で、これらのファイルのセキュリティを管理する必要があります。 |
Embedded Syslog Manager(ESM)設定で syslog フィルタ モジュールを参照する前に、システム ロギング メッセージへの適用対象となるモジュールを書き込むか、取得する必要があります。 syslog フィルタ モジュールは、ローカル システム メモリまたはリモート ファイル サーバに保存できます。 syslog フィルタ モジュールを書き込む前に、次の概念を理解しておく必要があります。
ESM がイネーブルの場合、すべてのシステム ロギング メッセージは、参照された syslog フィルタ モジュールを通して処理されます。 syslog フィルタ モジュールは、フィルタ チェーンで順番に処理されます。 フィルタ チェーン内の syslog フィルタ モジュールの位置は、loggingfilter グローバル コンフィギュレーション モード コマンドで適用された位置タグによって決定されます。 位置が指定されていない場合、モジュールは、設定に追加された順番で処理されます。
各フィルタ モジュールの出力は、チェーン内の次のフィルタ モジュールの入力として使用されます。 したがって、元の syslog メッセージ(::orig_msg)を含む Tcl グローバル変数は、チェーン内の次のフィルタを呼び出す前に、各フィルタの戻り値に設定されます。 したがって、フィルタが NULL を戻した場合、メッセージは ESM ストリームに送信されません。 すべてのフィルタがメッセージを処理した後、メッセージは、ロガーによる配信のためのキューに入れられます。
コンソール、バッファ、モニタ、および syslog ホストは、特定のメッセージ ストリーム(通常、XML、または ESM)を受信するように設定できます。 syslog ホストは、ユーザ定義の番号が付いたストリームを受信するように、さらに限定できます。 各ターゲットは各メッセージを検査し、そのストリーム タグに基づいてメッセージを受け入れるか、または拒否します。 ESM フィルタは、Tcl グローバル変数「::stream」を変更することによってメッセージのストリーム タグを変更し、宛先ストリームを変更できます。
Embedded Syslog Manager(ESM)が有効になっている場合、システム ロギング メッセージがロギング プロセスに送信されます。 システム ロギング メッセージの中、およびフォーマットされた syslog メッセージ全体に含まれる各データ エレメントが、Tcl グローバル変数として記録されます。 syslog メッセージのデータ エレメントの形式は、次のとおりです。
<シーケンス番号>: <タイム スタンプ>:%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
メッセージ テキストには、しばしばメッセージ引数が含まれます。
また、メッセージが syslog ホストで受信されるときに「syslog カウント」番号が追加されます。
<syslog カウント>: <シーケンス番号>: <タイム スタンプ>:%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
次の例は、シーケンスの最初に含まれる syslog カウント番号を示しています。
以下の表に、syslog フィルタ モジュールで使用される Tcl スクリプト入力変数を示します。 フィルタで扱う必要のある syslog メッセージ データは、Tcl グローバル名前空間変数として渡されます。 したがって、スクリプト モジュール内で変数の前に二重のコロンを付ける必要があります。
システム ロギング メッセージが生成されるたびに、syslog フィルタ モジュールがシリーズで呼び出されます。 このシリーズは ::module_position 変数によって決定されますが、これは一般的にシステム設定内でモジュールが参照される順番(モジュールが設定される順番)です。
あるフィルタ モジュールの出力が、次のフィルタ モジュールへの入力になります。 フィルタへの入力は Tcl グローバル名前空間変数であるため、それぞれのフィルタは、フィルタの目的に応じてこれらの変数のいずれかまたはすべてを変更できます。
後続の複数のフィルタ実行の間で Embedded Syslog Manager(ESM)フレームワークによって自動的に更新される Tcl グローバル変数は、::orig_msg 変数と ::cli_args 変数だけです。 フレームワークは、自動的に ::orig_msg の値をフィルタ モジュールの戻り値に設定します。 したがって、元のメッセージを変更するかフィルタリングするように設定されているフィルタでは、::orig_msg 変数の値を手動で設定しないでください。フィルタは目的の値を返すことだけが必要です。 たとえば、次の 1 行の ESM フィルタ
return “This is my new syslog message.”
は、受け取ったメッセージをすべて無視して出力を「This is my new syslog message」という定数文字列に常に変更します。 このモジュールがチェーン内の最後のフィルタである場合、すべての ESM ターゲットはこの文字列を最終的な syslog メッセージとして受け取ります。
1 行の ESM フィルタは、
return “”
ESM ストリームへのすべての syslog メッセージをブロックします。 たとえば、
return $::orig_msg
という行は、メッセージをチェーンの次のフィルタに渡すだけです。 したがって、不要なメッセージを抑制するように設定されている ESM フィルタは次のように見えます。
if { [my_procedure_to_check_this_message] == 1 } { return $::orig_msg } else { return “” }
その設計によって、一部のフィルタは ::orig_msg 変数をまったく使用せず、そのデータ エレメントから syslog メッセージを再構築する(::format_string、::msg_args、::timestamp などを使用)場合があります。 たとえば、XML タグ付きフィルタは個々のデータ エレメントにタグを付け、元のフォーマットされたメッセージを無視します。 このようなモジュールが Tcl スクリプトの最初で ::orig_msg 変数を検査することは重要です。以前のフィルタで「メッセージを送信してはならない」と指示されている場合(つまり ::orig_msg が NULL の場合)、メッセージは処理されず、NULL を返します。
また、exec および config Tcl コマンドを使用して syslog フィルタ モジュールにコマンドを追加することもできます。 たとえば、syslog メッセージに送信元 IP アドレスを追加する必要があり、しかも(logging source-interfaceコマンドを使って)イーサネット 2/0 インターフェイスから送信されるよう syslog メッセージが設定される場合には、スクリプト内で exec Tcl コマンドを次のように使用することで、モジュールの初期化中に show interface Ethernet 2/0 コマンドを発行できます。
set source_ip_string [exec show ip int E2/0 | inc Internet] puts $source_ip_string " Internet address is 10.4.2.63/24"
Tcl では、後の時点で処理するためにコマンドをキューに入れることができます。それを行うには after Tcl コマンドを使用します。 このコマンドの最も一般的な使用方法は、一定の時間間隔(「相関期間」と呼ばれる)にわたって、複数のイベントを相互に関連付ける(収集して要約する)ことです。 該当する期間が満了すると、フィルタは「ウェイクアップ」し、その期間に発生したイベントを計算または要約する必要があります。また、多くの場合、イベント報告用の新しい syslog メッセージを送信する必要があります。 このバックグラウンド プロセスは、特定の時間の経過後、Tcl インタープリタがキューに入れられたコマンドを実行できるようにする ESM イベント ループ プロセスによって処理されます。
syslog フィルタ モジュールが相関期間を利用する必要がある場合、相関期間が満了した時点で after Tcl コマンドを使用して要約手順を呼び出す必要があります(「Embedded Syslog Manager の設定例」セクションにある例を参照)。 バックグラウンド プロセスの実行中は通常のフィルタ チェーンの処理が行われないため、出力を生成するために、これらのフィルタで 2 つの ESM Tcl 拡張機能(errmsg または esm_errmsg)のいずれかを使用する必要があります。
バックグラウンド処理中に、after コマンドによってキューに入れられたコマンドは、(通常の処理のように)フィルタ チェーンのコンテキストでは実行されず、Tcl インタープリタによって連続して実行される自律的な手順となります。 したがって、これらのバックグラウンド手順では通常の Tcl グローバル名前空間変数を扱うべきではありません(ただし esm_errmsg の使用時に次のフィルタ用にグローバル名前空間変数を設定する場合を除く)。代わりに、独自の名前空間に保存される変数を扱う必要があります。 これらの変数が手順の定義の外側で宣言される場合、すべてのコールで永続的です。
errmsg Tcl コマンドの目的は、新しいメッセージを作成して配信用に送り出し、その際に他の syslog フィルタ モジュールをすべて回避することです。 errmsg コマンドの構文は次のとおりです。
errmsg <severity> <stream> <message_string>
esm_errmsg Tcl コマンドの目的は、新しいメッセージを作成し、フィルタ チェーン内のそれ以降にある syslog フィルタ モジュールでメッセージを処理して、配信用に送り出すことです。 esm_errmsg コマンドの構文は次のとおりです。
esm_errmsg <module_position>
errmsg() Tcl 関数と esm_errmsg() Tcl 関数の主な相違点として、errmsg はフィルタを無視してメッセージを配信用にキューに直接入れます。一方、esm_errmsg はフィルタ チェーンの後続部分に syslog メッセージを送ります。
次の例では、新しい syslog メッセージが作成され、アラート重大度 1 のタグを付けられて、設定された ESM ロギング ターゲット(ストリーム 2)に送信されます。 このフィルタの目的は、30 分の相関期間中に個々の SYS-5-CONFIG メッセージを抑制し、ウィンドウ終了時に要約メッセージを送信することです。
errmsg 1 2 “*Jan 24 09:34:02.539: %SYS-1-CONFIG_I: There have been 12 configuration changes to the router between Jan 24 09:04:02.539 and Jan 24 09:34:01.324”
(それ以降にある残りのフィルタを呼び出す)esm_errmsg を使用するために、このバックグラウンド プロセスは esm_errmsg を呼び出す前に、必要な Tool Command Language(Tcl)グローバル名前空間変数を設定する必要があります。 ::module_position を渡すと、開始するフィルタが ESM フレームワークに通知されます。 したがって、esm_errmsg コマンドを使用するフィルタは、バックグラウンド処理用に、(通常の処理中にグローバル名前空間変数で渡される)::module_position を独自の名前空間変数に保存する必要があります。 次に例を示します。
proc ::my_filter_namespace::my_summary_procedure{} { set ::orig_msg “*Jan 24 09:34:02.539: %SYS-1-CONFIG_I: There have been 12 configuration changes to the router between Jan 24 09:04:02.539 and Jan 24 09:34:01.324” set ::timestamp “*Jan 24 09:34:02.539” set ::severity 1 set ::stream 2 set ::traceback “” set ::pid “” set ::process “” set ::format_string “There have been %d configuration changes to the router between %s and %s” set ::msg_args {12 “Jan 24 09:04:01.539” “Jan 24 09:34:01.324”} esm_errmsg $::my_filter_namespace::my_module_position }
esm_errmsg コマンド用にすべてのグローバル名前空間変数を設定することの利点は、フィルタがモジュール式であり、ESM フレームワークでのフィルタの使用順序が重要でないことです。 たとえば、ESM を宛先とするすべてのメッセージの後ろにメッセージ発信者のホスト名を付ける必要がある場合、次のように 1 行の「hostname」フィルタを作成し、フィルタ チェーンの最後に配置できます。
return “$::orig_msg -- $::hostname”
この例では、バックグラウンド処理中にいずれかのフィルタが新しいメッセージを生成し、errmsg ではなく esm_errmsg を使用する場合、これらのメッセージの後ろに明確にホスト名が付けられます。
syslog フィルタ モジュールを作成した後、デバイスからアクセス可能な場所にファイルを保存する必要があります。 ファイルは、ローカル システム メモリにコピーするか、ネットワーク ファイル サーバに保存できます。
Embedded Syslog Manager(ESM)を設定するには、生成された syslog メッセージに適用する 1 つまたは複数のフィルタを指定し、syslog メッセージのターゲットを指定します。
デバイスで 1 つまたは複数の syslog フィルタ モジュールを使用できなければなりません。
1. イネーブル化
2. configureterminal
3. loggingfilterfilter-url [position] [argsfilter-arguments]
4. システム ロギング出力に適用する必要がある各 syslog フィルタ モジュールに対して、ステップ 3 を繰り返します。
6. 希望する各システム ロギング宛先に対して、ステップ 5 を繰り返します。
7. loggingsource-interfacetypenumber
8. loggingorigin-id {hostname | ip | ipv6 |stringuser-defined-id}
9. end
10. showlogging
次の例では、コンソール接続の Embedded Syslog Manager(ESM)フィルタ ロギングがイネーブル、モニタ接続とバッファでの標準ロギングがイネーブル、ホスト 209.165.200.225 での XML 形式のロギングがイネーブルです。
Device(config)# logging filter tftp://209.165.200.225/ESM/escalate.tcl Device(config)# logging filter slot0:/email.tcl user@example.com Device(config)# logging filter slot0:/email_guts.tcl Device(config)# logging console filtered Device(config)# logging monitor 4 Device(config)# logging buffered debugging Device(config)# logging host 209.165.200.225 xml Device(config)# end Device# show logging Syslog logging: enabled (0 messages dropped, 8 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering enabled) Console logging: level debugging, 21 messages logged, xml disabled, filtering enabled Monitor logging: level warnings , 0 messages logged, xml disabled, filtering disabled Buffer logging: level debugging, 30 messages logged, xml disabled, filtering disabled Logging Exception size (8192 bytes) Count and timestamp logging messages: disabled Filter modules: tftp://209.165.200.225/ESM/escalate.tcl slot0:/email.tcl user@example.com Trap logging: level informational, 0 message lines logged Logging to 209.165.200.225, 0 message lines logged, xml enabled, filtering disabled Log Buffer (8192 bytes): *Jan 24 09:34:28.431: %SYS-5-CONFIG_I: Configured from console by console *Jan 24 09:34:51.555: %SYS-5-CONFIG_I: Configured from console by console *Jan 24 09:49:44.295: %SYS-5-CONFIG_I: Configured from console by console Device#
syslog スクリプト モジュールは Tcl スクリプトです。 独自の syslog スクリプト モジュールの開発に役立つよう、次の例を示します。
![]() (注) |
これらのスクリプト モジュールは単に例として提供されており、シスコによるサポートの対象外です。 これらのスクリプトの機能または影響に関して、明示的または黙示的に保証することはありません。 |
この ESM syslog フィルタ モジュール例では、1 つのニーモニック(最初の CLI 引数経由で供給される)を監視し、メッセージの重大度を 2 つめの CLI 引数によって指定される重大度に拡大します。
# =================================================================== # Embedded Syslog Manager || || # || || # Severity Escalation Filter |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # ==================================================================== # # Usage: Set CLI Args to "mnemonic new_severity" # # Namespace: global # Check for null message if { [string length $::orig_msg] == 0} { return "" } if { [info exists ::cli_args] } { set args [split $::cli_args] if { [ string compare -nocase [lindex $args 0] $::mnemonic ] == 0 } { set ::severity [lindex $args 1] set sev_index [ string first [lindex $args 0] $::orig_msg ] if { $sev_index >= 2 } { incr sev_index -2 return [string replace $::orig_msg $sev_index $sev_index \ [lindex $args 1]] } } } return $::orig_msg
この ESM syslog フィルタ モジュール例は、読みやすくするために 2 つのファイルに分割されています。 最初のファイルで、ユーザは msg_to_watch アレイを設定することにより、カウント対象のメッセージおよび要約する頻度(相関期間)を設定できます。 実際の手順は counting_guts.tcl ファイルに含まれています。 バックグラウンド処理を行う可能性がある他の ESM フィルタとの競合を避けるために、別個の名前空間「counting」を使用していることに注意してください。
# =================================================================== # Embedded Syslog Manager || || # || || # Message Counting Filter |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s
# ====================================================================
# # Usage: # 1) Define the location for the counting_guts.tcl script # # 2) Define message categories to count and how often to dump them (sec) # by populating the "msg_to_watch" array below. # Here we define category as facility-severity-mnemonic # Change dump time to 0 to disable counting for that category # # Namespace: counting namespace eval ::counting { set sub_script_url tftp://172.16.0.0/12/ESM/counting_guts.tcl array set msg_to_watch { SYS-5-CONFIG_I 5 } # ======================= End User Setup ============================== # Initialize processes for counting if { [info exists init] == 0 } { source $sub_script_url set position $module_position } # Process the message process_category } ;# end namespace counting
# =================================================================== # Embedded Syslog Manager || || # || || # Message Counting Support Module |||| |||| # ..:||||||:..:||||||:.. # (No User Modification) ------------------------ # C i s c o S y s t e m s
# ====================================================================
namespace eval ::counting { # namespace variables array set cat_msg_sev {} array set cat_msg_traceback {} array set cat_msg_pid {} array set cat_msg_proc {} array set cat_msg_ts {} array set cat_msg_buginfseq {} array set cat_msg_name {} array set cat_msg_fac {} array set cat_msg_format {} array set cat_msg_args {} array set cat_msg_count {} array set cat_msg_dump_ts {} # Should I count this message ? proc query_category {cat} { variable msg_to_watch if { [info exists msg_to_watch($cat)] } { return $msg_to_watch($cat) } else { return 0 } } proc clear_category {index} { variable cat_msg_sev variable cat_msg_traceback variable cat_msg_pid variable cat_msg_proc variable cat_msg_ts variable cat_msg_buginfseq variable cat_msg_name variable cat_msg_fac variable cat_msg_format variable cat_msg_args variable cat_msg_count variable cat_msg_dump_ts unset cat_msg_sev($index) cat_msg_traceback($index) cat_msg_pid($index)\ cat_msg_proc($index) cat_msg_ts($index) \ cat_msg_buginfseq($index) cat_msg_name($index) \ cat_msg_fac($index) cat_msg_format($index) cat_msg_args($index)\ cat_msg_count($index) cat_msg_dump_ts($index) } # send out the counted messages proc dump_category {category} { variable cat_msg_sev variable cat_msg_traceback variable cat_msg_pid variable cat_msg_proc variable cat_msg_ts variable cat_msg_buginfseq variable cat_msg_name variable cat_msg_fac variable cat_msg_format variable cat_msg_args variable cat_msg_count variable cat_msg_dump_ts variable poll_interval set dump_timestamp [cisco_service_timestamp] foreach index [array names cat_msg_count $category] { set fsm "$cat_msg_fac($index)-$cat_msg_sev($index)-$cat_msg_name($index)" set ::orig_msg \ [format "%s%s: %%%s: %s %s %s %s - (%d occurence(s) between %s and %s)"\ $cat_msg_buginfseq($index)\ $dump_timestamp\ $fsm \ [uplevel 1 [linsert $cat_msg_args($index) 0 ::format $cat_msg_format($index) ]] \ $cat_msg_pid($index) \ $cat_msg_proc($index) \ $cat_msg_traceback($index) \ $cat_msg_count($index) \ $cat_msg_ts($index) \ $dump_timestamp] # Prepare for remaining ESM filters set ::severity $cat_msg_sev($index) set ::traceback $cat_msg_traceback($index) set ::pid $cat_msg_pid($index) set ::process $cat_msg_proc($index) set ::timestamp $cat_msg_ts($index) set ::buginfseq $cat_msg_buginfseq($index) set ::mnemonic $cat_msg_name($index) set ::facility $cat_msg_fac($index) set ::format_string $cat_msg_format($index) set ::msg_args [split $cat_msg_args($index)] esm_errmsg $counting::position clear_category $index } } # See if this message already has come through since the last dump. # If so, increment the count, otherwise store it. proc process_category {} { variable cat_msg_sev variable cat_msg_traceback variable cat_msg_pid variable cat_msg_proc variable cat_msg_ts variable cat_msg_buginfseq variable cat_msg_name variable cat_msg_fac variable cat_msg_format variable cat_msg_args variable cat_msg_count variable cat_msg_dump_ts if { [string length $::orig_msg] == 0} { return "" } set category "$::facility-$::severity-$::mnemonic" set correlation_window [expr [ query_category $category ] * 1000] if { $correlation_window == 0 } { return $::orig_msg } set message_args [join $::msg_args] set index "$category,[lindex $::msg_args 0]" if { [info exists cat_msg_count($index)] } { incr cat_msg_count($index) } else { set cat_msg_sev($index) $::severity set cat_msg_traceback($index) $::traceback set cat_msg_pid($index) $::pid set cat_msg_proc($index) $::process set cat_msg_ts($index) $::timestamp set cat_msg_buginfseq($index) $::buginfseq set cat_msg_name($index) $::mnemonic set cat_msg_fac($index) $::facility set cat_msg_format($index) $::format_string set cat_msg_args($index) $message_args set cat_msg_count($index) 1 set cat_msg_dump_ts($index) [clock seconds] catch [after $correlation_window counting::dump_category $index] } return "" } # Initialized set init 1 } ;#end namespace counting
この ESM syslog フィルタ モジュールは、ユーザ定義の XML タグを syslog メッセージに適用します。
# =================================================================== # Embedded Syslog Manager || || # || || # XML Tagging Filter |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # # Usage: Define desired tags below. # # Namespace: xml # Check for null message if { [string length $::orig_msg] == 0} { return "" } namespace eval xml { #### define tags #### set MSG_OPEN "<ios-log-msg>" set MSG_CLOSE "</ios-log-msg>" set FAC_OPEN "<facility>" set FAC_CLOSE "</facility>" set SEV_OPEN "<severity>" set SEV_CLOSE "</severity>" set MNE_OPEN "<msg-id>" set MNE_CLOSE "</msg-id>" set SEQ_OPEN "<seq>" set SEQ_CLOSE "</seq>" set TIME_OPEN "<time>" set TIME_CLOSE "</time>" set ARGS_OPEN "<args>" set ARGS_CLOSE "</args>" set ARG_ID_OPEN "<arg id=" set ARG_ID_CLOSE "</arg>" set PROC_OPEN "<proc>" set PROC_CLOSE "</proc>" set PID_OPEN "<pid>" set PID_CLOSE "</pid>" set TRACE_OPEN "<trace>" set TRACE_CLOSE "</trace>" # ======================= End User Setup ============================== #### clear result #### set result "" #### message opening, facility, severity, and name #### append result $MSG_OPEN $FAC_OPEN $::facility $FAC_CLOSE $SEV_OPEN $::severity $SEV_CLOSE $MNE_OPEN $::mnemonic $MNE_CLOSE #### buginf sequence numbers #### if { [string length $::buginfseq ] > 0 } { append result $SEQ_OPEN $::buginfseq $SEQ_CLOSE } #### timestamps #### if { [string length $::timestamp ] > 0 } { append result $TIME_OPEN $::timestamp $TIME_CLOSE } #### message args #### if { [info exists ::msg_args] } { if { [llength ::msg_args] > 0 } { set i 0 append result $ARGS_OPEN foreach arg $::msg_args { append result $ARG_ID_OPEN $i ">" $arg $ARG_ID_CLOSE incr i } append result $ARGS_CLOSE } } #### traceback #### if { [string length $::traceback ] > 0 } { append result $TRACE_OPEN $::traceback $TRACE_CLOSE } #### process #### if { [string length $::process ] > 0 } { append result $PROC_OPEN $::process $PROC_CLOSE } #### pid #### if { [string length $::pid ] > 0 } { append result $PID_OPEN $::pid $PID_CLOSE } #### message close #### append result $MSG_CLOSE return "$result" } ;# end namespace xml
この ESM syslog フィルタ モジュール例では、コンフィギュレーション メッセージを監視し、CLI 引数として供給される E メール アドレスに送信します。 このフィルタは 2 つのファイルに分割されています。 最初のファイルはフィルタを実装し、2 番目のファイルは Simple Mail Transfer Protocol(SMTP)クライアントを実装します。
# =================================================================== # Embedded Syslog Manager || || # || || # Email Filter |||| |||| # (Configuration Change Warning) ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # Usage: Provide email address as CLI argument. Set email server IP in # email_guts.tcl # # Namespace: email if { [info exists email::init] == 0 } { source tftp://123.123.123.123/ESM/email_guts.tcl } # Check for null message if { [string length $::orig_msg] == 0} { return "" } if { [info exists ::msg_args] } { if { [string compare -nocase CONFIG_I $::mnemonic ] == 0 } { email::sendmessage $::cli_args $::mnemonic \ [string trim $::orig_msg] } } return $::orig_msg
# =================================================================== # Embedded Syslog Manager || || # || || # Email Support Module |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # # Usage: Set email host IP, from, and friendly strings below. # namespace eval email { set sendmail(smtphost)172.16.0.1 set sendmail(from) $::hostname set sendmail(friendly) $::hostname proc sendmessage {toList subject body} { variable sendmail set smtphost $sendmail(smtphost) set from $sendmail(from) set friendly $sendmail(friendly) set sockid [socket $smtphost 25] ## DEBUG set status [catch { puts $sockid "HELO $smtphost" flush $sockid set result [gets $sockid] puts $sockid "MAIL From:<$from>" flush $sockid set result [gets $sockid] foreach to $toList { puts $sockid "RCPT To:<$to>" flush $sockid } set result [gets $sockid] puts $sockid "DATA " flush $sockid set result [gets $sockid] puts $sockid "From: $friendly <$from>" foreach to $toList { puts $sockid "To:<$to>" } puts $sockid "Subject: $subject" puts $sockid "\n" foreach line [split $body "\n"] { puts $sockid " $line" } puts $sockid "." puts $sockid "QUIT" flush $sockid set result [gets $sockid] } result] catch {close $sockid } if {$status} then { return -code error $result } } } ;# end namespace email set email::init 1
この ESM syslog フィルタ モジュールの例では、特定のファシリティを監視し(最初の CLI 引数)、これらのメッセージを特定のストリームにルーティングします(2 番目の CLI 引数)。
# =================================================================== # Embedded Syslog Manager || || # || || # Stream Filter (Facility) |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # Usage: Provide facility and stream as CLI arguments. # # Namespace: global # Check for null message # ======================= End User Setup ============================== set args [split $::cli_args] if { [info exists ::msg_args] } { if { $::facility == [lindex $args 0] } { set ::stream [lindex $args 1] } } return $::orig_msg}
loggingsource-interface CLI コマンドを使用すると、デバイスから送信されるすべての syslog パケットで送信元 IP アドレスを指定できます。 次の syslog フィルタ モジュールの例では、フィルタ モジュール内で show CLI コマンド(この場合は showrunning-config および showipinterface)を使用して、syslog メッセージに送信元 IP アドレスを追加する方法を示します。 スクリプトは、最初に「source_ip::init」というローカル名前空間変数を検索します。 処理される最初の syslog メッセージで変数が定義されていない場合、フィルタは show コマンドを実行し、正規表現を使用して、送信元インターフェイスとその IP アドレスを取得します。
このスクリプトでは、show コマンドが 1 回だけ実行されることに注意してください。 送信元インターフェイスまたはその IP アドレスが変更される場合、新しい情報を取得するためにフィルタを再び初期化する必要があります (show コマンドをすべての syslog メッセージで実行できますが、これはうまく拡張できません)。
# =================================================================== # Embedded Syslog Manager || || # || || # Source IP Module |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # Usage: Adds Logging Source Interface IP address to all messages. # # Namespace:source_ip # # ======================= End User Setup ============================== namespace eval ::source_ip { if { [info exists init] == 0 } { if { [catch {regexp {^logging source-interface (.*$)} [exec show run | inc logging source-interface] match source_int}]} { set suffix "No source interface specified" } elseif { [catch {regexp {Internet address is (.*)/.*$} [exec show ip int $source_int | inc Internet] match ip_addr}]} { set suffix "No IP address configured for source interface" } else { set suffix $ip_addr } set init 1 } if { [string length $::orig_msg] == 0} { return "" } return "$::orig_msg - $suffix" } ;# end namespace source_ip
関連項目 |
マニュアル タイトル |
---|---|
Cisco IOS コマンド |
|
Cisco IOS XE コマンド |
|
System Message Logging |
「Troubleshooting and Fault Management」の章 |
XML 形式のシステム メッセージ ロギング |
syslog メッセージ モジュールの XML インターフェイス |
シスコ ソフトウェアでの Tcl 8.3.4 サポート |
「Cisco IOS Scripting with Tcl」の章 |
ネットワーク管理コマンド(logging コマンドを含む):コマンド構文の詳細、デフォルト設定、コマンド モード、コマンド履歴、使用上のガイドライン、および例 |
『Cisco IOS Network Management Command Reference』 |
標準/RFC |
タイトル |
---|---|
新しい規格または変更された規格はサポートされていません。また、既存の規格に対するサポートに変更はありません。 |
-- |
RFC-3164 |
『The BSD Syslog Protocol』 この RFC は、情報提供のために記載しています。 シスコによる syslog の実装では、この RFC で言及されているプロトコル ガイドラインとの完全な準拠性を要求していません。 サポートされている RFC がすべて記載されているわけではありません。 |
MIB |
MIB のリンク |
---|---|
新しい規格または変更された規格はサポートされていません。また、既存の規格に対するサポートに変更はありません。 |
選択したプラットフォーム、Cisco IOS リリース、およびフィーチャ セットに関する MIB を探してダウンロードするには、次の URL にある Cisco MIB Locator を使用します。 |
説明 |
リンク |
---|---|
★枠で囲まれた Technical Assistance の場合★右の URL にアクセスして、シスコのテクニカル サポートを最大限に活用してください。 これらのリソースは、ソフトウェアをインストールして設定したり、シスコの製品やテクノロジーに関する技術的問題を解決したりするために使用してください。 この Web サイト上のツールにアクセスする際は、Cisco.com のログイン ID およびパスワードが必要です。 |
次の表に、このモジュールで説明した機能に関するリリース情報を示します。 この表は、ソフトウェア リリース トレインで各機能のサポートが導入されたときのソフトウェア リリースだけを示しています。 その機能は、特に断りがない限り、それ以降の一連のソフトウェア リリースでもサポートされます。
プラットフォームのサポートおよびシスコ ソフトウェア イメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。 Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。 Cisco.com のアカウントは必要ありません。
機能名 |
リリース |
機能情報 |
---|---|---|
Embedded Syslog Manager |
12.3(2)T 12.3(2)XE 12.2(25)S 12.2(33)SRC 12.2(33)SB 12.2(33)SXI Cisco IOS XE Release 2.1 |
Embedded Syslog Manager(ESM)機能は、Cisco IOS システム メッセージ ロガーによる伝送前に、システム ロギング メッセージのフィルタリング、拡大、相互の関連付け、ルーティング、およびカスタマイズを可能にするプログラマブル フレームワークを提供します。 導入または変更されたコマンドは、loggingbufferedfiltered、loggingconsolefiltered、loggingfilter、logginghost、loggingmonitorfiltered、loggingorigin-id、showlogging です。 |
![]() (注) |
この用語集に記載されていない用語については、『Internetworking Terms and Acronyms』を参照してください。 |
コンソール:デバイスのコンソール ポートへの接続(CTY またはコンソール回線)を示します。 一般的にこれはコンソール ポートに直接接続された端末または端末エミュレーション プログラムを備えた PC です。 showterminal コマンドに対応します。
モニタ:ライン ポートでの TTY(TeleTYpe 端末)ライン接続を示します。 つまり、「モニタ」キーワードは、端末回線接続または Telnet(端末エミュレーション)接続に対応します。 TTY ライン(ポートとも呼ばれます)は、端末、モデム、シリアル プリンタなどの周辺装置と通信します。 TTY 接続の例として、ダイヤルアップ モデムを使用してデバイスに接続する端末エミュレーション プログラムを備えた PC があります。
SEM:システム エラー メッセージの略。 システムロギング(syslog)プロセスによって生成されるメッセージを指す用語として、「システム エラー メッセージ」が以前に使用されていました。 syslog メッセージは標準化された形式を使用し、「緊急」(レベル 0)から「デバッグ」(レベル 7)までの 8 つの重大度があります。 これらのメッセージには、エラー以外のデバイス動作の通知(情報の通知など)が含まれる場合もあるため、「システム エラー メッセージ」という用語は、実際に誤解を招くおそれがあります。
syslog:シスコ ソフトウェアでのシステム メッセージ ロギング プロセスの略。 また、「syslog メッセージ」のように、生成されたメッセージを指す場合もあります。 専門用語としての「syslog」はリモート ホストへのメッセージ ロギング プロセスのみを指しますが、一般的には、すべてのシスコ システム ロギング プロセスを示すために使用されます。
トラップ:エラー メッセージを送信するためのシステム ソフトウェア内のトリガー。 「トラップ ロギング」とは、リモート ホストへのメッセージのロギングを意味します。 リモート ホストはトラップ メッセージを送信するデバイスから見ると実際には syslog ホストですが、受信側デバイスは、収集された syslog データを他のデバイスに提供することが多いため、受信側デバイスもまた「syslog サーバ」と呼ばれます。
目次
Embedded Syslog Manager(ESM)機能は、システム メッセージ ロガーによって伝送される前にシステム ロギング メッセージをフィルタリング、拡大、相互関連付け、ルーティング、カスタマイズできるようにするプログラマブル フレームワークを提供します。
ご使用のソフトウェア リリースでは、このモジュールで説明されるすべての機能がサポートされているとは限りません。 最新の機能情報および警告については、Bug Search Tool およびご使用のプラットフォームおよびソフトウェア リリースのリリース ノートを参照してください。 このモジュールに記載されている機能の詳細を検索し、各機能がサポートされているリリースのリストを確認する場合は、このモジュールの最後にある機能情報の表を参照してください。
プラットフォームのサポートおよびシスコ ソフトウェア イメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。 Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。 Cisco.com のアカウントは必要ありません。
Embedded Syslog Manager(ESM)は Tcl 8.3.4 サブシステムに依存します。これは、ESM フィルタが Tool Command Language(Tcl)で作成されるためです。 ESM は、Tcl バージョン 8.3.4 以降をサポートするイメージでのみ使用可能です。 Tcl 8.3.4 サポートが追加されるかどうかはリリースによって異なります。
ESM フィルタは Tcl で書かれています。
ESM フィルタリングは、SNMP「履歴」ロギングには適用できません。 したがって、logginghistory および snmp-serverenabletrapssyslog コマンドを使ってロギングされるメッセージには ESM フィルタリングが適用されません。
Embedded Syslog Manager を導入すると、システム メッセージを標準メッセージ、XML 形式のメッセージ、または ESM でフィルタリングされたメッセージとして、別個にロギングできるようになります。 これらの出力は、従来のあらゆる syslog ターゲットに送信できます。 たとえば、コンソール接続への標準ロギング、XML 形式のメッセージのバッファへのロギング、および ESM でフィルタリングされたメッセージのモニタへのロギングをイネーブルにできます。 同様に、各タイプの出力は異なるリモート ホストに送信できます。 別個のロギング プロセスの利点は、たとえば ESM フィルタ モジュールに問題がある場合に標準のロギングが影響を受けないことです。
システム ロギング メッセージは、次の形式で表示されます。
%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
以下に、システム ロギング メッセージの例を示します。
%LINK-5-CHANGED: Interface Serial3/3, changed state to administratively down
通常は、これらのメッセージの前にエラー シーケンス番号やタイムスタンプなどの追加のテキストが存在します。
<シーケンス番号>: <タイム スタンプ>:%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
エラー シーケンス番号とタイムスタンプの後に続くシステム ロギング メッセージの例を以下に示します。
000013: Mar 18 14:52:10.039:%LINK-5-CHANGED: Interface Serial3/3, changed state to administratively down
![]() (注) |
システム ロギング メッセージで使用されるタイム スタンプの形式は、servicetimestamps グローバル コンフィギュレーション モード コマンドによって決まります。 servicesequence-numbers グローバル コンフィギュレーション コマンドは、先頭のシーケンス番号をイネーブルまたはディセーブルにします。 時刻の前のアスタリスク(*)は、システム クロックが信頼できる時刻源と同期していないため、時刻が不正確である可能性があることを示しています。 |
Cisco ソフトウェアの組み込み機能である Embedded Syslog Manager(ESM)を使用すると、送信元でのシステム メッセージ ロギングの完全な制御が可能になります。 ESM に備わっているプログラマティック インターフェイスを使用すると、システム ロギングに関連する特定のニーズを満たすカスタム フィルタを作成できます。 この機能の利点は次のとおりです。
カスタマイズ:システム ロギング メッセージを扱う完全にカスタマイズ可能な処理。相互に連携する複数の syslog コレクタをサポートします。
主要なメッセージの重大度のエスカレーション:システム定義の重大度レベルを使用する代わりに、syslog メッセージに関する独自の重大度レベルを設定できます。
特定のメッセージに対象を絞る:ファシリティのタイプや重大度のタイプに基づいて、特定のメッセージまたはメッセージ タイプをさまざまな syslog コレクタにルーティングできます。
SMTP ベースの E メール アラート:TCP ベースの syslog コレクタまたはシンプル メール転送プロトコル(SMTP)サーバなどの外部サーバに TCP を使用して通知する機能。
メッセージの制限:デバイスレベルのイベントを関連付けることにより、syslog の「メッセージ ストーム」を制限し、管理することができます。
ESM は UDP ベースの syslog メカニズムに代わるものではなく、現在のシステム ロギング プロセスと並行して動作可能なオプションのサブシステムです。 たとえば、元の syslog メッセージ ストリームをサーバ A によって収集し続けるのと同時に、フィルタリング、相互関連、その他の方法でカスタマイズされた ESM ロギング ストリームをサーバ B に送信することができます。元の syslog ストリームまたは ESM ストリームのいずれかを受信するよう、syslog メッセージの現在のすべてのターゲット(コンソール、モニタ、バッファ、および syslog ホスト リスト)を設定することができます。 ESM ストリームは、それに応じて、ユーザ定義のストリームにさらに分割し、コレクタにルーティングできます。
Embedded Syslog Manager(ESM)は syslog フィルタ モジュールを使用してシステム ロギング メッセージを処理します。 syslog フィルタ モジュールは、ローカル システム メモリまたはリモート ファイル サーバに保存される Tool Command Language(Tcl)で書かれたスクリプトです。 ESM は、独自のスクリプトを書いて参照できるため、カスタマイズ可能です。
syslog フィルタ モジュールは、プレーンテキスト ファイルまたはコンパイル済みファイルとして書いて、保存できます。 Tcl スクリプトの事前コンパイルは、TclPro などのツールを使用して実行できます。 コンパイル済みスクリプトは編集できないため、セキュリティおよび管理された一貫性の尺度になります。
![]() (注) |
Tcl スクリプト モジュールには実行可能コマンドが含まれているため、コンフィギュレーション ファイルを管理するのと同じ方法で、これらのファイルのセキュリティを管理する必要があります。 |
Embedded Syslog Manager(ESM)設定で syslog フィルタ モジュールを参照する前に、システム ロギング メッセージへの適用対象となるモジュールを書き込むか、取得する必要があります。 syslog フィルタ モジュールは、ローカル システム メモリまたはリモート ファイル サーバに保存できます。 syslog フィルタ モジュールを書き込む前に、次の概念を理解しておく必要があります。
ESM がイネーブルの場合、すべてのシステム ロギング メッセージは、参照された syslog フィルタ モジュールを通して処理されます。 syslog フィルタ モジュールは、フィルタ チェーンで順番に処理されます。 フィルタ チェーン内の syslog フィルタ モジュールの位置は、loggingfilter グローバル コンフィギュレーション モード コマンドで適用された位置タグによって決定されます。 位置が指定されていない場合、モジュールは、設定に追加された順番で処理されます。
各フィルタ モジュールの出力は、チェーン内の次のフィルタ モジュールの入力として使用されます。 したがって、元の syslog メッセージ(::orig_msg)を含む Tcl グローバル変数は、チェーン内の次のフィルタを呼び出す前に、各フィルタの戻り値に設定されます。 したがって、フィルタが NULL を戻した場合、メッセージは ESM ストリームに送信されません。 すべてのフィルタがメッセージを処理した後、メッセージは、ロガーによる配信のためのキューに入れられます。
コンソール、バッファ、モニタ、および syslog ホストは、特定のメッセージ ストリーム(通常、XML、または ESM)を受信するように設定できます。 syslog ホストは、ユーザ定義の番号が付いたストリームを受信するように、さらに限定できます。 各ターゲットは各メッセージを検査し、そのストリーム タグに基づいてメッセージを受け入れるか、または拒否します。 ESM フィルタは、Tcl グローバル変数「::stream」を変更することによってメッセージのストリーム タグを変更し、宛先ストリームを変更できます。
Embedded Syslog Manager(ESM)が有効になっている場合、システム ロギング メッセージがロギング プロセスに送信されます。 システム ロギング メッセージの中、およびフォーマットされた syslog メッセージ全体に含まれる各データ エレメントが、Tcl グローバル変数として記録されます。 syslog メッセージのデータ エレメントの形式は、次のとおりです。
<シーケンス番号>: <タイム スタンプ>:%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
メッセージ テキストには、しばしばメッセージ引数が含まれます。
また、メッセージが syslog ホストで受信されるときに「syslog カウント」番号が追加されます。
<syslog カウント>: <シーケンス番号>: <タイム スタンプ>:%<ファシリティ>-<重大度>-<ニーモニック>: <メッセージ テキスト>
次の例は、シーケンスの最初に含まれる syslog カウント番号を示しています。
以下の表に、syslog フィルタ モジュールで使用される Tcl スクリプト入力変数を示します。 フィルタで扱う必要のある syslog メッセージ データは、Tcl グローバル名前空間変数として渡されます。 したがって、スクリプト モジュール内で変数の前に二重のコロンを付ける必要があります。
システム ロギング メッセージが生成されるたびに、syslog フィルタ モジュールがシリーズで呼び出されます。 このシリーズは ::module_position 変数によって決定されますが、これは一般的にシステム設定内でモジュールが参照される順番(モジュールが設定される順番)です。
あるフィルタ モジュールの出力が、次のフィルタ モジュールへの入力になります。 フィルタへの入力は Tcl グローバル名前空間変数であるため、それぞれのフィルタは、フィルタの目的に応じてこれらの変数のいずれかまたはすべてを変更できます。
後続の複数のフィルタ実行の間で Embedded Syslog Manager(ESM)フレームワークによって自動的に更新される Tcl グローバル変数は、::orig_msg 変数と ::cli_args 変数だけです。 フレームワークは、自動的に ::orig_msg の値をフィルタ モジュールの戻り値に設定します。 したがって、元のメッセージを変更するかフィルタリングするように設定されているフィルタでは、::orig_msg 変数の値を手動で設定しないでください。フィルタは目的の値を返すことだけが必要です。 たとえば、次の 1 行の ESM フィルタ
return “This is my new syslog message.”
は、受け取ったメッセージをすべて無視して出力を「This is my new syslog message」という定数文字列に常に変更します。 このモジュールがチェーン内の最後のフィルタである場合、すべての ESM ターゲットはこの文字列を最終的な syslog メッセージとして受け取ります。
1 行の ESM フィルタは、
return “”
ESM ストリームへのすべての syslog メッセージをブロックします。 たとえば、
return $::orig_msg
という行は、メッセージをチェーンの次のフィルタに渡すだけです。 したがって、不要なメッセージを抑制するように設定されている ESM フィルタは次のように見えます。
if { [my_procedure_to_check_this_message] == 1 } { return $::orig_msg } else { return “” }
その設計によって、一部のフィルタは ::orig_msg 変数をまったく使用せず、そのデータ エレメントから syslog メッセージを再構築する(::format_string、::msg_args、::timestamp などを使用)場合があります。 たとえば、XML タグ付きフィルタは個々のデータ エレメントにタグを付け、元のフォーマットされたメッセージを無視します。 このようなモジュールが Tcl スクリプトの最初で ::orig_msg 変数を検査することは重要です。以前のフィルタで「メッセージを送信してはならない」と指示されている場合(つまり ::orig_msg が NULL の場合)、メッセージは処理されず、NULL を返します。
また、exec および config Tcl コマンドを使用して syslog フィルタ モジュールにコマンドを追加することもできます。 たとえば、syslog メッセージに送信元 IP アドレスを追加する必要があり、しかも(logging source-interfaceコマンドを使って)イーサネット 2/0 インターフェイスから送信されるよう syslog メッセージが設定される場合には、スクリプト内で exec Tcl コマンドを次のように使用することで、モジュールの初期化中に show interface Ethernet 2/0 コマンドを発行できます。
set source_ip_string [exec show ip int E2/0 | inc Internet] puts $source_ip_string " Internet address is 10.4.2.63/24"
Tcl では、後の時点で処理するためにコマンドをキューに入れることができます。それを行うには after Tcl コマンドを使用します。 このコマンドの最も一般的な使用方法は、一定の時間間隔(「相関期間」と呼ばれる)にわたって、複数のイベントを相互に関連付ける(収集して要約する)ことです。 該当する期間が満了すると、フィルタは「ウェイクアップ」し、その期間に発生したイベントを計算または要約する必要があります。また、多くの場合、イベント報告用の新しい syslog メッセージを送信する必要があります。 このバックグラウンド プロセスは、特定の時間の経過後、Tcl インタープリタがキューに入れられたコマンドを実行できるようにする ESM イベント ループ プロセスによって処理されます。
syslog フィルタ モジュールが相関期間を利用する必要がある場合、相関期間が満了した時点で after Tcl コマンドを使用して要約手順を呼び出す必要があります(「Embedded Syslog Manager の設定例」セクションにある例を参照)。 バックグラウンド プロセスの実行中は通常のフィルタ チェーンの処理が行われないため、出力を生成するために、これらのフィルタで 2 つの ESM Tcl 拡張機能(errmsg または esm_errmsg)のいずれかを使用する必要があります。
バックグラウンド処理中に、after コマンドによってキューに入れられたコマンドは、(通常の処理のように)フィルタ チェーンのコンテキストでは実行されず、Tcl インタープリタによって連続して実行される自律的な手順となります。 したがって、これらのバックグラウンド手順では通常の Tcl グローバル名前空間変数を扱うべきではありません(ただし esm_errmsg の使用時に次のフィルタ用にグローバル名前空間変数を設定する場合を除く)。代わりに、独自の名前空間に保存される変数を扱う必要があります。 これらの変数が手順の定義の外側で宣言される場合、すべてのコールで永続的です。
errmsg Tcl コマンドの目的は、新しいメッセージを作成して配信用に送り出し、その際に他の syslog フィルタ モジュールをすべて回避することです。 errmsg コマンドの構文は次のとおりです。
errmsg <severity> <stream> <message_string>
esm_errmsg Tcl コマンドの目的は、新しいメッセージを作成し、フィルタ チェーン内のそれ以降にある syslog フィルタ モジュールでメッセージを処理して、配信用に送り出すことです。 esm_errmsg コマンドの構文は次のとおりです。
esm_errmsg <module_position>
errmsg() Tcl 関数と esm_errmsg() Tcl 関数の主な相違点として、errmsg はフィルタを無視してメッセージを配信用にキューに直接入れます。一方、esm_errmsg はフィルタ チェーンの後続部分に syslog メッセージを送ります。
次の例では、新しい syslog メッセージが作成され、アラート重大度 1 のタグを付けられて、設定された ESM ロギング ターゲット(ストリーム 2)に送信されます。 このフィルタの目的は、30 分の相関期間中に個々の SYS-5-CONFIG メッセージを抑制し、ウィンドウ終了時に要約メッセージを送信することです。
errmsg 1 2 “*Jan 24 09:34:02.539: %SYS-1-CONFIG_I: There have been 12 configuration changes to the router between Jan 24 09:04:02.539 and Jan 24 09:34:01.324”
(それ以降にある残りのフィルタを呼び出す)esm_errmsg を使用するために、このバックグラウンド プロセスは esm_errmsg を呼び出す前に、必要な Tool Command Language(Tcl)グローバル名前空間変数を設定する必要があります。 ::module_position を渡すと、開始するフィルタが ESM フレームワークに通知されます。 したがって、esm_errmsg コマンドを使用するフィルタは、バックグラウンド処理用に、(通常の処理中にグローバル名前空間変数で渡される)::module_position を独自の名前空間変数に保存する必要があります。 次に例を示します。
proc ::my_filter_namespace::my_summary_procedure{} { set ::orig_msg “*Jan 24 09:34:02.539: %SYS-1-CONFIG_I: There have been 12 configuration changes to the router between Jan 24 09:04:02.539 and Jan 24 09:34:01.324” set ::timestamp “*Jan 24 09:34:02.539” set ::severity 1 set ::stream 2 set ::traceback “” set ::pid “” set ::process “” set ::format_string “There have been %d configuration changes to the router between %s and %s” set ::msg_args {12 “Jan 24 09:04:01.539” “Jan 24 09:34:01.324”} esm_errmsg $::my_filter_namespace::my_module_position }
esm_errmsg コマンド用にすべてのグローバル名前空間変数を設定することの利点は、フィルタがモジュール式であり、ESM フレームワークでのフィルタの使用順序が重要でないことです。 たとえば、ESM を宛先とするすべてのメッセージの後ろにメッセージ発信者のホスト名を付ける必要がある場合、次のように 1 行の「hostname」フィルタを作成し、フィルタ チェーンの最後に配置できます。
return “$::orig_msg -- $::hostname”
この例では、バックグラウンド処理中にいずれかのフィルタが新しいメッセージを生成し、errmsg ではなく esm_errmsg を使用する場合、これらのメッセージの後ろに明確にホスト名が付けられます。
Embedded Syslog Manager(ESM)を設定するには、生成された syslog メッセージに適用する 1 つまたは複数のフィルタを指定し、syslog メッセージのターゲットを指定します。
1. イネーブル化
2. configureterminal
3. loggingfilterfilter-url [position] [argsfilter-arguments]
4. システム ロギング出力に適用する必要がある各 syslog フィルタ モジュールに対して、ステップ 3 を繰り返します。
6. 希望する各システム ロギング宛先に対して、ステップ 5 を繰り返します。
7. loggingsource-interfacetypenumber
8. loggingorigin-id {hostname | ip | ipv6 |stringuser-defined-id}
9. end
10. showlogging
次の例では、コンソール接続の Embedded Syslog Manager(ESM)フィルタ ロギングがイネーブル、モニタ接続とバッファでの標準ロギングがイネーブル、ホスト 209.165.200.225 での XML 形式のロギングがイネーブルです。
Device(config)# logging filter tftp://209.165.200.225/ESM/escalate.tcl Device(config)# logging filter slot0:/email.tcl user@example.com Device(config)# logging filter slot0:/email_guts.tcl Device(config)# logging console filtered Device(config)# logging monitor 4 Device(config)# logging buffered debugging Device(config)# logging host 209.165.200.225 xml Device(config)# end Device# show logging Syslog logging: enabled (0 messages dropped, 8 messages rate-limited, 0 flushes, 0 overruns, xml disabled, filtering enabled) Console logging: level debugging, 21 messages logged, xml disabled, filtering enabled Monitor logging: level warnings , 0 messages logged, xml disabled, filtering disabled Buffer logging: level debugging, 30 messages logged, xml disabled, filtering disabled Logging Exception size (8192 bytes) Count and timestamp logging messages: disabled Filter modules: tftp://209.165.200.225/ESM/escalate.tcl slot0:/email.tcl user@example.com Trap logging: level informational, 0 message lines logged Logging to 209.165.200.225, 0 message lines logged, xml enabled, filtering disabled Log Buffer (8192 bytes): *Jan 24 09:34:28.431: %SYS-5-CONFIG_I: Configured from console by console *Jan 24 09:34:51.555: %SYS-5-CONFIG_I: Configured from console by console *Jan 24 09:49:44.295: %SYS-5-CONFIG_I: Configured from console by console Device#
この ESM syslog フィルタ モジュール例では、1 つのニーモニック(最初の CLI 引数経由で供給される)を監視し、メッセージの重大度を 2 つめの CLI 引数によって指定される重大度に拡大します。
# =================================================================== # Embedded Syslog Manager || || # || || # Severity Escalation Filter |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # ==================================================================== # # Usage: Set CLI Args to "mnemonic new_severity" # # Namespace: global # Check for null message if { [string length $::orig_msg] == 0} { return "" } if { [info exists ::cli_args] } { set args [split $::cli_args] if { [ string compare -nocase [lindex $args 0] $::mnemonic ] == 0 } { set ::severity [lindex $args 1] set sev_index [ string first [lindex $args 0] $::orig_msg ] if { $sev_index >= 2 } { incr sev_index -2 return [string replace $::orig_msg $sev_index $sev_index \ [lindex $args 1]] } } } return $::orig_msg
この ESM syslog フィルタ モジュール例は、読みやすくするために 2 つのファイルに分割されています。 最初のファイルで、ユーザは msg_to_watch アレイを設定することにより、カウント対象のメッセージおよび要約する頻度(相関期間)を設定できます。 実際の手順は counting_guts.tcl ファイルに含まれています。 バックグラウンド処理を行う可能性がある他の ESM フィルタとの競合を避けるために、別個の名前空間「counting」を使用していることに注意してください。
# =================================================================== # Embedded Syslog Manager || || # || || # Message Counting Filter |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s
# ====================================================================
# # Usage: # 1) Define the location for the counting_guts.tcl script # # 2) Define message categories to count and how often to dump them (sec) # by populating the "msg_to_watch" array below. # Here we define category as facility-severity-mnemonic # Change dump time to 0 to disable counting for that category # # Namespace: counting namespace eval ::counting { set sub_script_url tftp://172.16.0.0/12/ESM/counting_guts.tcl array set msg_to_watch { SYS-5-CONFIG_I 5 } # ======================= End User Setup ============================== # Initialize processes for counting if { [info exists init] == 0 } { source $sub_script_url set position $module_position } # Process the message process_category } ;# end namespace counting
# =================================================================== # Embedded Syslog Manager || || # || || # Message Counting Support Module |||| |||| # ..:||||||:..:||||||:.. # (No User Modification) ------------------------ # C i s c o S y s t e m s
# ====================================================================
namespace eval ::counting { # namespace variables array set cat_msg_sev {} array set cat_msg_traceback {} array set cat_msg_pid {} array set cat_msg_proc {} array set cat_msg_ts {} array set cat_msg_buginfseq {} array set cat_msg_name {} array set cat_msg_fac {} array set cat_msg_format {} array set cat_msg_args {} array set cat_msg_count {} array set cat_msg_dump_ts {} # Should I count this message ? proc query_category {cat} { variable msg_to_watch if { [info exists msg_to_watch($cat)] } { return $msg_to_watch($cat) } else { return 0 } } proc clear_category {index} { variable cat_msg_sev variable cat_msg_traceback variable cat_msg_pid variable cat_msg_proc variable cat_msg_ts variable cat_msg_buginfseq variable cat_msg_name variable cat_msg_fac variable cat_msg_format variable cat_msg_args variable cat_msg_count variable cat_msg_dump_ts unset cat_msg_sev($index) cat_msg_traceback($index) cat_msg_pid($index)\ cat_msg_proc($index) cat_msg_ts($index) \ cat_msg_buginfseq($index) cat_msg_name($index) \ cat_msg_fac($index) cat_msg_format($index) cat_msg_args($index)\ cat_msg_count($index) cat_msg_dump_ts($index) } # send out the counted messages proc dump_category {category} { variable cat_msg_sev variable cat_msg_traceback variable cat_msg_pid variable cat_msg_proc variable cat_msg_ts variable cat_msg_buginfseq variable cat_msg_name variable cat_msg_fac variable cat_msg_format variable cat_msg_args variable cat_msg_count variable cat_msg_dump_ts variable poll_interval set dump_timestamp [cisco_service_timestamp] foreach index [array names cat_msg_count $category] { set fsm "$cat_msg_fac($index)-$cat_msg_sev($index)-$cat_msg_name($index)" set ::orig_msg \ [format "%s%s: %%%s: %s %s %s %s - (%d occurence(s) between %s and %s)"\ $cat_msg_buginfseq($index)\ $dump_timestamp\ $fsm \ [uplevel 1 [linsert $cat_msg_args($index) 0 ::format $cat_msg_format($index) ]] \ $cat_msg_pid($index) \ $cat_msg_proc($index) \ $cat_msg_traceback($index) \ $cat_msg_count($index) \ $cat_msg_ts($index) \ $dump_timestamp] # Prepare for remaining ESM filters set ::severity $cat_msg_sev($index) set ::traceback $cat_msg_traceback($index) set ::pid $cat_msg_pid($index) set ::process $cat_msg_proc($index) set ::timestamp $cat_msg_ts($index) set ::buginfseq $cat_msg_buginfseq($index) set ::mnemonic $cat_msg_name($index) set ::facility $cat_msg_fac($index) set ::format_string $cat_msg_format($index) set ::msg_args [split $cat_msg_args($index)] esm_errmsg $counting::position clear_category $index } } # See if this message already has come through since the last dump. # If so, increment the count, otherwise store it. proc process_category {} { variable cat_msg_sev variable cat_msg_traceback variable cat_msg_pid variable cat_msg_proc variable cat_msg_ts variable cat_msg_buginfseq variable cat_msg_name variable cat_msg_fac variable cat_msg_format variable cat_msg_args variable cat_msg_count variable cat_msg_dump_ts if { [string length $::orig_msg] == 0} { return "" } set category "$::facility-$::severity-$::mnemonic" set correlation_window [expr [ query_category $category ] * 1000] if { $correlation_window == 0 } { return $::orig_msg } set message_args [join $::msg_args] set index "$category,[lindex $::msg_args 0]" if { [info exists cat_msg_count($index)] } { incr cat_msg_count($index) } else { set cat_msg_sev($index) $::severity set cat_msg_traceback($index) $::traceback set cat_msg_pid($index) $::pid set cat_msg_proc($index) $::process set cat_msg_ts($index) $::timestamp set cat_msg_buginfseq($index) $::buginfseq set cat_msg_name($index) $::mnemonic set cat_msg_fac($index) $::facility set cat_msg_format($index) $::format_string set cat_msg_args($index) $message_args set cat_msg_count($index) 1 set cat_msg_dump_ts($index) [clock seconds] catch [after $correlation_window counting::dump_category $index] } return "" } # Initialized set init 1 } ;#end namespace counting
この ESM syslog フィルタ モジュールは、ユーザ定義の XML タグを syslog メッセージに適用します。
# =================================================================== # Embedded Syslog Manager || || # || || # XML Tagging Filter |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # # Usage: Define desired tags below. # # Namespace: xml # Check for null message if { [string length $::orig_msg] == 0} { return "" } namespace eval xml { #### define tags #### set MSG_OPEN "<ios-log-msg>" set MSG_CLOSE "</ios-log-msg>" set FAC_OPEN "<facility>" set FAC_CLOSE "</facility>" set SEV_OPEN "<severity>" set SEV_CLOSE "</severity>" set MNE_OPEN "<msg-id>" set MNE_CLOSE "</msg-id>" set SEQ_OPEN "<seq>" set SEQ_CLOSE "</seq>" set TIME_OPEN "<time>" set TIME_CLOSE "</time>" set ARGS_OPEN "<args>" set ARGS_CLOSE "</args>" set ARG_ID_OPEN "<arg id=" set ARG_ID_CLOSE "</arg>" set PROC_OPEN "<proc>" set PROC_CLOSE "</proc>" set PID_OPEN "<pid>" set PID_CLOSE "</pid>" set TRACE_OPEN "<trace>" set TRACE_CLOSE "</trace>" # ======================= End User Setup ============================== #### clear result #### set result "" #### message opening, facility, severity, and name #### append result $MSG_OPEN $FAC_OPEN $::facility $FAC_CLOSE $SEV_OPEN $::severity $SEV_CLOSE $MNE_OPEN $::mnemonic $MNE_CLOSE #### buginf sequence numbers #### if { [string length $::buginfseq ] > 0 } { append result $SEQ_OPEN $::buginfseq $SEQ_CLOSE } #### timestamps #### if { [string length $::timestamp ] > 0 } { append result $TIME_OPEN $::timestamp $TIME_CLOSE } #### message args #### if { [info exists ::msg_args] } { if { [llength ::msg_args] > 0 } { set i 0 append result $ARGS_OPEN foreach arg $::msg_args { append result $ARG_ID_OPEN $i ">" $arg $ARG_ID_CLOSE incr i } append result $ARGS_CLOSE } } #### traceback #### if { [string length $::traceback ] > 0 } { append result $TRACE_OPEN $::traceback $TRACE_CLOSE } #### process #### if { [string length $::process ] > 0 } { append result $PROC_OPEN $::process $PROC_CLOSE } #### pid #### if { [string length $::pid ] > 0 } { append result $PID_OPEN $::pid $PID_CLOSE } #### message close #### append result $MSG_CLOSE return "$result" } ;# end namespace xml
この ESM syslog フィルタ モジュール例では、コンフィギュレーション メッセージを監視し、CLI 引数として供給される E メール アドレスに送信します。 このフィルタは 2 つのファイルに分割されています。 最初のファイルはフィルタを実装し、2 番目のファイルは Simple Mail Transfer Protocol(SMTP)クライアントを実装します。
# =================================================================== # Embedded Syslog Manager || || # || || # Email Filter |||| |||| # (Configuration Change Warning) ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # Usage: Provide email address as CLI argument. Set email server IP in # email_guts.tcl # # Namespace: email if { [info exists email::init] == 0 } { source tftp://123.123.123.123/ESM/email_guts.tcl } # Check for null message if { [string length $::orig_msg] == 0} { return "" } if { [info exists ::msg_args] } { if { [string compare -nocase CONFIG_I $::mnemonic ] == 0 } { email::sendmessage $::cli_args $::mnemonic \ [string trim $::orig_msg] } } return $::orig_msg
# =================================================================== # Embedded Syslog Manager || || # || || # Email Support Module |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # # Usage: Set email host IP, from, and friendly strings below. # namespace eval email { set sendmail(smtphost)172.16.0.1 set sendmail(from) $::hostname set sendmail(friendly) $::hostname proc sendmessage {toList subject body} { variable sendmail set smtphost $sendmail(smtphost) set from $sendmail(from) set friendly $sendmail(friendly) set sockid [socket $smtphost 25] ## DEBUG set status [catch { puts $sockid "HELO $smtphost" flush $sockid set result [gets $sockid] puts $sockid "MAIL From:<$from>" flush $sockid set result [gets $sockid] foreach to $toList { puts $sockid "RCPT To:<$to>" flush $sockid } set result [gets $sockid] puts $sockid "DATA " flush $sockid set result [gets $sockid] puts $sockid "From: $friendly <$from>" foreach to $toList { puts $sockid "To:<$to>" } puts $sockid "Subject: $subject" puts $sockid "\n" foreach line [split $body "\n"] { puts $sockid " $line" } puts $sockid "." puts $sockid "QUIT" flush $sockid set result [gets $sockid] } result] catch {close $sockid } if {$status} then { return -code error $result } } } ;# end namespace email set email::init 1
この ESM syslog フィルタ モジュールの例では、特定のファシリティを監視し(最初の CLI 引数)、これらのメッセージを特定のストリームにルーティングします(2 番目の CLI 引数)。
# =================================================================== # Embedded Syslog Manager || || # || || # Stream Filter (Facility) |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # Usage: Provide facility and stream as CLI arguments. # # Namespace: global # Check for null message # ======================= End User Setup ============================== set args [split $::cli_args] if { [info exists ::msg_args] } { if { $::facility == [lindex $args 0] } { set ::stream [lindex $args 1] } } return $::orig_msg}
loggingsource-interface CLI コマンドを使用すると、デバイスから送信されるすべての syslog パケットで送信元 IP アドレスを指定できます。 次の syslog フィルタ モジュールの例では、フィルタ モジュール内で show CLI コマンド(この場合は showrunning-config および showipinterface)を使用して、syslog メッセージに送信元 IP アドレスを追加する方法を示します。 スクリプトは、最初に「source_ip::init」というローカル名前空間変数を検索します。 処理される最初の syslog メッセージで変数が定義されていない場合、フィルタは show コマンドを実行し、正規表現を使用して、送信元インターフェイスとその IP アドレスを取得します。
このスクリプトでは、show コマンドが 1 回だけ実行されることに注意してください。 送信元インターフェイスまたはその IP アドレスが変更される場合、新しい情報を取得するためにフィルタを再び初期化する必要があります (show コマンドをすべての syslog メッセージで実行できますが、これはうまく拡張できません)。
# =================================================================== # Embedded Syslog Manager || || # || || # Source IP Module |||| |||| # ..:||||||:..:||||||:.. # ------------------------ # C i s c o S y s t e m s # =================================================================== # Usage: Adds Logging Source Interface IP address to all messages. # # Namespace:source_ip # # ======================= End User Setup ============================== namespace eval ::source_ip { if { [info exists init] == 0 } { if { [catch {regexp {^logging source-interface (.*$)} [exec show run | inc logging source-interface] match source_int}]} { set suffix "No source interface specified" } elseif { [catch {regexp {Internet address is (.*)/.*$} [exec show ip int $source_int | inc Internet] match ip_addr}]} { set suffix "No IP address configured for source interface" } else { set suffix $ip_addr } set init 1 } if { [string length $::orig_msg] == 0} { return "" } return "$::orig_msg - $suffix" } ;# end namespace source_ip
関連項目 |
マニュアル タイトル |
---|---|
Cisco IOS コマンド |
|
Cisco IOS XE コマンド |
|
System Message Logging |
「Troubleshooting and Fault Management」の章 |
XML 形式のシステム メッセージ ロギング |
syslog メッセージ モジュールの XML インターフェイス |
シスコ ソフトウェアでの Tcl 8.3.4 サポート |
「Cisco IOS Scripting with Tcl」の章 |
ネットワーク管理コマンド(logging コマンドを含む):コマンド構文の詳細、デフォルト設定、コマンド モード、コマンド履歴、使用上のガイドライン、および例 |
『Cisco IOS Network Management Command Reference』 |
次の表に、このモジュールで説明した機能に関するリリース情報を示します。 この表は、ソフトウェア リリース トレインで各機能のサポートが導入されたときのソフトウェア リリースだけを示しています。 その機能は、特に断りがない限り、それ以降の一連のソフトウェア リリースでもサポートされます。
プラットフォームのサポートおよびシスコ ソフトウェア イメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。 Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。 Cisco.com のアカウントは必要ありません。
機能名 |
リリース |
機能情報 |
---|---|---|
Embedded Syslog Manager |
12.3(2)T 12.3(2)XE 12.2(25)S 12.2(33)SRC 12.2(33)SB 12.2(33)SXI Cisco IOS XE Release 2.1 |
Embedded Syslog Manager(ESM)機能は、Cisco IOS システム メッセージ ロガーによる伝送前に、システム ロギング メッセージのフィルタリング、拡大、相互の関連付け、ルーティング、およびカスタマイズを可能にするプログラマブル フレームワークを提供します。 導入または変更されたコマンドは、loggingbufferedfiltered、loggingconsolefiltered、loggingfilter、logginghost、loggingmonitorfiltered、loggingorigin-id、showlogging です。 |
![]() (注) |
この用語集に記載されていない用語については、『Internetworking Terms and Acronyms』を参照してください。 |
コンソール:デバイスのコンソール ポートへの接続(CTY またはコンソール回線)を示します。 一般的にこれはコンソール ポートに直接接続された端末または端末エミュレーション プログラムを備えた PC です。 showterminal コマンドに対応します。
モニタ:ライン ポートでの TTY(TeleTYpe 端末)ライン接続を示します。 つまり、「モニタ」キーワードは、端末回線接続または Telnet(端末エミュレーション)接続に対応します。 TTY ライン(ポートとも呼ばれます)は、端末、モデム、シリアル プリンタなどの周辺装置と通信します。 TTY 接続の例として、ダイヤルアップ モデムを使用してデバイスに接続する端末エミュレーション プログラムを備えた PC があります。
SEM:システム エラー メッセージの略。 システムロギング(syslog)プロセスによって生成されるメッセージを指す用語として、「システム エラー メッセージ」が以前に使用されていました。 syslog メッセージは標準化された形式を使用し、「緊急」(レベル 0)から「デバッグ」(レベル 7)までの 8 つの重大度があります。 これらのメッセージには、エラー以外のデバイス動作の通知(情報の通知など)が含まれる場合もあるため、「システム エラー メッセージ」という用語は、実際に誤解を招くおそれがあります。
syslog:シスコ ソフトウェアでのシステム メッセージ ロギング プロセスの略。 また、「syslog メッセージ」のように、生成されたメッセージを指す場合もあります。 専門用語としての「syslog」はリモート ホストへのメッセージ ロギング プロセスのみを指しますが、一般的には、すべてのシスコ システム ロギング プロセスを示すために使用されます。
トラップ:エラー メッセージを送信するためのシステム ソフトウェア内のトリガー。 「トラップ ロギング」とは、リモート ホストへのメッセージのロギングを意味します。 リモート ホストはトラップ メッセージを送信するデバイスから見ると実際には syslog ホストですが、受信側デバイスは、収集された syslog データを他のデバイスに提供することが多いため、受信側デバイスもまた「syslog サーバ」と呼ばれます。