Cloud Service Mesh ログを収集する

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

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

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

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

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

kubectl config current-context

ログの収集を開始する

ログの収集を開始するには、次のコマンドを使用してバグ報告ツールを実行します。

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 exec POD_NAME -c istio-proxy -- curl -X POST http://localhost:15000/logging?level=debug

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

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 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 exec -i POD_NAME -c istio-proxy -n NAMESPACE curl 127.0.0.1:15000/ENDPOINT > out.log