All Products
Search
Document Center

Alibaba Cloud Service Mesh:Konfigurasi observabilitas ASM

Last Updated:Jun 25, 2026

ASM menyediakan fitur observabilitas untuk log, metrik, dan tracing. Anda dapat menggunakan Konsol ASM untuk menyesuaikan pengaturan ini pada cakupan global, namespace, atau workload tertentu. Misalnya, Anda dapat mengonfigurasi format output log, menentukan dimensi metrik, mengaktifkan atau menonaktifkan metrik tertentu, serta mengatur persentase sampling untuk tracing.

Prasyarat

Instans ASM versi 1.17.2.35 atau yang lebih baru. Untuk informasi selengkapnya, lihat Buat instans ASM atau Upgrade instans ASM.

Cakupan

Cakupan

Deskripsi

Global

Pengaturan global berlaku untuk log, metrik, dan tracing. Anda hanya dapat memiliki satu konfigurasi global, yang tidak dapat dihapus. Pengaturan tracing hanya dapat dikonfigurasi pada cakupan global.

Namespace

Anda dapat membuat pengaturan observabilitas khusus untuk suatu namespace. Setiap namespace hanya dapat memiliki satu konfigurasi observabilitas tingkat namespace.

Custom

Gunakan selector workload untuk menentukan cakupan konfigurasi kustom. Setiap workload hanya dapat termasuk dalam satu konfigurasi kustom.

Prosedur

Global

  1. Login ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Observability Management Center > Observability Settings.

  3. Pada halaman Observability Settings, klik tab Global. Konfigurasikan pengaturan untuk log, metrik, dan tracing sesuai kebutuhan, lalu klik Submission.

    Untuk deskripsi lengkap pengaturan tersebut, lihat bagian berikut.

    Area

    Deskripsi

    Pengaturan log

    Pengaturan metrik

    Pengaturan tracing

Namespace

  1. Login ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Observability Management Center > Observability Settings.

  3. Pada halaman Observability Settings, klik tab Namespace, lalu klik Create. Pilih Namespace target, konfigurasikan pengaturan untuk log dan metrik sesuai kebutuhan, lalu klik Create.

    Untuk deskripsi lengkap pengaturan tersebut, lihat bagian berikut.

    Area

    Deskripsi

    Pengaturan log

    Pengaturan metrik

Custom

  1. Login ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Observability Management Center > Observability Settings.

  3. Pada halaman Observability Settings, klik tab Custom. Pilih Namespace target dan klik Create. Masukkan Name dan Label selector, konfigurasikan pengaturan untuk log dan metrik sesuai kebutuhan, lalu klik Create.

    Untuk deskripsi lengkap pengaturan tersebut, lihat bagian berikut.

    Area

    Deskripsi

    Pengaturan log

    Pengaturan metrik

Pengaturan log

Pengaturan log mencakup pengaktifan atau penonaktifan output log akses, pengaturan format output log, penyesuaian format log, dan filtering log.

Output log akses

  1. Pada bagian Log Settings, aktifkan atau nonaktifkan sakelar Enable Log Output sesuai kebutuhan.

    • Jika diaktifkan, sidecar atau gerbang bidang data mengirim log akses ke output standar kontainer.

    • Jika dinonaktifkan, sidecar atau gerbang bidang data berhenti mengirim log ke output standar kontainer.

  2. Lihat log di output standar kontainer sidecar bidang data.

    Contoh berikut menunjukkan cara melihat log akses menggunakan kubectl.

    1. Jalankan perintah berikut untuk melihat log sidecar.

      kubectl logs <Pod-name> -c istio-proxy --tail 1

      Contoh output

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.29:80",
          "downstream_remote_address":"221.220.XXX.XXX:0",
          "duration":"80",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"default",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"inbound|80||",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"127.0.X.X:55879",
          "upstream_response_time":"79",
          "upstream_service_time":"79",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
    2. Jalankan perintah berikut untuk melihat log gerbang masuk.

      kubectl -n istio-system logs <ingress-gateway-Pod-name> --tail 1

      Contoh output

      {
          "authority_for":"47.110.XX.XXX",
          "bytes_received":"0",
          "bytes_sent":"22382",
          "downstream_local_address":"192.168.0.63:80",
          "downstream_remote_address":"221.220.XXX.XXX:64284",
          "duration":"81",
          "istio_policy_status":"-",
          "method":"GET",
          "path":"/static/favicon.ico",
          "protocol":"HTTP/1.1",
          "request_id":"0f2cf829-3da5-4810-a618-08d9745d****",
          "requested_server_name":"-",
          "response_code":"200",
          "response_flags":"-",
          "route_name":"httpbin",
          "start_time":"2023-06-30T04:00:36.841Z",
          "trace_id":"-",
          "upstream_cluster":"outbound|8000||httpbin.default.svc.cluster.local",
          "upstream_host":"192.168.0.29:80",
          "upstream_local_address":"192.168.0.63:36140",
          "upstream_response_time":"81",
          "upstream_service_time":"81",
          "upstream_transport_failure_reason":"-",
          "user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.X.X Safari/537.36",
          "x_forwarded_for":"221.220.XXX.XXX"
      }
  3. (Opsional) Lihat log akses di konsol ACK.

    Jika Anda menggunakan kluster ACK, Anda juga dapat melihat log akses di konsol ACK.

    1. Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

    2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Pods.

    3. Pada halaman Pods, klik nama Pod target, lalu klik tab Logs di bagian bawah halaman untuk melihat log akses.

