Anthos Service Mesh ログの収集

以降のセクションでは、問題のトラブルシューティングや Google サポートへの連絡のために、さまざまな Anthos Service Mesh ログを収集する方法について説明します。

バグ報告ツールを使用してログを収集する

Anthos Service Mesh には、関連する診断ログを収集し、収集したログを Google サポート チケットに関連付けことができる、自動化されたバグ報告ツールが用意されています。

開始する前に、kubeconfig コンテキストがターゲット クラスタに設定されていることを確認します。

  1. 次のコマンドを使用してコンテキストを確認します。

    kubectl config current-context
  2. バグ報告ツールをダウンロードして使用する手順は、使用している Anthos Service Mesh のバージョンによって異なります。現在のバージョンの istioctl で十分か、スタンドアロンのツールをダウンロードする必要があるかを判断するには、次の表をご覧ください。

Anthos Service Mesh と Istio のバージョン バグ報告ツール
Anthos Service Mesh 1.7.* 以降 istioctl bug-report
Anthos Service Mesh 1.6.* スタンドアロン
Anthos Service Mesh 1.5.* スタンドアロン
Istio 1.7.* スタンドアロン
Istio 1.6.* スタンドアロン
Istio 1.5.* スタンドアロン

バグ報告ツールのスタンドアロン バージョンのダウンロード手順は次のとおりです。

  1. 使用している OS 環境に一致するディストリビューションをリストから選択します。

    • https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v2
    • https://storage.googleapis.com/gke-release/asm/bug-report_linux_386-v2
    • https://storage.googleapis.com/gke-release/asm/bug-report_linux_amd64-v2
    • https://storage.googleapis.com/gke-release/asm/bug-report_linux_arm-v2
  2. curl を使用して、選択したディストリビューションをダウンロードします。次に例を示します。

    curl -LO https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v1
  3. バグ報告ツールのバイナリに権限を設定して、実行を許可します。次に例を示します。

    chmod +x bug-report_darwin_amd64-v1

ログの収集を開始する

ログ収集を開始するには、バグ報告ツールを実行し、構成ファイルをパラメータとして渡します。必要に応じて構成を上書きするための追加のランタイム オプションを使用できます。これは --help オプションを使用して表示できます。

Anthos Service Mesh のバージョンの istioctl にバグ報告ツールがすでに含まれている場合は、次のコマンドを使用します。

istioctl bug-report

スタンドアロンのバグ報告ツールが必要な場合は、ツールの名前を変更して実行します。次のコマンドでは、Darwin ディストリビューションを使用しています。

mv ./bug-report_darwin_amd64-v1 ./bug-report
./bug-report

デバッグ アーカイブをアップロードする

デバッグ ログ アーカイブをバグ報告ツールの作業ディレクトリに配置します。アーカイブを展開し、トラブルシューティング ガイドに沿ってトラブルシューティングを行うことができます。ただし、サポート パッケージをお持ちの場合は、Google Cloud サポートにお問い合わせください。ログアーカイブを安全にアップロードするための手順をお知らせします。

Anthos Service Mesh ログを手動で収集する

このセクションでは、Anthos Service Mesh バグ報告ツールを使用する代わりに、関連するすべてのログを手動で収集する方法について説明します。

Envoy アクセスログ

Envoy プロキシ アクセスログには、トラブルシューティングに役立つ詳細情報が含まれています。ただし、これらのログを有効にして、適切な詳細レベルを設定する必要があります。

ログの内容を解釈する方法については、Envoy ログを解釈するをご覧ください。

Envoy ログを有効または無効にする

Envoy プロキシ アクセスログを有効にするには、クラスタ内 Anthos Service Mesh にオーバーレイ ファイルを構成するか、マネージド Anthos Service Mesh に ConfigMap を構成します。

より詳細にロギングを行う

ログの詳細レベルを一時的に引き上げるには、次のコマンドを使用します。この設定は、Pod を再作成すると取り消されます。

kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=info

Envoy ログをフォルダに書き込む

Envoy プロキシのアクセスログを収集し、フォルダに保存するには、次のコマンドを使用します。

kubectl logs -l app=APPLICATION_NAME -c istio-proxy > /FILE_PATH

詳細については、Envoy のアクセスログを取得するをご覧ください。

Kubernetes ログ

Kubernetes は、istiod、Ingress Gateway、プロキシなどの Istio コンポーネントの動作に関する情報を含むログを生成します。これらのログでエラーを確認することにより、問題の原因を絞り込むことができます。

次のコマンドを使用して istiod ログをキャプチャします。

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istiod -oname) > ./LOGS_FOLDER/istiod.log

Istio Ingress Gateway のログをキャプチャするには、次のコマンドを使用します。

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=istio-ingressgateway -oname) > /FILE_PATH

Istio プロキシのログをキャプチャするには、次のコマンドを使用します。

kubectl -n WORKLOAD_NAMESPACE logs POD_NAME -c istio-proxy > ./LOGS_FOLDER/proxy.log

Kubernetes 構成ダンプ

この情報により、クラスタに直接アクセスすることなく、さまざまなリソースの状態を確認し、構成上の問題を特定できます。次のコマンドは、Kubernetes 構成を YAML ファイルに書き込みます。

for namespace in "istio-system" "ns1" "ns2"; do kubectl get -oyaml deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io > ./LOGS_FOLDER/kubernetes.log; done

Envoy コアダンプ

通常、Envoy のコアダンプはエンドユーザーにとって有用なものではありませんが、トラブルシューティング プロセスの中で Google サポートから収集を依頼される場合があります。依頼された場合は、次の手順でログを収集してください。

Envoy コアダンプを書き込み可能なディレクトリに作成するようにカーネルを構成するには:

  1. sidecar.istio.io/enableCoreDump=true ラベルを Pod に追加します。

  2. Pod を再起動して Envoy コアダンプを有効にします。

  3. Pod からコアダンプをコピーします。

Envoy プロキシの構成

Envoy の詳細なプロキシ構成には、トラブルシューティングに役立つ追加情報が含まれています。この情報は、次のコマンドで収集できます。この例では、ENDPOINT は次のいずれかです(重要度が高い順に示します)。

  • /certs
  • /clusters
  • /listeners
  • /config_dump
  • /memory
  • /server_info
  • /stats/prometheus
  • /runtime
kubectl exec -i POD_NAME -c istio-proxy -n NAMESPACE curl 127.0.0.1:15000/ENDPOINT > out.log