All Products
Search
Document Center

Alibaba Cloud Service Mesh:Pengaturan observabilitas ASM

Last Updated:Jun 21, 2026

Service Mesh (ASM) menyediakan pengaturan observabilitas untuk log, metrik, dan tracing. Anda dapat menggunakan konsol ASM untuk menyesuaikan pengaturan ini pada tingkat global, namespace, atau workload tertentu. Misalnya, Anda dapat menentukan format output log, menambahkan dimensi metrik, mengaktifkan atau menonaktifkan metrik tertentu, serta mengatur persentase sampling tracing. Topik ini menjelaskan cara menggunakan Pengaturan Observabilitas.

Prasyarat

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

Cakupan

Jenis

Deskripsi

Global

Konfigurasi global mendukung pengaturan untuk log, metrik, dan tracing. Hanya ada satu konfigurasi global dan tidak dapat dihapus. Pengaturan tracing hanya didukung pada cakupan global.

Namespace

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

Kustom

Konfigurasi kustom menggunakan pemilih label (label selector) untuk menentukan cakupannya. Setiap workload dapat dipilih oleh paling banyak satu konfigurasi kustom.

Prosedur

Global

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

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

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

    Klik tautan dalam tabel berikut untuk melihat deskripsi detail konfigurasi.

    Bagian konfigurasi

    Deskripsi

    Pengaturan log

    Pengaturan metrik

    Pengaturan tracing

Namespace

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

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

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

    Klik tautan dalam tabel berikut untuk melihat deskripsi detail konfigurasi.

    Bagian konfigurasi

    Deskripsi

    Pengaturan log

    Pengaturan metrik

Kustom

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

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

  3. Di halaman Observability Settings, klik tab Custom, pilih Namespace target, lalu klik Create. Masukkan Name dan Label selector, konfigurasikan log dan metrik sesuai kebutuhan, lalu klik Create.

    Klik tautan dalam tabel berikut untuk melihat deskripsi detail konfigurasi.

    Bagian konfigurasi

    Deskripsi

    Pengaturan log

    Pengaturan metrik

Pengaturan log

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

Output log akses

  1. Di bagian Log Settings, alihkan sakelar Enable Log Output sesuai kebutuhan.

    • Jika diaktifkan, sidecar atau gerbang (gateway) pada bidang data (data plane) akan mengeluarkan log akses ke standard output (stdout) kontainer.

    • Jika dinonaktifkan, sidecar atau gerbang pada bidang data tidak lagi mengeluarkan log ke stdout kontainer.

  2. Lihat log di stdout kontainer sidecar bidang data.

    Contoh berikut menunjukkan cara melihat log akses menggunakan kubectl.

    1. Jalankan perintah berikut untuk melihat log sidecar:

      kubectl logs httpbin-5c5944c58c-w**** -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 (ingress gateway):

      kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --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 Container Service for Kubernetes.

    Jika Anda menggunakan kluster Alibaba Cloud Container Service for Kubernetes (ACK), Anda juga dapat melihat log akses di konsol ACK.

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

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

    3. Di 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 selengkapnya tentang cara upgrade instans, lihat Upgrade instans ASM.

Di bagian Log Settings, atur Log Output Format menjadi JSON atau TEXT sesuai kebutuhan.

  • Jika Anda memilih JSON, log akses akan dikeluarkan ke stdout kontainer sebagai string JSON.

  • Jika Anda memilih TEXT, log akses akan dikeluarkan ke stdout kontainer sebagai string teks biasa.

Format log kustom

  1. Di bagian Log Settings, pilih field, modifikasi informasi field kustom, atau klik ikon 增加.png di bagian bawah daftar field log untuk menambahkan field log baru.

    Anda hanya dapat menyesuaikan format log ketika sakelar Enable Log Output diaktifkan. Di bagian Log Format, field log yang dipilih secara default bersifat wajib dan tidak dapat dibatalkan pemilihannya. Nilai field log dapat diambil dari header permintaan (request headers), header respons (response headers), atau nilai Envoy bawaan.

    Sebagai contoh, untuk mencatat header permintaan accept-encoding, atur accessLogFormat key menjadi accept-encoding, Type menjadi Request Properties, dan accessLogFormat value menjadi Accept-Encoding. Templat format untuk header permintaan adalah %REQ(HEADER_NAME)% (misalnya, %REQ(:AUTHORITY)%), untuk header respons adalah %RESP(HEADER_NAME)% (misalnya, %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%), dan untuk atribut Envoy bawaan adalah %ATTRIBUTE_NAME% (misalnya, %REQUEST_DURATION%).

  2. Jalankan perintah berikut untuk melihat log komponen bidang data di service mesh.

    kubectl logs httpbin-5c5944c58c-w**** -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"
    }

    Log akses sekarang menampilkan nilai header Accept-Encoding yang Anda tambahkan di langkah 1.

Penyaringan log

Di bagian Log Settings, pilih Enable Log Filter untuk mengaktifkan penyaringan log, lalu masukkan ekspresi penyaringan di kotak teks. Log akses hanya dihasilkan untuk permintaan yang sesuai dengan ekspresi tersebut.

Sebagai contoh, untuk mencatat hanya permintaan yang memenuhi kondisi Response Http Status >= 400, gunakan ekspresi response.code >= 400. Untuk informasi selengkapnya, lihat Ekspresi CEL dan field umum.

Ekspresi CEL dan field umum

Ekspresi penyaringan log merupakan ekspresi Common Expression Language (CEL) standar. Tabel berikut mencantumkan field umum untuk ekspresi CEL. Untuk informasi selengkapnya, lihat dokumentasi resmi CEL dan Envoy.

Atribut

Tipe

Deskripsi

request.path

string

Jalur permintaan.

request.url_path

string

