内容

概要

前提条件

要件

使用するコンポーネント

CPU 使用率が高い場合に起こる症状

CPU 使用率が高い場合のトラブルシューティング

原因の特定と問題の解決

割り込みが原因の高い CPU 使用率

Cisco 7600 シリーズ ルータで Netflow NDE を有効にした場合の高い CPU

プロセスが原因の高い CPU 使用率

PCI および FAST メモリ プールが非常に高い使用率を示す

%SNMP-4-HIGHCPU：プロセスが[chars] of [chars]の[dec]msしきい値([dec]ms IOS quantum)を超えています – 結果[chars]

ソフトウェアによる暗号化が原因の高い CPU

フラグメンテーションが原因の高い CPU 使用率

詳細情報を取得するためのコマンド

show processes cpu コマンド

show interfaces コマンド

show interfaces switchingコマンド

show interfaces statコマンド

show ip nat translationsコマンド

show alignコマンド

show versionコマンド

show logコマンド

CPU使用率が高い状態での自動データ収集用のEEMスクリプト

SNMP OIDを使用したEEMスクリプトの例

CPUしきい値通知メッセージを含むEEMスクリプトの例

CPUプロファイルを開始/停止するEEMスクリプトの例

定期的なデータ収集のためのUNIXシェルスクリプト

関連情報

概要

このドキュメントでは、CiscoルータのCPU高使用率の一般的な症状と原因について説明し、一般的な問題のガイドラインと解決策を示します。

前提条件

要件

次の項目に関する知識があることが推奨されます。

- Cisco ルータ

- Cisco IOS®ソフトウェアスイッチングパス

Cisco IOS ソフトウェアのスイッチング パスについての詳細は、『パフォーマンス チューニングに関する基本事項』を参照してください。

使用するコンポーネント

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

CPU 使用率が高い場合に起こる症状

次のリストは、CPU 使用率が高い場合の一般的な症状を示しています。これらの症状のいずれかが見つかった場合は、このドキュメントで説明する手順を使用して問題をトラブルシューティングしてください。

- 割合が高い  show processes cpu  コマンド出力.

シスコ デバイスから show processes cpu コマンドの出力がある場合は、Cisco CLI Analyzer を使用して潜在的な問題および修正を表示できます。

注:Cisco CLIアナライザを使用するには、シスコ登録ユーザとしてログインし、JavaScriptを有効にしている必要があります。

- 低いパフォーマンス

- ルータ上のサービスが正常に応答しない。たとえば、次のような症状が起こる。

- Telnet の応答が遅い、またはルータに Telnet できない

- コンソールの応答が遅い

- ping の応答が遅い、またはまったく応答しない

- ルータが他のルータにルーティング アップデートを送信しない

- 高いバッファ障害

CPU 使用率が高い場合のトラブルシューティング

「CPU 使用率が高い場合に起こる症状」のうちのいずれかの症状が発生した場合は、次の手順を実行します。

- セキュリティ問題が発生していないかどうかをチェックします。一般に、CPU の高使用率は、ネットワーク内で活動するワームやウィルスなどのセキュリティ問題によって発生します。たとえば、最近ネットワークに対する変更を行っていない場合は、これが原因になっている可能性が高くなります。通常、アクセスリストに回線を追加するときに設定を変更すると、この問題の影響を軽減できます。 「Cisco 製品セキュリティアドバイザリおよび注意」ページには、一番可能性が高い原因の検出方法と、具体的な回避策が記載されています。

詳細については、次を参照してください。

- インターネットの脅威に関する 100 の質問と回答

- シスコ製品セキュリティ アドバイザリおよび通知

- シスコによる脅威の制御

- すべて確認する  debug  ルータ内のコマンドは、 undebug all または no debug all  コマンドを発行します。

- Cisco Unified Computing Systemの  show コマンドをルータで発行する必要がありますか。可能な場合は、次のコマンドを使用して、より多くの情報をすぐに収集します  show コマンドを発行します。

