資料採取スクリプトを実行することにより、トラブル原因を調査するための資料を採取することができます。
注意
資料採取スクリプトは、処理内で採取コマンドを実行しており、資料採取対象のサーバーにtracerouteとpsmiscのrpmパッケージが必要となるコマンドがあります。
インストールされていない場合は、スクリプト実行前にインストールしてください。またご利用いただいている環境によっては、資料採取で使用される他のコマンドについても、事前にインストールが必要な場合があります。
資料採取スクリプトで使用しているコマンドについては、以下のファイルを参照してください。
FJCS仕様の場合:Automation Managerコンテナ内の/data/playbook/roles/collect_info/Readme.md
マルチクラウド仕様の場合: Kubernetes masterサーバー内の/var/FJSGHD/playbook/roles/collect_info/Readme.md
資料採取スクリプトはご利用いただいている構成によって、実行するサーバー・コマンドが異なります。
マルチクラウド仕様の場合
本製品をインストールした際のユーザーでKubernetes masterサーバーにログインし、以下のコマンドを実行してください。
$ ansible-playbook -i /var/FJSGHD/inventories/hosts /var/FJSGHD/playbook/collectinfo.yml [-e outputpath=**] [--skip-tags check]
FJCS仕様の場合
FJCS仕様の資料採取スクリプトでは、CI ManagementとNFSサーバーは資料採取の対象外です。
AnsibleサーバーのAutomation Managerコンテナにログインし、以下のコマンドを管理者権限で実行してください。
<環境識別子>には、本製品インストール時に環境を一意に識別するために指定した任意の文字列を指定します。
# cd /data/playbook # ansible-playbook -i ./inventories/<環境識別子>/hosts /data/playbook/collectinfo_fjcs.yml [-e outputpath=**] [--skip-tags check]
outputpathオプションに出力先ディレクトリを指定することで任意の場所に採取資料を格納できます。格納先には存在しているディレクトリを指定してください。指定しない場合、/var/FJSGHDが設定されます。
"--skip-tags check"をつけることで正常性確認(後述)を行わずに資料採取を行うことができます。
資料採取処理で収集できない資料があった場合エラーが出力されますが、収集処理は継続します。(資料採取スクリプトを実行しているサーバーの容量が不足してエラーになった場合を除く)
収集がエラーとなったものについては、<出力先ディレクトリ>/collectinfo/<スクリプト実行日時>/skip_list.txtに記載されています。
インストールしていないコンポーネントがある場合や、サーバーに接続できない場合、採取対象サーバーの空き容量が不足している場合などにエラーとなります。
資料採取スクリプトは処理ごとに以下のように進捗を表示します。処理タスク数がX/XXのように表示され、おおよその現在の進捗を把握することができます。
ok: [127.0.0.1] => { "msg": "*****TASK X/10*****" }
各処理に要する時間は、ご利用状況に応じて時間が変動します。各処理は最大3分でタイムアウトするため、3分以上処理が進まない場合、資料採取スクリプトがハングアップしている可能性があります。実行を停止し、再実行してください。
資料採取スクリプトの実行結果は以下のように表示されます。
********************************************************************* 127.0.0.1 : ok=XX changed=YY unreachable=AA failed=BB ignored=CC
正常終了時はfailedのBBが0となります。異常終了時はfailedのBBが0以外の数字となります。
SSH接続ができないサーバーがあった場合はunreachableのAAが0以外の数字となります。
採取中にエラーとなったタスクがあった場合ignoredのCCが0以外の数字となります。
ただし、XX、YYには数字が記載されています。
資料採取スクリプトは、資料を採取する前に、サーバーへの接続性チェック、コンテナランタイムの動作チェック、Kubernetes nodeの状態チェックを行います。
チェックでNGとなったサーバーや項目に関する資料は採取されず、スキップされます。
サーバーへの接続性チェック
結果はスクリプト実行中に以下のように表示されます。UNREACHABLEと表示されたサーバーへは接続できていないことを示しています。内容を確認し、資料採取を続ける場合はy、nで中断します。
TASK[SSH connection result] ************************************************************* fatal: [172.20.0.4]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.20.0.4 port 22: No route to host", "skip_reason": "Host 172.20.0.4 is unreachable", "unreachable": true} ok: [172.20.0.11] ok: [172.20.0.40] TASK[Please confirm]***************************************************************************** [Please confirm] ============================================================== Check task SSH connection result. If the result is not 'ok', the server cannot be connected. Are you sure to continue? (y/n) ==============================================================
コンテナランタイムの動作チェック
結果はスクリプト実行中に以下のように表示されます。msgにactiveと表示されているものが正常であり、それ以外の表示があるサーバーについてはコンテナランタイムが正常に動作していません。内容を確認し、資料採取を続ける場合はy、nで中断します。
TASK [docker_status result] ************************************************************************ ok: [172.20.0.11] => { "msg": [ "active" ] } fatal: [172.20.0.4]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'stdout_lines'\n\nThe error appears to be in '/data/playbook/test.yml': line 30, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n register: docker_status\n - name: 'docker result'\n ^ here\n"} ...ignoring TASK[Please confirm]***************************************************************************** [Please confirm] ============================================================== Check task container runtime result. If the result is not 'active', container runtime does not work. Are you sure to continue? (y/n) ==============================================================
Kubernetes nodeの状態チェック
結果はスクリプト実行中に以下のように表示され、STATUSにReadyと表示されているものが正常であり、それ以外の表示があるサーバーについては正常にKubernetesが動作していません。内容を確認し、資料採取を続ける場合はy、nで中断します。
TASK [Show kubectl get node result] **************************************************** ok: [172.20.0.11] => { "msg": [ "NAME STATUS ROLES AGE VERSION", "sxdv01 Ready <none> 181d v1.14.2", "sxdv02 NotReady <none> 181d v1.14.2", "sxk8s01 Ready master 181d v1.14.2" ] } TASK [Please confirm] ******************************************************************** [Please confirm] ============================================================== Check task Show kubectl get node result. If the STATUS is not‘Ready’, the server does not work correctly. Are you sure to continue? (y/n) ==============================================================
採取した資料は、資料採取スクリプトを実行したサーバーの<出力先ディレクトリ>/collectinfo/<スクリプト実行日時>に保存されます。(出力先ディレクトリはoutputpathオプションで指定)
採取した情報を参照することで、各種プロセスなどが起動しているか、設定が仕様通りかなどを確認することができます。
詳細は3.2 採取した調査資料から正常性を確認するを参照してください。
その他の採取した資料の概要は<出力先ディレクトリ>/collectinfo/<スクリプト実行日時>/Readme.mdに記載されています
トラブル発生時に本製品サポートにご連絡の際は、資料採取スクリプトにより採取された資料を、発生した事象の内容とともに送付してください。
サポートに送付したくない情報がある場合は、採取した資料について記載されている<出力先ディレクトリ>/collectinfo/<スクリプト実行日時>/Readme.mdを参照し、削除してから送付してください。
取り除いた資料によっては、サポートによる調査に時間を要する場合があります。
採取した資料は自動では削除されないため、適宜削除を実施してください。