Format output log

Catatan

Fitur ini memerlukan instans ASM versi 1.20.6.36 atau yang lebih baru. Untuk informasi tentang cara melakukan upgrade instans, lihat Upgrade instans ASM.

Pada bagian Log Settings, atur Log Output Format ke JSON atau TEXT sesuai kebutuhan.

  • Jika Anda memilih JSON, log akses dikirim ke output standar kontainer sebagai string JSON.

  • Jika Anda memilih TEXT, log akses dikirim ke output standar kontainer sebagai string teks biasa.

Format log kustom

  1. Pada bagian Log Settings, pilih field yang akan disertakan, modifikasi informasi field kustom, atau klik ikon 增加.png untuk menambahkan field log baru.

    Anda hanya dapat menyesuaikan format log ketika Enable Log Output diaktifkan. Pada bagian Log Format, field log default bersifat wajib dan tidak dapat dimodifikasi. Field log dapat mengambil nilai dari header permintaan, header respons, atau nilai Envoy bawaan.

    Contoh berikut menunjukkan cara mencetak header accept-encoding dari permintaan. Atur accessLogFormat key ke accept-encoding, Type ke Request Properties, dan accessLogFormat value ke Accept-Encoding. Sebagai contoh, field bawaan authority_for sesuai dengan variabel format %REQ(:AUTHORITY)%, dan request_duration sesuai dengan %REQUEST_DURATION%. Untuk field kustom seperti upstream_response_time, jika Anda memilih Response Attribute sebagai tipe atribut, variabel formatnya adalah %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%. Untuk field kustom seperti accept-encoding, jika Anda memilih Request Attribute sebagai tipe atribut, variabel formatnya adalah %REQ(Accept-Encoding)%.

  2. Jalankan perintah berikut untuk memeriksa log komponen bidang data terkait field baru tersebut.

    kubectl logs <Pod-name> -c istio-proxy --tail 1|grep accept-encoding --color=auto

    Contoh output

    {
        "bytes_received":"0",
        "bytes_sent":"9593",
        "downstream_local_address":"192.168.0.29:80",
        "downstream_remote_address":"69.164.XXX.XX:0",
        "duration":"2",
        "istio_policy_status":"-",
        "method":"GET",
        "path":"/",
        "protocol":"HTTP/1.1",
        "request_id":"29939dc9-62be-4ddf-acf6-32cb098d****",
        "requested_server_name":"outbound_.8000_._.httpbin.default.svc.cluster.local",
        "response_code":"200",
        "response_flags":"-",
        "route_name":"default",
        "start_time":"2023-06-30T04:18:19.734Z",
        "trace_id":"-",
        "upstream_cluster":"inbound|80||",
        "upstream_host":"192.168.0.29:80",
        "upstream_local_address":"127.0.X.X:34723",
        "upstream_service_time":"2",
        "upstream_transport_failure_reason":"-",
        "user_agent":"Mozilla/5.0 zgrab/0.x",
        "x_forwarded_for":"69.164.XXX.XX",
        "authority_for":"47.110.XX.XXX",
        "upstream_response_time":"2",
        "accept-encoding":"gzip"
    }

    Output menunjukkan bahwa header Accept-Encoding, yang ditambahkan pada Langkah 1, telah ditulis ke log akses.

Filtering log

Pada bagian Log Settings, pilih Enable Log Filter untuk mengaktifkan filtering log. Kemudian, masukkan ekspresi filter log di kotak teks. Log akses hanya dihasilkan untuk permintaan yang sesuai dengan ekspresi tersebut.

Sebagai contoh, jika Anda hanya ingin mencatat permintaan dengan status HTTP respons 400 atau lebih tinggi, gunakan ekspresi response.code >= 400. Untuk informasi selengkapnya, lihat Ekspresi CEL dan field umum.

Ekspresi dan field CEL