- ルータへのアクセス可否を確認します。この問題に再現性があるかどうかを確認します。「はい」の場合は、ルータの電源を再投入し、問題を再現する前に、  scheduler interval 500  コマンドが表示されない場合もあります。これにより、優先順位の低いプロセスが 500 ミリ秒ごとに実行されるようスケジュールされるため、CPU 使用率が 100 % であっても、いくつかのコマンドを実行できます。Cisco 7200およびCisco 7500シリーズルータでは、  scheduler allocate 3000 1000  コマンドが表示されない場合もあります。

- CPU 高負荷時の症状が、短く不規則な間隔で発生しているかを確認します。「はい」の場合は、定期的に次の出力を収集します  show processes cpu  コマンドを発行すると、高いCPU使用率の原因が割り込みにあるのか、それとも特定のプロセスにあるのかを表示できます。このUNIXスクリプトを使用し、最初に見つけたものに基づいて、問題の詳細な調査に必要なデータを収集するようにスクリプトを変更します。

原因の特定と問題の解決

show processes cpu コマンドを使用して、CPU 使用率が高いのが割り込みまたはプロセスによるものかどうかを確認します。

割り込みが原因の高い CPU 使用率

詳細は、『割り込みによって CPU 使用率が高くなる場合のトラブルシューティング』を参照してください。割り込みによって CPU 使用率が高くなる原因が CEF のパケット交換による可能性が高い場合、CPU の使用率によるルータ パフォーマンスへの影響はありません。

Cisco 7600 シリーズ ルータで Netflow NDE を有効にした場合の高い CPU

NetFlowがバージョン7用に設定されている場合、フローはルーティングプロセッサによって実行されるため、CPU使用率が高くなる可能性があります。

NetFlowバージョン7が原因でCPU使用率が高くなる問題をトラブルシューティングするには、NetFlowエクスポートがSPによって実行されるように、mls nde senderバージョン5を設定します。SPはバージョン5またはバージョン9のデフォルトです。

プロセスが原因の高い CPU 使用率

どのプロセスがCPUをロードするかを確認します。プロセスについて通常とは異なるアクティビティがあれば、ログにエラー メッセージが記録されます。したがって、 show logging exec  コマンドは、最初に、CPUサイクルを大量に消費するプロセスに関連するエラーをチェックする必要があります。

debugコマンドを使用すると、これらのプロセスでCPU使用率が高くなる場合のトラブルシューティングを行うことができます。debugコマンドは、CPU使用率をさらに高める可能性があるため、実行には細心の注意を払う必要があります。debugコマンドを安全に使用するには、次の前提条件を満たす必要があります。

- バッファロギングを除くすべてのロギング宛先を無効にするか、または適切なコマンドを使用して、ロギングの重大度を7（デバッグ）から6（情報）以下に下げる必要があります  logging destination [ severity-level ]  configuration  コマンドが表示されない場合もあります。どのロギング先および対応するレベルが有効になっているかを確認するには、 show logging exec コマンドが表示されない場合もあります。

- 十分な情報をキャプチャするには、ロギングバッファサイズを大きくする必要があります。詳細については、次のドキュメントの説明を参照してください。  logging buffer global configuration  コマンドが表示されない場合もあります。

- デバッグの読み取りと理解を向上させるには、日時とミリ秒のタイムスタンプを有効にする必要があります。詳細については、次のドキュメントの説明を参照してください。 service timestamps global configuration  コマンドが表示されない場合もあります。

『プロセスによって CPU 使用率が高くなる場合のトラブルシューティング』には、IP パケットのデバッグ セッション例が示されています。

特定のプロセスでCPU使用率が高くなる場合のトラブルシューティングについては、次のドキュメントを参照してください。

- ARP入力：ドキュメント『プロセスが原因でCPU使用率が高い場合のトラブルシューティング』の「ARP入力」セクション

- BGPルータ：ドキュメント『トラブルシューティング：BGPスキャナまたはBGPルータプロセスが原因で発生するCPUの高使用』の「BGPルータプロセスが原因のCPU高使用」セクションを参照してください。

- BGPスキャナ：ドキュメント『トラブルシューティング：BGPスキャナまたはBGPルータプロセスが原因で発生するCPUの高使用』の「BGPスキャナが原因のCPU高使用」セクションを参照してください。

