こんにちは、VMware グローバルサポート Newsletter vSAN チームの曽田です。
以前、「vSAN ホストが「応答なし」になった場合の対応について」にて対処方法のご案内をいたしましたが、今回はホストが「応答なし」の状態でログを収集する方法についてご案内いたします。
VMware vSAN ホストが「応答なし」の状態では、VMware vCenter からログ取得のリクエストを受け付けられないため、ホスト上で直接ログを収集することになります。
また、「応答なし」の状態にあることから、vCenter と接続している hostd に問題が発生している場合があり、多くの場合はストレージに問題を抱えている状況下にあります。
このため、hostd やストレージの応答を待つようなコマンドを極力避け、取得するログを限定する必要があります。
サポートへお問い合わせ頂いた際は、取得するログを限定して収集するスクリプト (vsanLogCollect.sh) を使っており、このスクリプトを使用したログ収集方法についてご案内いたします。
※スクリプト自身はサポートリクエストのなかでエンジニアより提供しております。
※不定期にスクリプトの修正が入るため、都度最新のものをご案内しているため、ブログから共有が出来ない点、何卒ご了承ください。
1. 事前準備
サポートエンジニアから提供されたスクリプトファイルを該当ホストに転送します。
ssh が可能な状況であれば scp でファイルを転送するか、他のホストからデータストアブラウザなどを利用して、共有データストア上からスクリプトを利用します。
2. ログ取得
スクリプトは shell スクリプトになっているため、#sh vsanLogCollect.sh でログを収集します。
実行時のログを一部抜粋いたします。
# sh vsanLogCollect.sh Creating ramdisk at /tmp/vsanLogs ...Collecting logs to "/tmp/vsanLogs/日付" Collecting logs from /var/run/log ... ...中略 Zipping all collected information ... Logs collected. File: "/tmp/vsanLogs/ホスト名.uuid.日付.vsanLogs.tgz"Collection complete.The file "/tmp/vsanLogs/ホスト名.uuid.日付.vsanLogs.tgz" can be copied via SCP for upload. |
各種ログを取得するコマンドが順次実行され、数分程度で収集は完了します。
コマンド完了後、/tmp/vsanLogs/ 配下の 「ホスト名...tgz」ファイルが作成されているため、こちらをお送り頂きます。
3. ファイル取得後の一時領域開放
# vsanLogCollect.sh 実行時の最終行より The ramdisk can be destroyed by running "localcli system visorfs ramdisk remove -t /tmp/vsanLogs/"# localcli system visorfs ramdisk remove -t /tmp/vsanLogs/ |
4. ログの個別取得
スクリプトはサポートリクエストの中で共有しておりますが、実際に取得しているコマンドをいくつか記載します。
個別で逐次取得する場合に参考ください。
# /tmp/vsanLogs を ramdisk として確保します。
localcli system visorfs ramdisk add -m 256 -M 4096 -n vsanLogs -t /tmp/vsanLogs -p 0700
# 取得環境を準備します。 runTime=$(date +"%Y-%m-%dT%H:%M:%S")
runPath="/tmp/vsanLogs/$runTime" # 各種コマンド結果の書き出しやファイルをコピーします。 cp -r /etc/vmware/vsan/* "$runPath"/etc/vmware/vsan/ cp -r /var/log/vsantraces/vsant* "$runPath"/var/log/vsantraces > /dev/null vmware -vl > "$runPath"/commands/vmware_-vl.txt python /usr/lib/vmware/vsan/bin/vsan-health-status.pyc > "$runPath"/commands/python_usrlibvmwarevsanbinvsan-health-statuspyc.txt /sbin/localcli vsan cluster get > "$runPath"/commands/localcli_vsan-cluster-get.txt # 取得後のファイルを圧縮しています。 # /tmp/vsanLogs 配下に取得されたファイル名を表示しています。 # ファイル収集後に /tmp/vsanLogs を開放します。 # /tmp/vsanLogs が開放された事を確認します。 Ramdisk Name System Include in Coredumps Reserved Maximum Used Peak Used Free Reserved Free Maximum Inodes Allocated Inodes Used Inodes Mount Point /tmp/vsanLogs の表示がなければ開放されています |
5. おわりに
障害発生時にログバンドルが取得出来ない状況下でのログ収集方法をご案内いたしました。
状況に応じて追加で必要となるログはございますが、事象発生時の記録をできる限り残しておくという点では vsanLogCollect.sh で収集されるログは有用ですので、ぜひ活用いただきたいと存じます。