Ekspresi filter log menggunakan Common Expression Language (CEL). Tabel berikut mencantumkan field umum untuk ekspresi CEL. Untuk informasi selengkapnya, lihat CEL dan Envoy.

Atribut

Tipe

Deskripsi

request.path

string

Jalur permintaan.

request.url_path

string

Jalur permintaan, tidak termasuk string kueri.

request.host

string

Bagian host dari URL.

request.method

string

Metode permintaan.

request.headers

map<string, string>

Semua header permintaan, diindeks berdasarkan nama header huruf kecil.

request.useragent

string

Nilai header User-Agent.

request.time

timestamp

Waktu saat byte pertama permintaan tiba.

request.id

string

ID permintaan.

request.protocol

string

Protokol permintaan. Nilai yang valid: HTTP/1.0, HTTP/1.1, HTTP/2, atau HTTP/3.

request.query

string

String kueri dalam URL permintaan.

response.code

int

Kode status respons HTTP.

response.code_details

string

Detail tentang kode respons.

response.grpc_status

int

Kode status gRPC dalam respons.

response.headers

map<string, string>

Semua header respons, diindeks berdasarkan nama header huruf kecil.

response.size

int

Ukuran badan respons dalam byte.

response.total_size

int

Ukuran total pesan respons dalam byte.

Pengaturan metrik

Pengaturan metrik mencakup pengaktifan atau penonaktifan pembuatan metrik dan konfigurasi dimensi metrik.

Pembuatan metrik

Metrik dibagi menjadi metrik sisi klien dan metrik sisi server.

  • Metrik sisi klien adalah metrik yang dihasilkan ketika sidecar bertindak sebagai klien untuk memulai permintaan. Metrik gerbang juga termasuk dalam kategori CLIENT.

  • Metrik sisi server: Metrik yang dihasilkan ketika sidecar diakses sebagai server.

  1. Pada bagian Metric Settings, pada kolom Client-Side Metrics atau Server-Side Metrics, centang atau kosongkan kotak centang Enabled untuk metrik target sesuai kebutuhan.

    • Jika diaktifkan, sidecar atau gerbang bidang data mengekspos metrik melalui path /stats/prometheus pada port 15020.

    • Jika dinonaktifkan, metrik tidak diekspos pada port ini.

  2. Jalankan perintah berikut untuk melihat metrik yang diekspos oleh sidecar atau gerbang.

    Anda dapat menggunakan perintah kubectl untuk menjalankan perintah curl di dalam kontainer Sidecar atau gerbang, mengakses path /stats/prometheus pada port lokal 15020 untuk melihat metrik yang diekspor.

    kubectl exec <Pod-name> -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus | head -n 10

    Contoh output:

    # TYPE istio_agent_cert_expiry_seconds gauge
    istio_agent_cert_expiry_seconds{resource_name="default"} 46725.287654548
    # HELP istio_agent_endpoint_no_pod Endpoints without an associated pod.
    # TYPE istio_agent_endpoint_no_pod gauge
    istio_agent_endpoint_no_pod 0
    # HELP istio_agent_go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
    # TYPE istio_agent_go_gc_duration_seconds summary
    istio_agent_go_gc_duration_seconds{quantile="0"} 5.0149e-05
    istio_agent_go_gc_duration_seconds{quantile="0.25"} 9.8807e-05
    ......

Dimensi metrik

Dimensi metrik menambahkan konteks, memungkinkan Anda memfilter metrik di Prometheus. Misalnya, gunakan dimensi source_app untuk memfilter metrik untuk permintaan dari aplikasi klien tertentu.

Edit dimensi default

Ikuti langkah-langkah berikut untuk mengedit dimensi default:

  1. Pada bagian Metric Settings, pada kolom Client-Side Metrics atau Server-Side Metrics, klik Edit dimension untuk metrik yang diaktifkan.

  2. Pada kotak dialog Customize CLIENT dimension configuration atau Customize SERVER dimension configuration, centang atau kosongkan kotak centang untuk dimensi yang akan diekspor, lalu klik Confirm.

Sebagai contoh, jika tidak ada dimensi yang dinonaktifkan, Anda dapat menjalankan perintah curl di dalam kontainer sidecar atau gerbang menggunakan kubectl untuk mengakses path lokal /stats/prometheus pada port 15020 dan melihat metrik yang diekspor.

kubectl exec <Pod-name> -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus

Sebagai contoh, pertimbangkan metrik istio_request_bytes_sum, yang sesuai dengan metrik REQUEST_SIZE di konsol. Output menunjukkan bahwa semua dimensi disertakan.