- EXEC:EXECおよび仮想EXECプロセスでの高いCPU使用率。

- HyBridge Input:ATMインターフェイスを備えたルータで、HyBridge入力プロセスが原因でCPU使用率が高くなる場合のトラブルシューティング。

- IP Input:IP Inputプロセスが原因でCPU使用率が高い場合のトラブルシューティング。

- IP Simple Network Management Protocol(SNMP):IP Simple Network Management Protocol(SNMP)が原因でCPU使用率が高くなる。

- LC ADJ Updater：『Cisco 12000 シリーズ インターネット ルータの LC 隣接関係更新処理で CPU の使用率が高くなることの原因』

- TCPタイマー：ドキュメント『プロセスが原因でCPU使用率が高い場合のトラブルシューティング』の「TCPタイマー」セクション

- TTYバックグラウンド：ドキュメント『プロセスによってCPU使用率が高い場合のトラブルシューティング』の「TTYバックグラウンド」セクション

- Virtual EXEC（仮想EXEC）:EXECのリンクを参照してください。EXEC および仮想 EXEC プロセスでの CPU 高使用率.

- Vtemplate Backgr：ドキュメント『プロセスが原因でCPU使用率が高い場合のトラブルシューティング』の「仮想テンプレートのバックグラウンド」セクション

- SSHプロセス：SSHプロセスがSSHプロセスをキャプチャすると、 show tech またはデバッグが有効になっている。

- 他のプロセス：ドキュメント『プロセスが原因でCPU使用率が高い場合のトラブルシューティング』の「他のプロセス」セクション

PCI および FAST メモリ プールが非常に高い使用率を示す

PCI およびファースト メモリ プールで空きメモリの低下が見られることは正常です。PCI メモリは、接続されている PCI バスの PRP メインボード上の GT64260 コントローラに対するメモリ アクセスに使用されます。このメモリは、システム コントローラと他の部分の間の内部通信に使用されるため、常に使用率が高いように見えます。

さらに多くのメモリが必要な場合は、プロセッサ プール メモリにフォール バックします。ファースト メモリは、ハードウェアの Interface Descriptor Block（IDB; インターフェイス デスクリプション ブロック）データ構造による使用のために確保された少量のメモリです。このメモリはブートアップ中も完全に予約され、メモリが完全に消費されているために常に高い使用率が示されます。このため、ファースト メモリ プールで空きメモリの低下が見られることは正常です。

%SNMP-4-HIGHCPU：プロセスが[chars] of [chars]の[dec]msしきい値([dec]ms IOS quantum)を超えています – 結果[chars]

CPU ホグ メッセージは次のようになります。

SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms Cisco IOS quantum)

for GET of rmon.19.16.0--result rmon.19.16.0

新しいsyslogメッセージ(HIGHCPU)が12.4(13)でCisco IOSに追加されました。CPU がプロセスにより 200 ミリ秒以上占有されると、HIGHCPU メッセージが報告されます。HIGHCPU メッセージによるルータへの影響はありません。どのプロセスが CPU の高使用率の原因であるのかが示されているだけです。HIGHCPU メッセージは CPUHOG メッセージに似ていますが、HIGHCPU メッセージには大幅に低い許容しきい値が設定されています（CPUHOG メッセージと比較した場合、1/10 の時間（ミリ秒での測定））。2600の12.4(13)より前のバージョンでは、Cisco IOSバージョンにこの拡張機能がないため、プロセスの実行時間は長くなりましたが、メッセージは生成されませんでした。

SNMP PDU プロセス（MIB オブジェクト クエリ）がサポートされ、PDU 内の各オブジェクトがほぼ同時に取得されるように、単一の CPU タイム クアンタムで実行されます。これは SNMP プロトコル標準によって求められる要件です。一部のオブジェクトはシステム内の大量のデータの集約であるため、これらが単一のオブジェクトであったとしても、その実装の方法により大量のプロセスが関与します。MIB の実装ルールで要求されるように CPU が解放されない場合、このエラー メッセージが発生する可能性があります。また、この同じ理由により、いくつかの異なるオブジェクトを同じオブジェクト グループまたはテーブル内でポーリングし、エラー メッセージが表示される場合は異常ではありません。