Jalur permintaan tanpa 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 huruf kecilnya.

request.useragent

string

Nilai header User-Agent.

request.time

timestamp

Waktu saat byte pertama permintaan diterima.

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 dari URL permintaan.

response.code

int

Kode status HTTP dari respons.

response.code_details

string

Detail mengenai kode respons.

response.grpc_status

int

Kode status gRPC dalam respons.

response.headers

map<string, string>

Semua header respons, diindeks berdasarkan nama huruf kecilnya.

response.size

int

Ukuran badan respons dalam byte.

response.total_size

int

Ukuran total pesan respons dalam byte, termasuk badan dan header.

Pengaturan metrik

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

Pembuatan metrik

Metrik dikategorikan sebagai metrik sisi klien dan metrik sisi server.

  • Metrik sisi klien: Metrik yang dihasilkan ketika sidecar bertindak sebagai klien untuk memulai permintaan. Metrik gerbang (gateway) juga dikategorikan sebagai metrik sisi klien.

  • Metrik sisi server: Metrik yang dihasilkan ketika sidecar bertindak sebagai server untuk menerima permintaan.

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

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

    • Jika metrik dinonaktifkan, metrik tersebut tidak diekspos pada port dan path yang ditentukan.

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

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

    kubectl exec httpbin-5c5944c58c-w**** -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 memberikan informasi kontekstual yang kaya. Anda dapat menggunakan dimensi ini untuk menyaring metrik target di Prometheus. Misalnya, Anda dapat menggunakan dimensi source_app untuk menyaring metrik permintaan dari aplikasi klien tertentu.

Edit dimensi default

Ikuti langkah-langkah berikut untuk mengedit dimensi default:

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

  2. Di kotak dialog Customize CLIENT dimension configuration atau Customize SERVER dimension configuration, centang atau hapus centang 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 untuk mengakses path /stats/prometheus pada port lokal 15020 dan melihat metrik yang diekspor.

kubectl exec httpbin-5c5944c58c-w**** -c istio-proxy -- curl 127.0.0.1:15020/stats/prometheus

Mengambil metrik istio_request_bytes_sum (yang sesuai dengan metrik REQUEST_SIZE di konsol) sebagai contoh, Anda dapat melihat bahwa metrik tersebut mencakup semua dimensi secara default.

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

Jika Anda memodifikasi metrik server-side REQUEST_SIZE default agar hanya menyimpan dimensi response_code lalu mengakses path /stats/prometheus, Anda akan melihat bahwa metrik tersebut sekarang hanya mencakup dimensi response_code.

istio_request_bytes_sum{response_code="200"} 16550

Tambahkan dimensi kustom

Ikuti langkah-langkah berikut untuk menambahkan dimensi kustom:

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

  2. Di kotak dialog Customize CLIENT dimension configuration atau Customize SERVER dimension configuration, di bawah opsi Custom Dimensions, edit nama dan nilai dimensi, lalu klik Confirm.

Sebagai contoh, jika Anda mengedit metrik server-side REQUEST_SIZE dan menambahkan dimensi kustom dengan nama request_path dan nilai request.path, metrik yang diekspor akan mencakup dimensi kustom request_path saat Anda mengakses path /stats/prometheus.

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

Anda dapat mengurangi konsumsi memori Envoy dan Prometheus dengan menghapus dimensi default yang tidak diperlukan. Namun, karena sebagian besar dimensi biasanya berguna, bagian Metric Settings hanya menampilkan dimensi yang telah Anda hapus secara eksplisit.

Pengaturan tracing

Pengaturan tracing mencakup persentase sampling dan tag kustom. Untuk membangun rantai panggilan lengkap, tracing memerlukan konfigurasi pelaporan yang konsisten di seluruh layanan. Titik akhir pelaporan atau laju sampling yang tidak konsisten dapat menyebabkan jejak (trace) tidak lengkap. Oleh karena itu, versi ASM sebelum 1.24.6.83 tidak mengizinkan konfigurasi tracing tingkat namespace atau tingkat workload. Mulai versi 1.24.6.83, ASM mendukung modifikasi sumber daya Telemetry menggunakan API Kubernetes untuk mengaktifkan konfigurasi tracing tingkat namespace dan tingkat workload. Untuk informasi selengkapnya tentang konfigurasi sumber daya Telemetry, lihat Telemetry CRD.

Persentase sampling

Anda dapat menyesuaikan persentase sampling untuk tracing, yang menentukan persentase permintaan yang akan menghasilkan jejak. Nilai 0 menonaktifkan tracing.

Tag kustom

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

Jenis yang valid meliputi Fixed Value, Request Header, dan Environment Variable. Tabel berikut menjelaskan setiap jenis beserta contohnya.

Jenis

Deskripsi

Konfigurasi contoh

Fixed Value

Nilai tag ditetapkan ke string yang Anda tentukan.

  • Name: env

  • Type: Fixed Value

  • Value: prod

Request Header

Tag menggunakan nilai header permintaan tertentu. Jika header tidak ada dalam permintaan, nilai default akan digunakan.

Sebagai contoh, Anda dapat mengambil nilai tag dari header User-Agent dan menggunakan unknown sebagai nilai default jika header tidak ada.

  • Name: useragent

  • Type: Request Header

  • Value:

    • Header name: User-Agent

    • Default value: unknown

Environment Variable

Tag menggunakan nilai variabel lingkungan tertentu dari workload. Jika variabel lingkungan tidak ada dalam workload, nilai default akan digunakan.

Sebagai contoh, Anda dapat mengambil nilai tag dari variabel lingkungan ENV dan menggunakan unknown sebagai nilai default jika variabel tersebut tidak ada.

  • Name: env

  • Type: Environment Variable

  • Value:

    • Environment Variable Name: ENV

    • Default value: unknown