ASA: Crash原因の調査方法

ドキュメント

2016/10/10 - 06:36
8月 15th, 2016
User Badges:
  • Cisco Employee,

    
   

クラッシュとは

クラッシュとは、OSやアプリケーションの異常終了のことです。 システムで異常が発生時に、(機器が操作不能になる事を避けるためにも、)システムを強制的にリセットする事で復旧を試みます。 このソフトウェアによる異常終了の際に、ASAはCrashinfoの生成を試みます。 生成されたCrashinfo内には クラッシュ直前のプロセスやメモリ情報などが保存されており、show crashinfoコマンドで生成結果を確認できます。

Crashinfo内の出力の多くは、解析にデコードが必要であり、詳細調査はCisco社内のエンジニアしかできません。

しかし、お客様サイドでも以下の情報の収集と、一定以上の調査が可能です。

    • CLI Analyzerの ASA Traceback Analyzer機能を用いた分析 (フリーツール)
    • Crashinfo内のThread Nameや 発生時間、Version情報
    • 外部Syslogからの発生直前のログの確認
    • クラッシュ発生時の、特定通信や特定操作の有無の確認

     
本ドキュメントでは、クラッシュが発生時の、お客様サイドで可能な調査方法について紹介します。

      

     

クラッシュ解析チャート (お客様用)

高解像度版は添付ファイルを参照してください。

asa-crashinfo-chart.jpg

      

      

Crashinfoの見方

show crashinfoコマンドで生成有無を確認でき、以下は実際のCrashinfo出力例です。 多くの情報は秘匿されていますが、一部の情報は お客様サイドでの調査に用いることが可能です。

asa-crashinfo-thread.jpg

      

      

電源トラブル有無の確認

よくあるケースに、電源障害によるASA再起動を、ソフトウェアクラッシュと勘違いしているケースがあります。 

この切り分けには、「show crashinfoの出力が確認できるか」、もしくは 「Crashがいつ発生したか」を確認してください。 Crashinfoの生成された時間は Crashinfo内の"Crashinfo collected on xx:xx:xx.."より確認でき、その機器のuptimeはshow versionより確認できます。 Crashinfo生成時刻と ASA起動時間がマッチしない場合、そのCrashinfo生成は更に過去に生成されたもの(=過去の別障害)であると言えます。

   
電源トラブルの調査のためには、例えば以下を確認します。

    • 再起動当時、ASAの接続する電源タップを利用する"別"機器でも同様に再起動が発生していないか
    • ラックにASAを設置している場合、そのラック内の他機器でも停止が起きていないか
    • ASAの電源ケーブル差し込みが緩くなってないか、過度に引っ張られていないか
    • 当時、落雷や停電などによる電力供給異常が発生した可能性はないか
    • UPSを利用時は供給状況を確認  など

   
状況に応じ、電源ケーブルの再度 置くまで挿し直しや、電源供給元の変更を行ってください。 電源ケーブルや供給元を変更しても再発する場合は、ASA筐体の電源不良も疑います。

なお、ソフトウェアクラッシュの場合でも、何らかの理由でCrashinfoの生成に至れないケースが"稀"にあります。 Crashinfo生成を試みるが、途中で異常終了や、Flash書き込みに失敗するケースです。 その為、Crashinfoの生成が無いといって、電源トラブルであったとは断言できません。 Crashinfoの生成が最後までできなかったかの調査は、ASAにコンソール接続した状態で再現させ、クラッシュ発生時のコンソールでの異常検知出力の有無の確認や 生成失敗エラーの確認が、重要な手掛かりとなります。

         

            

ASA Traceback Analyzer機能によるクラッシュ解析

Cisco CLI Analyzerの ASA Traceback Analyzer機能を利用することで、生成されたCrashinfoの解析、及び、既知不具合がある場合、明らかにマッチした不具合情報を出力します。 当ツールの利用は フリーです。

ASA Traceback Analyzer機能の利用方法について詳しくは、以下ドキュメントを参照してください。

ASA CLI アナライザ - クイックスタート ガイド
https://supportforums.cisco.com/ja/document/12880216#ASA_Traceback_Analyzer_

      

        

Thread Nameや発生条件と、Versionからの既知不具合調査

ASA Traceback Analyzerで既知不具合を確認できなかった場合、明確に一致する不具合がなかった可能性があります。 例えば、同じ不具合でも利用状況により、微妙に出力内容が異なり、ツールでは判別が利かない事があります。 

  
お客様サイドでの既知不具合有無の調査には、以下情報などを利用できます。

    • Thread Name (問題の発生した処理名)
    • 発生バージョンや Hardware 
    • 発生条件 (特定通信、特定操作、メモリ高負荷 etc)

    
修正済みの既知不具合の一括確認には、Release Notesの参照が便利です。 つまり、既知不具合に該当の調査は、現在利用のより新しいバージョンで修正された不具合を確認します。