このメッセージは、予想より多くの CPU 時間を使用するオブジェクトを識別するために使用されます（しかしまだ CPUHOG ではありません）。一部の NMS または実装ツールは、ポーリング時に正常に動作しません。この問題は、Cisco Bug ID CSCsl18139に記述されています。

注：内部ツールとバグ情報にアクセスできるのは、登録されたシスコユーザだけです。

ソフトウェアによる暗号化が原因の高い CPU

デバイスにハードウェア暗号化モジュールがインストールされていない場合は、デバイスを経由するすべての暗号化トラフィックをソフトウェアで暗号化する必要があります。これには CPU を大量に消費します。妥当なスループット要件を持つ暗号化導入では、ソフトウェア暗号化を使用することは推奨されません。この問題を解決する 1 つのオプションは、暗号化されたトラフィックの量を減らす（トラフィックの経路を変更する、または暗号化されたフローを制限する）ことです。ただし、この問題に対処する最善の方法は、このデバイスにハードウェア暗号化モジュールを取り付けて、ソフトウェアを使用して暗号化を行う必要性をなくすことです。

注：トンネル/物理インターフェイスでクリプトマップを有効にすると、メモリ消費プロセスが発生し、CPUの増加を引き起こす可能性があります。

フラグメンテーションが原因の高い CPU 使用率

CPU が多数のパケットを再構成する必要がある場合、リアセンブリによって CPU が非常に高くなる可能性があります。

フラグメンテーションが原因でCPU使用率が高くなる問題のトラブルシューティングを行うには、ルータを通過するTCP同期/開始(SYN)パケットの最大セグメントサイズ(MSS)値を設定するインターフェイス上で、tcp mss-adjust 1400コマンドを発行します。

詳細情報を取得するためのコマンド

次のコマンドを使用することで、問題に関するより多くの情報を得ることができます。

- show processes cpu

- show interfaces

- show interfaces switching

- show interfaces stat

- show ip nat translations

- show align

- show version

- show log

showコマンドの詳細については、『Cisco IOS設定の基本コマンドリファレンス』を参照してください。

ルータがまったくアクセス不能になった場合は、まず、ルータの電源を一旦オフにしてから再度オンにします。次に、このセクションのコマンドの出力を定期的に収集します。ただし、  show log  コマンドを使用して、syslogサーバにメッセージを記録する必要があります。出力を収集する間隔は5分である必要があります。このUNIXシェルスクリプトを使用して、データを手動または自動で収集できます。HTTPまたはSNMPを使用してデータを収集することもできます。

「 show processes cpu  コマンド

次に示すのは、 show processes cpu  コマンドが表示されない場合もあります。

CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W%

PID  Runtime(ms)  Invoked  uSecs    5Sec   1Min   5Min TTY Process

次の表に、ヘッダー内のフィールドの説明を示します。

フィールド

説明

X

最後の 5 秒間の合計使用率の平均（割り込みとプロセス）

Y

過去 5 秒間の割り込みによる平均使用率 1

Z

過去 1 分間の平均合計使用率 2

W

過去 5 分間の平均合計使用率 2

PID

プロセス ID

Runtime

プロセスが使用した CPU 時間（ミリ秒）

Invoked

プロセスがコールされた回数

uSecs

各呼び出しの CPU 時間のマイクロ秒

5Sec

最後の 5 秒間のタスクによる CPU 利用率

1Min

過去 1 分間のタスクによる CPU 使用率 2

5Min

過去 5 分間のタスクによる CPU 使用率 2

TTY

プロセスを制御する端末

プロセス

プロセスの名前

1 プロセス レベルの CPU 使用率 = X - Y

2 値は算術平均を表すものではなく、指数関数的に減衰した平均です。そのため、新しい値ほど、算出される平均に大きな影響を与えます。

詳細については、『showコマンドリファレンスガイド』を参照してください。