istio_request_bytes_sum{reporter="destination",source_workload="istio-ingressgateway",source_canonical_service="unknown",source_canonical_revision="latest",source_workload_namespace="istio-system",source_principal="spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway",source_app="istio-ingressgateway",source_version="unknown",source_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",destination_workload="httpbin",destination_workload_namespace="default",destination_principal="spiffe://cluster.local/ns/default/sa/httpbin",destination_app="httpbin",destination_version="v1",destination_service="httpbin.default.svc.cluster.local",destination_canonical_service="httpbin",destination_canonical_revision="v1",destination_service_name="httpbin",destination_service_namespace="default",destination_cluster="c479fc4abd2734bfaaa54e9e36fb26c01",request_protocol="http",response_code="200",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 18000

Ubah metrik default sisi server REQUEST_SIZE agar hanya menyimpan dimensi response_code. Kemudian, jalankan perintah curl untuk melihat metrik yang diekspor dari path /stats/prometheus. Output menunjukkan bahwa hanya dimensi response_code yang disertakan.

istio_request_bytes_sum{response_code="200"} 16550

Tambahkan dimensi kustom

Ikuti langkah-langkah berikut untuk menambahkan dimensi kustom:

  1. Pada bagian Metric Settings, pada kolom Client-Side Metrics atau Server-Side Metrics, klik Edit dimension untuk metrik yang diaktifkan.

  2. Pada kotak dialog Customize CLIENT dimension configuration atau Customize SERVER dimension configuration, pada bagian Custom Dimensions, konfigurasikan nama dan nilai dimensi, lalu klik Confirm.

Sebagai contoh, edit dimensi kustom untuk metrik sisi server REQUEST_SIZE. Tambahkan dimensi dengan nama request_path dan nilai request.path. Kemudian, jalankan perintah curl untuk melihat metrik yang diekspor dari path /stats/prometheus. Output menunjukkan bahwa metrik sekarang menyertakan dimensi kustom request_path.

istio_request_bytes_sum{response_code="200",request_path="/spec.json"} 5800
Penting

Menghapus dimensi default yang tidak diperlukan layanan Anda dapat mengurangi konsumsi memori Envoy dan Prometheus. Namun, karena sebagian besar dimensi biasanya diperlukan, bagian Metric Settings hanya menampilkan dimensi yang dihapus.

Pengaturan tracing

Untuk membangun jejak yang lengkap, tracing memerlukan konfigurasi pelaporan yang konsisten di seluruh rantai panggilan. Titik akhir pelaporan atau persentase sampling yang tidak konsisten dapat menyebabkan jejak tidak lengkap. Karena alasan ini, instans ASM versi sebelum 1.24.6.83 tidak mengizinkan konfigurasi tracing tingkat namespace atau tingkat workload. Mulai versi 1.24.6.83, ASM mendukung modifikasi resource Telemetry melalui API Kubernetes untuk menerapkan konfigurasi tracing tingkat namespace dan tingkat workload. Untuk informasi selengkapnya tentang cara mengonfigurasi resource Telemetry, lihat Deskripsi CRD Telemetry.

Persentase sampling

Anda dapat menyesuaikan persentase sampling untuk tracing, yaitu proporsi permintaan yang memicu pelaporan jejak. Nilai 0 menonaktifkan tracing, dan tidak ada permintaan yang memicu pelaporan jejak.

Tag kustom

Anda dapat menyesuaikan tag pada rentang tracing yang dilaporkan. Pada bagian Tracing Analysis Settings, klik Add Custom Tags, lalu konfigurasikan Name, Type, dan Value.

Tipe dapat berupa Fixed Value, Request Header, dan Environment Variable. Tabel berikut menjelaskan setiap tipe dan memberikan contoh konfigurasi.

Tipe

Deskripsi

Contoh

Fixed Value

Tag Fixed Value menggunakan nilai yang Anda tentukan.

  • Name: env

  • Type: Fixed Value

  • Value: prod

Request Header

Tag Request Header membaca nilainya dari header permintaan yang ditentukan. Jika header tidak ada dalam permintaan, nilai default akan digunakan.

Sebagai contoh, Anda dapat mengambil nilai tag dari header User-Agent. Jika header tidak ada, nilai tag diatur ke nilai default unknown.

  • Name: useragent

  • Type: Request Header

  • Value:

    • Header name: User-Agent

    • Default value: unknown

Environment Variable

Tag Environment Variable membaca nilainya dari variabel lingkungan yang ditentukan dalam workload. Jika variabel lingkungan tidak ada dalam workload, nilai default akan digunakan.

Sebagai contoh, Anda dapat mengambil nilai tag dari variabel lingkungan ENV. Jika variabel lingkungan tidak ada, nilai tag diatur ke nilai default unknown.

  • Name: env

  • Type: Environment Variable

  • Value:

    • Environment Variable Name: ENV

    • Default value: unknown