ASA 5500-X Series Firewalls Release Notes
 - 主にメンテナンスバージョン毎の不具合一覧
 - 各トレインのリリースノートの"Open and Resolved Bugs"を参照
http://www.cisco.com/c/en/us/support/security/asa-5500-series-next-generation-firewalls/products-release-notes-list.html

Interim Release Notes
 - Interimバージョン毎の不具合一覧
 - Download Softwareの Interim Releaseダウンロードページの右上"Release Notes for x.x.x Interim"を参照
https://software.cisco.com/download/navigator.html

     
以下は ASA Version 9.1(7)のInterim Release Notesの抜粋ですが、"Traceback"や "Thread"の文字列を含むタイトルを確認します。 どのThreadがクラッシュした不具合か、どのような条件で発生するか、簡易確認ができます。 詳細情報を確認するには、不具合管理IDをクリックし、Bug Search上の情報を確認します。

asa-crashinfo-release-notes.jpg

     
よくみるThread Nameの1つに、DATAPATHがあげられます。 DATAPATHは ACLやNAT制御などFirewallとしてベーシックな処理を担当し、「DATAPATH-X-YYYY」の書式で表示されます。 XはCPUコアを示し、YYYYの値は変動します。 主要プロセス情報について詳しくは、ASA: show processes cpu-usage を用いた CPU負荷の調査 を参照してください。

     
また、クラッシュの発生条件の情報は、非常に重要です。 発生条件が判れば、その条件を満たさないよう暫定対策も取りやすくなります。

例えば以下は、発生条件の絞り込み例です。

  • クラッシュ直前の外部Syslogを確認
        →クラッシュ直前の通信や操作、エラーログの有無を確認
  • クラッシュ直前のASAの操作有無の確認
        →特定コマンド実行時のクラッシュIssueなど
  • 発生する時間帯の確認
        →ランダムで発生するか、日中帯の特定時間のみ発生するか
           特定時間のみ発生が頻発する場合、その時間帯の通信や操作を確認
  • 発生しだした日時の確認
        →発生前後で、設定やネットワーク構成を変えたか
            新しいアプリケーションの利用を開始したか
  • メモリが枯渇してないか、CPUや特定プロセスの負荷が高くないか
        →show memoryや show cpu detail、show processes cpu-usage non-zero コマンドで確認
  • 筐体の異常な発熱はないか     など

   
上記情報を収集後、Thread Nameや 発生条件で、Release Notesなどから既知不具合を検索・調査し、利用中のトレインの最新バージョンで既知不具合が修正されていないか確認します。

また、2016年現在、各Release Notesや Bug Searchの一部情報はGoogleから検索できます。例えば、ASAバージョン 8.2(4)で Thread Name: snmpで クラッシュした場合は、Googleで「Thread snmp ASA 8.2」などと検索すると有効です。

    

      

既知不具合が見つかった場合の対応

Bug Searchでは、各不具合管理IDの以下の情報を確認できます。

    • Symptom(症状)
    • Condition(発生条件)
    • Workaround(回避策)
    • 最初に問題発生を確認したバージョン
    • 修正バージョン     など

    
修正を得るためのアップグレード先は 利用中トレインの最新バージョンを検討してください。 不具合修正は各トレインの最新バージョンに適用されるため、他不具合修正を含めた、最も修正が進んだソフトウェアを利用するためです。 これは、システムの予防保全上も役立ちます。

しかし、何らかの事情で即座にアップグレードできない場合は、Workaroundの暫定適用を検討します。 Workaroundを適用できるかはお客様の機能利用方法などにも左右されるため、実行できる現実的な対応か確認してください。

    
アップグレード方法について詳しくは以下ドキュメントも参照してください。

ASA: ASDMを用いた、同じトレイン内の 最新バージョンへのアップグレード方法
https://supportforums.cisco.com/ja/document/12327751

     

      

既知不具合が見つからなかった場合の対応

特に古いバージョンを利用中の場合は、利用中トレインの最新バージョンへのアップグレードを検討してください。 他不具合修正により間接的に修正されているケースもあるためです。 また、アップグレードは、システムの予防保全にも役立ちます。

バージョンアップ後に再発性が無くなった場合は、何らかの過去不具合修正により解決したと考えることができます。

バージョンアップ後も再発する場合は、新規ソフトウェア不具合の可能性が高くなります。 原因究明には詳細調査が必要です。 調査に利用したログや、想定のトリガー、Crashinfo、Coredump(取得手順はコチラ)、show techの情報を収集し、CiscoTACにお問い合わせを検討ください。 合わせ、再現手順も確立頂けると、解決が大変早くなります。

  

   

参考情報

ファイアウォール トラブルシューティング
https://supportforums.cisco.com/ja/document/12725841

Loading.

アクション

このドキュメントについて