注：合計CPU使用率は、より多くのパケットをスイッチングするルータの機能の指標として使用しないでください。Cisco 7500 ルータでは、Versatile Interface Processor（VIP）と Route/Switch Processor（RSP; ルート スイッチ プロセッサ）は CPU 使用率を線形ではレポートしません。秒当たりのパケット交換能力の半数近くは、CPU 使用率が 90～95% になった後に処理されます。

「 show interfaces コマンド

このコマンドは、アクティブなインターフェイスを判別するために使用されます。

「 show interfaces switching  コマンド

このコマンドは、インターフェイス上のアクティブなスイッチングパスを判別するために使用されます。

次に、このドキュメントの  show interfaces switching  1つのインターフェイスに対するコマンド：

RouterA#show interfaces switching

Ethernet0

Throttle count          0

Drops         RP          0         SP          0

SPD Flushes       Fast          0        SSE          0

SPD Aggress       Fast          0

SPD Priority     Inputs          0      Drops          0

Protocol       Path    Pkts In   Chars In   Pkts Out  Chars Out

Other    Process          0          0        595      35700

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

IP    Process          4        456          4        456

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

IPX    Process          0          0          2        120

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

Trans. Bridge    Process          0          0          0          0

Cache misses          0

Fast         11        660          0          0

Auton/SSE          0          0          0          0

DEC MOP    Process          0          0         10        770

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

ARP    Process          1         60          2        120

Cache misses          0

Fast          0          0          0          0

Auton/SSE          0          0          0          0

CDP    Process        200      63700        100      31183

Cache misses          0

Fast          0          0          0         0

Auton/SSE          0          0          0          0

この出力には、インターフェイスに設定されているすべてのプロトコルのスイッチングパスがリストされるため、ルータを通過するトラフィックの種類と量を簡単に確認できます。出力フィールドの説明を次の表に示します。

フィールド

定義

プロセス

処理されたパケット。これらはルータ宛てのパケット、またはファースト スイッチング キャッシュ内にエントリがなかったパケットです。

Cache misses

ファースト スイッチング キャッシュ内にエントリがなかったパケット。この宛先（またはフロー）の最初のパケットは、設定されているファーストスイッチングのタイプに応じて処理されます。発信インターフェイスでファーストスイッチングが明示的に無効にされていない限り、後続のパケットはすべてファーストスイッチングされます。

Fast

ファースト スイッチングで交換されたパケット。ファースト スイッチングはデフォルトで有効になっています。

Auton/SSE

自律スイッチング、シリコン スイッチング、または分散スイッチングによって交換されたパケット。スイッチ プロセッサまたはシリコン スイッチ プロセッサ（それぞれ、自律スイッチングまたはシリコン スイッチング用）を備えた Cisco 7000 シリーズ ルータ、または VIP（分散スイッチング用）を備えた Cisco 7500 シリーズ ルータでのみ利用可能です。

「  show interfaces stat  コマンド

このコマンドは、 show interfaces switching  コマンドが表示されない場合もあります。インターフェイスが 1 つの場合の出力例を次に示します。

RouterA#show interfaces stat

Ethernet0

Switching path    Pkts In   Chars In   Pkts Out  Chars Out

Processor      52077   12245489      24646    3170041

Route cache          0          0          0          0

Distributed cache          0          0          0          0

Total      52077   12245489      24646    3170041

show interfaces stat  コマンドはプラットフォームによって異なり、使用可能なスイッチングパスと設定されたスイッチングパスによって異なります。

「  show ip nat translations  コマンド

「 show ip nat translations  コマンドは、ルータでアクティブなネットワークアドレス変換(NAT)変換を表示します。アクティブな変換は、それぞれ CPU 割り込みを生成し、ルータの CPU 使用率の合計に影響を与えます。非常に多数の変換が行われると、ルータのパフォーマンスに影響があります。

次に示すのは、  show ip nat translations  コマンドにより、WLC CLI で明確に示されます。

router#show ip nat translations

Pro Inside global    Inside local    Outside local    Outside global

--- 172.16.131.1     10.10.10.1      ---              ---

「  show align  コマンド

このコマンドは、Reduced Instruction Set Computing（RISC）プロセッサベースのプラットフォームでのみ使用できます。これらのプラットフォームでは、CPUはメモリの読み取りまたは書き込みが一致しない場合に修正できます。次に、出力例を示します。

Alignment data for:

4500 Software (C4500-DS40-M), Version mis-aligned RELEASE SOFTWARE (fc1)

Compiled Tue 31-Mar-98 15:05 by jdoe

Total Corrections 33911, Recorded 2, Reads 33911, Writes 0

Initial Initial

Address Count Access Type Traceback

40025F4D 15561 16bit read 0x606F4A7C 0x601C78F8 0x6012FE94 0x600102C0

40025F72 18350 32bit read 0x606FB260 0x6013113C 0x600102C0 0x60010988

「  show version  コマンド

高いCPU使用率の問題を追跡するために、コマンド出力から取得する重要な情報は、Cisco IOSソフトウェアのバージョン、プラットフォーム、CPUタイプ、およびルータの稼働時間です。このコマンドの詳細な説明については、コマンドリファレンスを参照してください。

「  show log  コマンド

このコマンドは、バッファに格納されているログ メッセージの内容を表示します。

CPU使用率が高い状態での自動データ収集用のEEMスクリプト

Embedded Event Managerを使用すると、CPU使用率が高い状態が発生した場合にデータを自動的に収集できます。  EEMは、プロセス使用率のSNMP OIDを監視するか、CPU thresholdコマンドの出力のsyslogメッセージを監視することによってトリガーされます。EEMスクリプトを使用して各種のshowコマンドを実行し、出力をファイルシステムに保存できます。

SNMP OIDを使用したEEMスクリプトの例

このスクリプトは、プロセス使用率が約85 %増加したときに実行されます。

詳細については、『SNMPを使用したCisco IOSデバイスのCPU使用率の収集方法』を参照してください。

event manager applet high-cpu

!

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3 get-type next entry-op gt entry-val 85 poll-interval 5 exit-time 500 maxrun 600

!

action 0.1 cli command "enable"

action 0.2 syslog msg "TAC - Capturing high cpu information to flash:"

action 0.3 cli command "term length 0"

action 1.1 cli command "show process cpu sorted | redirect flash:eem-cpu1.txt"

action 1.2 cli command "show interface | redirect flash:eem-interface1.txt"

action 1.3 cli command "show interface stats | redirect flash:eem-stat1.txt"

action 1.4 cli command "show ip traffic | redirect flash:eem-traffic1.txt"

action 4.1 syslog msg "TAC - Finished logging information to separate eem files in flash"

action 9.4 cli command "end"

action 9.5 cli command "term default length"

!

!

end

CPUしきい値通知メッセージを含むEEMスクリプトの例

EEMとCPU threshold notificationsコマンドを組み合わせて使用すると、EEMスクリプトをトリガーできます。この例では、使用率が5秒間に85 %を超えて上昇すると、CPURISHINGTHRESHOLD syslogメッセージが生成されます。  EEMスクリプトはsyslogメッセージをトリガーし、ファイルシステム上のファイルに保存されるコマンドのリストを実行できます。

process cpu threshold type total rising 85 interval 5

!

event manager applet high-cpu

event syslog pattern "CPURISINGTHRESHOLD"

action 0.1 syslog msg "EEM: HIGH CPU detected. Writing info to flash:eem-log.txt"

action 0.2 cli command "enable"

action 0.3 cli command "term exec prompt timestamp"

action 0.4 cli command "term len 0"

action 1.1 cli command "show process cpu sorted | append flash:eem-log.txt"

action 1.2 cli command "show proc mem sorted | append flash:eem-log.txt"

action 1.3 cli command "show mem alloc total | append flash:eem-log.txt"

action 2.2 syslog msg "EEM: Self-removing applet from configuration..."

action 2.5 cli command "end"

!

end

CPUプロファイルを開始/停止するEEMスクリプトの例

EEMは、CPUプロファイリングの開始/停止、およびさまざまなshowコマンドからのログデータに使用されます。詳細は、『割り込みによってCPU使用率が高くなる場合のトラブルシューティング』を参照してください。

event manager applet High_CPU

event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.4.1 get-type exact entry-op ge entry-val "75" exit-time 10 poll-interval 5

action 0.1 syslog msg "CPU Utilization is high"

