Memecahkan masalah kemampuan observasi

Halaman ini menjelaskan cara memecahkan masalah pada halaman Anthos Service Mesh di Konsol Google Cloud.

Daftar layanan tidak memiliki layanan tertentu

Jika layanan tidak ada di daftar, pastikan konfigurasi layanan Kubernetes ada di cluster Anda.

Untuk mendapatkan daftar semua layanan Kubernetes:

 kubectl get services --all-namespaces

Untuk mendapatkan daftar layanan Kubernetes dalam namespace tertentu:

kubectl get services -n YOUR_NAMESPACE

Data telemetri untuk layanan tidak ada atau salah

Secara default, Cloud Monitoring dan Cloud Logging diaktifkan di project Google Cloud saat Anda menginstal Anthos Service Mesh. Untuk melaporkan data telemetri, setiap proxy file bantuan yang dimasukkan ke pod layanan akan memanggil Cloud Monitoring API dan Cloud Logging API. Setelah men-deploy workload, perlu waktu sekitar satu atau dua menit untuk menampilkan data telemetri di Google Cloud Console. Anthos Service Mesh secara otomatis menjaga dasbor layanan tetap terbaru:

  • Untuk metrik, proxy file bantuan memanggil Cloud Monitoring API kira-kira setiap menit.

  • Untuk memperbarui grafik Topologi, proxy file bantuan mengirim laporan inkremental kira-kira setiap menit dan laporan lengkap setiap sepuluh menit.

  • Untuk logging, proxy file bantuan memanggil Cloud Logging API kira-kira setiap sepuluh detik.

  • Untuk melakukan perekaman aktivitas, Anda harus mengaktifkan Cloud Trace. Rekaman aktivitas dilaporkan sesuai dengan frekuensi pengambilan sampel yang telah dikonfigurasi (biasanya, satu dari setiap 100 permintaan).

Metrik hanya ditampilkan untuk layanan HTTP di halaman Anthos Service Mesh Metrics. Jika Anda tidak melihat metrik apa pun, periksa hal berikut:

Memverifikasi bahwa proxy file bantuan telah dimasukkan

Pastikan semua pod di namespace untuk layanan aplikasi Anda telah memasukkan proxy file bantuan:

kubectl get pod -n YOUR_NAMESPACE --all

Pada contoh output dari perintah sebelumnya berikut, perhatikan bahwa kolom READY menunjukkan bahwa ada dua penampung untuk setiap beban kerja: penampung utama dan container untuk proxy sidecar.

NAME                    READY   STATUS    RESTARTS   AGE
YOUR_WORKLOAD           2/2     Running   0          20s
...

Jika Anda tidak melihat dua penampung, periksa apakah namespace Anda memiliki label istio-injection=enabled, yang menunjukkan bahwa injeksi bantuan otomatis diaktifkan:

  kubectl get ns --show-labels

Contoh output:

NAME              STATUS   AGE   LABELS
default           Active   35m   istio-injection=enabled
istio-system      Active   34m   istio-injection=disabled,istio-operator-managed=Reconcile
  • Jika Anda tidak melihat label istio-injection=enabled, jalankan perintah berikut untuk mengaktifkan injeksi file bantuan otomatis:

    kubectl label namespace YOUR_NAMESPACE istio-injection=enabled --overwrite
  • Jika Anda melihat label istio-injection=enabled, dan telah menginstal Anthos Service Mesh pada cluster Google Kubernetes Engine yang sudah ada yang memiliki beban kerja, Anda perlu memulai ulang pod yang berjalan agar proxy sidecar dimasukkan atau diupdate dengan versi Anthos Service Mesh saat ini. Lihat Memperbarui file bantuan untuk pod yang sudah ada untuk mengetahui informasi selengkapnya.

Memverifikasi nama port layanan Kubernetes

Periksa nama port layanan Kubernetes untuk memverifikasi bahwa Anthos Service Mesh menganggap layanan sebagai layanan HTTP. Agar disertakan dalam Anthos Service Mesh, port layanan harus diberi nama, dan namanya harus menyertakan protokol port, misalnya:

apiVersion: v1
kind: Service
metadata:
  name: ratings
  labels:
    app: ratings
    service: ratings
spec:
  ports:
  - port: 9080
    name: http

Nama port layanan dapat menyertakan akhiran dalam sintaksis berikut: name: protocol[-suffix] dengan tanda kurung siku menunjukkan akhiran opsional yang harus diawali dengan tanda hubung, misalnya:

