Mengumpulkan log Cloud Service Mesh

Bagian berikut menjelaskan cara mengumpulkan berbagai log Cloud Service Mesh untuk memecahkan masalah atau menghubungi Dukungan Google.

Mengumpulkan log menggunakan alat laporan bug

Cloud Service Mesh menyediakan alat laporan bug otomatis yang mengumpulkan log diagnostik yang relevan dan memungkinkan Anda melampirkan log ke tiket Dukungan Google.

Sebelum memulai, pastikan konteks kubeconfig untuk cluster Anda tersedia di file kubeconfig.

Memulai pengumpulan log

Bidang kontrol terkelola

  1. Download alat pemecahan masalah.

  2. Jalankan alat laporan bug untuk mengumpulkan log:

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

    Ganti kode berikut:

    • MEMBERSHIP_NAME: nama keanggotaan Anda.
    • MEMBERSHIP_LOCATION: region untuk langganan Anda.
    • PROJECT_NAME: nama project.

Bidang kontrol dalam cluster

  1. Download alat pemecahan masalah.

  2. Jalankan alat laporan bug untuk mengumpulkan log:

    istioctl bug-report

Mengupload arsip debug

Alat ini membuat arsip log dan konfigurasi mesh Anda di direktori kerja. Anda dapat mengekstrak arsip dan menggunakan panduan pemecahan masalah untuk mencoba memecahkan masalah sendiri. Namun, jika Anda memiliki paket dukungan, Anda dapat menghubungi Dukungan Google Cloud, yang akan memberikan langkah-langkah lebih lanjut untuk mengupload arsip log Anda dengan aman.

Mengumpulkan log Cloud Service Mesh secara manual

Sebagai ganti alat laporan bug Cloud Service Mesh, bagian ini menjelaskan cara mengumpulkan semua log yang relevan secara manual.

Log akses Envoy

Log akses proxy Envoy berisi informasi mendetail yang berguna untuk memecahkan masalah. Namun, Anda harus mengaktifkannya dan menetapkan tingkat detail yang benar.

Untuk mengetahui detail tentang cara menafsirkan konten log, lihat Menafsirkan log Envoy.

Mengaktifkan atau menonaktifkan log Envoy

Untuk mengaktifkan log akses proxy Envoy, konfigurasikan file overlay untuk Cloud Service Mesh dalam cluster atau ConfigMap untuk Cloud Service Mesh terkelola.

Meningkatkan detail logging

Untuk meningkatkan tingkat detail log untuk sementara, gunakan perintah berikut. Setelan ini dibatalkan saat pod dibuat ulang.

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

Untuk menetapkan tingkat detail log kembali ke default, gunakan perintah berikut:

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

Menulis log Envoy ke folder

Untuk mengumpulkan log akses proxy Envoy dan menyimpannya dalam folder, gunakan perintah berikut:

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

Lihat Mendapatkan Log Akses Envoy untuk mengetahui informasi selengkapnya.

Log Kubernetes

Kubernetes menghasilkan beberapa log yang berisi informasi tentang perilaku komponen Istio, seperti istiod, Ingress Gateway, dan proxy. Anda dapat meninjau log ini untuk menemukan error, yang dapat mempersempit cakupan kemungkinan penyebab masalah.

(Khusus panel kontrol dalam cluster) Rekam log istiod menggunakan perintah berikut:

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

(Khusus bidang kontrol dalam cluster) Rekam log Istio Ingress Gateway menggunakan perintah berikut:

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

Rekam log Istio Proxy menggunakan perintah berikut:

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

Dump konfigurasi Kubernetes

Informasi ini memungkinkan pengguna tanpa akses langsung ke cluster untuk melihat status berbagai resource dan mengidentifikasi kemungkinan masalah konfigurasi. Perintah berikut menulis konfigurasi Kubernetes ke file 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

Core dump Envoy

Core dump Envoy biasanya tidak berguna bagi pengguna akhir, tetapi Dukungan Google mungkin meminta Anda untuk mengumpulkannya sebagai bagian dari proses pemecahan masalah, menggunakan langkah-langkah berikut.

Untuk mengonfigurasi kernel agar menulis core dump Envoy ke direktori yang dapat ditulis:

  1. Tambahkan label sidecar.istio.io/enableCoreDump=true ke pod.

  2. Mulai ulang pod untuk mengaktifkan core dump Envoy.

  3. Salin core dump dari pod.

Mengonfigurasi proxy Envoy

Konfigurasi proxy Envoy yang mendetail berisi detail tambahan yang mungkin berguna untuk tujuan pemecahan masalah. Anda dapat mengumpulkan informasi ini menggunakan perintah berikut. Dalam contoh ini, ENDPOINT adalah salah satu dari hal berikut (ditampilkan dalam urutan kepentingan):

  • /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