Cloud Service Mesh ログを収集する

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

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

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

開始する前に、クラスタの kubeconfig コンテキストが kubeconfig ファイルで利用可能であることを確認します。

ログの収集を開始する

マネージド コントロール プレーン

  1. トラブルシューティング ツールをダウンロードする

  2. バグ報告ツールを実行してログを収集します。

    gcloud beta container fleet mesh debug bug-report \
       --membership=MEMBERSHIP_NAME \
       --location=MEMBERSHIP_LOCATION \
       --project=PROJECT_NAME
    

    次のように置き換えます。

    • MEMBERSHIP_NAME: メンバーシップの名前。
    • MEMBERSHIP_LOCATION: メンバーシップのリージョン。
    • PROJECT_NAME: プロジェクト名。

クラスタ内コントロール プレーン

  1. トラブルシューティング ツールをダウンロードする

  2. バグ報告ツールを実行してログを収集します。

    istioctl bug-report

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

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

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

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

Envoy アクセスログ

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

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

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

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

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

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

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- curl -X POST http://localhost:15000/logging?level=debug

ログの詳細レベルをデフォルトに戻すには、次のコマンドを使用します。

kubectl -n NAMESPACE debug --image istio/base --target istio-proxy -it POD_NAME -- 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 ns in `kubectl get namespaces -o=jsonpath='{.items[*].metadata.name}'` ; do echo "===NAMESPACE===" $ns >> ./LOGS_FOLDER/kubernetes.yaml ;kubectl get -oyaml -n $ns deploy,statefulset,job,ingress,endpoints,configmap,event,secret,service,istio-io >> ./LOGS_FOLDER/kubernetes.yaml; 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 debug --image istio/base --target istio-proxy -itq POD_NAME -n NAMESPACE -- curl 127.0.0.1:15000/ENDPOINT > out.log