Mengumpulkan log Anthos Service Mesh

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

Mengumpulkan log menggunakan alat laporan bug

Anthos 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 Anda disetel ke cluster target.

  1. Verifikasi konteks Anda menggunakan perintah berikut:

    kubectl config current-context
  2. Prosedur untuk mendownload dan menggunakan alat laporan bug bergantung pada versi Anthos Service Mesh yang Anda gunakan. Lihat tabel berikut untuk menentukan apakah versi istioctl saat ini sudah cukup atau Anda harus mendownload alat versi mandiri.

Versi Anthos Service Mesh/Istio Alat laporan bug
Anthos Service Mesh 1.7.* dan yang lebih tinggi istioctl bug-report
Anthos Service Mesh 1.6.* Mandiri
Anthos Service Mesh 1.5.* Mandiri
Istio 1.7.* Mandiri
Istio 1.6.* Mandiri
Istio 1.5.* Mandiri

Untuk mendownload alat laporan bug versi mandiri, gunakan langkah-langkah berikut:

  1. Pilih distribusi dari daftar yang cocok dengan lingkungan OS Anda:

    • 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. Gunakan curl untuk mendownload distribusi yang dipilih, misalnya:

    curl -LO https://storage.googleapis.com/gke-release/asm/bug-report_darwin_amd64-v1
  3. Tetapkan izin biner alat laporan bug untuk mengizinkannya berjalan, misalnya:

    chmod +x bug-report_darwin_amd64-v1

Memulai pengumpulan log

Untuk memulai pengumpulan log, jalankan alat laporan bug dan teruskan file konfigurasi sebagai parameter. Opsi runtime tambahan tersedia untuk menimpa konfigurasi jika perlu, yang dapat Anda lihat menggunakan opsi --help.

Jika versi Anthos Service Mesh Anda memiliki alat laporan bug yang sudah ada dalam istioctl, gunakan perintah berikut:

istioctl bug-report

Jika Anda memerlukan alat laporan bug mandiri, ganti nama alat dan jalankan seperti perintah berikut, yang menggunakan distribusi darwin sebagai contoh:

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

Upload arsip debug Anda

Tempatkan arsip log debug Anda di direktori kerja alat laporan bug. Anda dapat membongkar arsip dan menggunakan panduan pemecahan masalah untuk mencoba memecahkan masalah sendiri. Namun, jika memiliki paket dukungan, Anda dapat menghubungi Dukungan Google Cloud, yang akan memberitahukan langkah-langkah lebih lanjut untuk mengupload arsip log Anda dengan aman.

Mengumpulkan log Anthos Service Mesh secara manual

Daripada menggunakan alat laporan bug Anthos 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 pemecahan 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, gunakan istioctl install seperti pada contoh berikut:

istioctl install --set profile=PROFILE_NAME \
    --set meshConfig.accessLogFile="/dev/stdout" \
    --set meshConfig.accessLogEncoding="JSON"

Perintah istioctl install menyediakan opsi berikut untuk mengonfigurasi log:

Nilai Deskripsi
accessLogFile Menentukan alamat file untuk log akses proxy (misalnya, /dev/stdout). Nilai kosong menonaktifkan logging akses.
accessLogFormat Menentukan format untuk log akses proxy. Nilai kosong akan menetapkan format log akses default proxy.
accessLogEncoding Encoding untuk log akses proxy (`TEXT` atau `JSON`). Nilai defaultnya adalah `TEXT`.

Untuk menonaktifkan log, tetapkan accessLogFile ke string kosong:

istioctl install --set profile=PROFILE_NAME \
    --set meshConfig.accessLogFile="" \
    --set meshConfig.accessLogEncoding="TEXT"

Meningkatkan detail logging

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

kubectl -n NAMESPACE exec POD_NAME -c istio-proxy -- 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, Gateway Ingress, dan proxy. Anda dapat meninjau log ini untuk menemukan error, yang dapat mempersempit cakupan kemungkinan penyebab masalah.

Ambil log Istiod menggunakan perintah berikut:

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

Ambil log Gateway Istio Ingress menggunakan perintah berikut:

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

Ambil log Proxy Istio 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 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 core dump

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

  1. Aktifkan core dump untuk semua proxy di mesh dengan menambahkan hal berikut ke konfigurasi IstioOperator:

    spec:
    values:
    global:
      proxy:
        enableCoreDumps: true
  2. Instal ulang menggunakan perintah berikut:

    istioctl install -f myOperatorFile.yaml
  3. Hapus pod target agar pod dibuat ulang dengan dump inti proxy yang diaktifkan.

  4. Biarkan proses berjalan dan saat mengalami masalah, picu core dump dengan menjalankan perintah berikut di container istio-proxy:

    kubectl exec -it POD_NAME -c istio-proxy
  5. Cari PID untuk container envoy:

    ps aux | grep -i envoy
  6. Gunakan PID untuk menghentikan proses envoy, yang menghasilkan core dump:

    kill -3 PID
  7. Tunggu container dimulai ulang (atau gunakan perintah kill).

  8. Jalankan perintah berikut untuk mengekstrak core dump ke direktori Anda saat ini:

    kubectl cp PID:/var/lib/istio/data/core.proxy -c istio-proxy ./core.proxy

Konfigurasi proxy Envoy

Konfigurasi proxy Envoy yang mendetail berisi detail tambahan yang mungkin dapat membantu tujuan pemecahan masalah. Anda dapat mengumpulkan informasi ini menggunakan perintah berikut. Dalam contoh ini, ENDPOINT adalah salah satu dari berikut ini (ditampilkan sesuai urutan kepentingan): * /certs * /clusters * /listeners * /config_dump * /memory * /server_info * /stats/prometheus * /runtime

kubectl exec -i POD_NAME -c istio-proxy curl 127.0.0.1:15000/ENDPOINT > out.log