action 0.2 cli command "enable"

action 0.4 cli command "show version | append flash:CPU_Profile.txt"

action 0.4 cli command "show log | append flash:CPU_Profile.txt"

action 0.5 cli command "show process cpu sorted | append flash:CPU_Profile.txt"

action 0.6 cli command "show interfaces | append flash:CPU_Profile.txt"

action 0.7 cli command "show region | append flash:CPU_Profile.txt"

action 1.2 cli command "profile 4000F000 42C9FFFF 4"

action 1.3 cli command "profile start"

action 2.3 syslog msg "Entering TCLSH"

action 2.4 cli command "tclsh"

action 2.5 cli command "after 240000"

action 2.6 cli command "exit"

action 2.9 syslog msg "Exiting TCLSH"

action 3.0 cli command "profile stop"

action 3.1 cli command "show profile terse | append flash:CPU_Profile.txt"

action 3.2 cli command "clear profile"

action 3.3 cli command "unprofile all"

action 4.1 syslog msg "Finished logging information to flash:CPU_Profile.txt..."

action 4.2 cli command "end"

定期的なデータ収集のためのUNIXシェルスクリプト

この付録では、ルータから定期的にデータをキャプチャする簡単なスクリプトについて説明します。このスクリプトの最も重要な部分は次の行です。

(echo "show version") | telnet 192.168.1.1

カッコ内のコマンドがサブシェルで実行され、その出力が Telnet セッションに送られます。次に示すのは、Cisco IOSソフトウェアリリース12.2T以降の  show version  と  show processes cpu  コマンド：

#!/opt/local/bin/bash

###########################################

# Router's IP address

#

IP_ADDRESS='10.200.40.53'

# Directory where the log files can be stored

#

DIR=/var/log/router

########################################

if [ ! -e $DIR ]

then

mkdir $DIR

fi

# Tag specification: mmddhhmm

DATE=`date +'%m%d'`

TIME=`date +'%H%M'`

TAG=$DATE$TIME

# Collect data from the router

(echo "foo";\

echo "bar";\

echo "term len 0";\

echo "show version";\

echo "show processes cpu";\

echo "term len 15";\

echo "show memory summary";\

echo "q";\

sleep 30)|telnet $IP_ADDRESS > $DIR/info.$TAG 2>$DIR/info.$TAG.msg

注：このスクリプトでは、パスワードを含むすべてのデータがクリアテキスト形式で送信されます。

最初のセクションでは、IP アドレスと、ログ ファイルの保存先ディレクトリを指定する必要があります。2 番目のセクションには、ルータに実際に送信するコマンドを記述します。最初の行はユーザ名、次の行はパスワードです。特定のコマンドの出力の最初の行だけをキャプチャする場合も含まれます。プロンプトを介して、端末の長さを短めに設定し（このケースでは 15）、「q」文字を送信しています。

データが定期的に収集される場合は、  show version  問題が周期的な性質を持つかどうかを示します。たとえば、問題が常に特定の時刻または特定の曜日に発生するかなどです。さらに多くのコマンドの出力を収集する場合は、上記の例と同じ方法でそれらのコマンドをスクリプトに追加します。ファイルに送信する出力を切り捨てる場合は、最初にカッコ内に sleep コマンドを指定して、スリープ時間を長くします。

CPU 高使用率の問題がたびたび発生するにもかかわらず、短時間で終結する場合は、このスクリプトを 5 分間隔で実行します。そうでない場合は、15 分または 30 分間隔で実行します。簡単に使用するために、このスクリプトを /usr/bin/router-script などのファイルとして保存しておきます。次に、5分ごとに実行するには、/etc/crontabファイルに次の行を追加します。

*/5       *       *       *       *       /usr/bin/router-script

cron サーバを再起動します。/etc/crontab ファイルを変更する権限がない場合は、次のように別のプロセスでスクリプトを実行します。

while [ 1 ]; do ./router-script ; sleep 300; done &

関連情報

- Catalyst 2900XL/3500XL スイッチでの CPU の高使用率

- パフォーマンス調整の基本

- シスコテクニカルサポートおよびダウンロード