kind: Service
metadata:
  name: myservice
spec:
  ports:
  - number: 3306
    name: mysql
  - number: 80
    name: http-web

Agar metrik ditampilkan di Konsol Google Cloud, port layanan harus diberi nama dengan salah satu protokol berikut: http, http2, atau grpc. Port layanan yang diberi nama dengan protokol https diperlakukan sebagai tcp, dan metrik tidak ditampilkan untuk layanan tersebut.

Memastikan API yang diperlukan sudah diaktifkan

Anthos Service Mesh memerlukan beberapa API untuk melaporkan dan menampilkan telemetri. Anda dapat melihat API mana yang diaktifkan untuk project Anda menggunakan perintah gcloud services list, atau cukup aktifkan semua API yang diperlukan untuk memastikan Anda mendapatkan semuanya.

  1. Tetapkan project default untuk Google Cloud CLI:

    gcloud config set project YOUR_PROJECT_ID
  2. Aktifkan semua API yang diperlukan:

    gcloud services enable \
       container.googleapis.com \
       compute.googleapis.com \
       monitoring.googleapis.com \
       logging.googleapis.com \
       meshca.googleapis.com \
       meshtelemetry.googleapis.com \
       meshconfig.googleapis.com \
       iamcredentials.googleapis.com \
       anthos.googleapis.com

Memverifikasi bahwa Akun Layanan ASM Mesh Data Plane ada

  1. Di Konsol Google Cloud, buka halaman IAM:

    Buka halaman IAM

  2. Pilih project Anda.

  3. Dalam daftar anggota, cari akun layanan dengan nama ASM Mesh Data Plane Service Account.

  4. Jika akun layanan tidak ada, buat akun tersebut:

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      https://meshconfig.googleapis.com/v1alpha1/projects/YOUR_PROJECT_ID:initialize

Memastikan workload Anda berjalan

  1. Di Konsol Google Cloud, buka halaman Beban Kerja GKE:

    Buka Workload GKE

  2. Pilih project Anda.

  3. Tambahkan filter untuk cluster Anda. Pastikan semua workload untuk aplikasi Anda dan Anthos Service Mesh aktif dan berjalan dengan status OK. Beban kerja mungkin gagal karena resource terbatas (CPU, memori, dll.), sehingga Anda perlu mengupgrade cluster dengan resource yang lebih besar. Baca Mengubah ukuran cluster untuk mengetahui informasi selengkapnya.

Memverifikasi bahwa aplikasi Anda menyalurkan permintaan

Verifikasi bahwa aplikasi Anda secara akting menyalurkan permintaan. QPS mungkin rendah, tetapi seharusnya menerima traffic.

Grafik topologi kosong

Jika grafik topologi tidak menampilkan layanan Anda dan menampilkan pesan error No data available to graph. Check your filters and try again, periksa hal berikut:

Memverifikasi ID mesh

Pastikan cluster memiliki label mesh_id yang benar:

  1. Dapatkan nomor project, yang merupakan nomor unik yang dibuat secara otomatis saat Anda membuat project.

  2. Pastikan cluster memiliki label mesh_id dalam format berikut: mesh_id: proj-PROJECT_NUMBER

    Perbaiki label mesh_id jika tidak ada atau salah. Untuk informasi selengkapnya, lihat Menambahkan atau memperbarui label untuk cluster yang ada.

  3. Tetapkan variabel lingkungan berikut:

    • Tetapkan ID project:

      export PROJECT_ID=YOUR_PROJECT_ID
    • Tetapkan nomor project:

      export PROJECT_NUMBER=YOUR_PROJECT_NUMBER
    • Tetapkan nama cluster:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME
    • Tetapkan CLUSTER_LOCATION ke zona cluster atau region cluster Anda:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
    • Tetapkan kumpulan beban kerja:

      export WORKLOAD_POOL=${PROJECT_ID}.svc.id.goog
    • Setel ID mesh:

      export MESH_ID="proj-${PROJECT_NUMBER}"
  4. Deploy ulang Anthos Service Mesh dengan opsi yang sama dengan yang Anda gunakan sebelumnya.

  5. Setiap beban kerja yang berjalan di cluster sebelum Anda menginstal Anthos Service Mesh harus mengupdate proxy sidecar agar memiliki Anthos Service Mesh terbaru.

    kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE