全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Sesuaikan log akses pada bidang data

更新时间:Jul 02, 2025

Setelah menambahkan kluster Kubernetes ke instance Service Mesh (ASM), proxy Envoy yang diterapkan di bidang data dari instance ASM dapat mencetak semua log akses kluster. ASM memungkinkan Anda menyesuaikan field log akses yang dicetak oleh proxy Envoy. Topik ini menjelaskan cara menyesuaikan field log akses.

Prasyarat

Langkah 1: Aktifkan pencatatan akses

Untuk instance ASM versi lebih lama dari 1.17.2.35

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

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih ASM Instance > Base Information.

  3. Di pojok kanan atas halaman yang muncul, klik Settings.

  4. Di panel Settings Update, pilih Enable access logging and print it to container stdout dan klik OK.

    Secara default, kontainer istio-proxy mencetak log yang berisi field berikut. Jika pencatatan akses dinonaktifkan, kontainer istio-proxy tidak akan mencetak log akses dalam format JSON.

    Tampilkan detail log

    
        "authority_for":"%REQ(:AUTHORITY)%",
        "bytes_received":"%BYTES_RECEIVED%",
        "bytes_sent":"%BYTES_SENT%",
        "downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%",
        "downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%",
        "duration":"%DURATION%",
        "istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%",
        "method":"%REQ(:METHOD)%",
        "path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
        "protocol":"%PROTOCOL%",
        "request_id":"%REQ(X-REQUEST-ID)%",
        "requested_server_name":"%REQUESTED_SERVER_NAME%",
        "response_code":"%RESPONSE_CODE%",
        "response_flags":"%RESPONSE_FLAGS%",
        "route_name":"%ROUTE_NAME%",
        "start_time":"%START_TIME%",
        "trace_id":"%REQ(X-B3-TRACEID)%",
        "upstream_cluster":"%UPSTREAM_CLUSTER%",
        "upstream_host":"%UPSTREAM_HOST%",
        "upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%",
        "upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
        "upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%",
        "user_agent":"%REQ(USER-AGENT)%",
        "x_forwarded_for":"%REQ(X-FORWARDED-FOR)%"

Untuk instance ASM versi 1.17.2.35 atau lebih baru

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

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

  3. Di halaman Observability Settings, klik tab Global, Namespace, atau Custom.

    • Jika Anda memilih tab Namespace, klik Create dan pilih namespace dari daftar drop-down Namespace.

    • Jika Anda memilih tab Custom, klik Create, pilih namespace dari daftar drop-down Namespace, dan kemudian atur Name dan Matching Label.

  4. Di bagian Log Settings, aktifkan saklar Enable Log Output dan klik submit.

    Setelah mengaktifkan saklar tersebut, sidecar proxy atau gateway pada bidang data dari instance ASM akan mencetak log akses ke output standar kontainer. ASM juga mendukung fitur filter log. Untuk informasi lebih lanjut, lihat Filter log di topik "Konfigurasikan Pengaturan Observabilitas".

  5. Lihat log di aliran output standar kontainer sidecar pada bidang data.

    Contoh berikut menunjukkan cara menggunakan kubectl untuk melihat log akses.

    1. Jalankan perintah berikut untuk melihat log proxy sidecar:

      kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1

      Tampilkan 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 gateway masuk:

      kubectl -n istio-system logs istio-ingressgateway-6cff9b6b58-r**** --tail 1

      Tampilkan 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"
      }
  6. (Opsional) Lihat log akses di konsol Container Service for Kubernetes (ACK).

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

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

    2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih Workloads > Pods.

    3. Di halaman Pods, klik nama pod yang diinginkan dan klik tab Logs untuk melihat log akses.

Untuk informasi lebih lanjut tentang log, lihat Konfigurasikan Pengaturan Observabilitas dan Aktifkan pengumpulan log bidang kontrol dan peringatan berbasis log di instance ASM versi 1.17.2.35 atau lebih baru.

Langkah 2: Sesuaikan field log akses

Untuk instance ASM versi lebih lama dari 1.17.2.35

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

  2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih ASM Instance > Base Information.

  3. Pada bagian Config Info di halaman yang muncul, klik Update Access Log Format di samping opsi Enable access logging and print it to container stdout.

  4. Di kotak dialog Update Access Log Format, tambahkan field dengan mengatur parameter accessLogFormat key menjadi my_custom_key dan parameter accessLogFormat value menjadi %REQ(end-user)%. Kemudian, klik OK.

    Dalam contoh ini, my_custom_key digunakan untuk mengekstrak nilai field header end-user dalam permintaan HTTP untuk aplikasi sampel Bookinfo dan kemudian menyisipkan nilai tersebut ke dalam log akses. Anda dapat memilih field opsional yang disediakan oleh ASM atau menambahkan field kustom. Gambar berikut menunjukkan field opsional dan contoh field kustom. Kemudian, log akses akan dicetak dalam format kustom.可选字段

Untuk instance ASM versi 1.17.2.35 atau lebih baru

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

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

  3. Di halaman Observability Settings, klik tab Global, Namespace, atau Custom.

    • Jika Anda memilih tab Namespace, klik Create dan pilih namespace dari daftar drop-down Namespace.

    • Jika Anda memilih tab Custom, klik Create, pilih namespace dari daftar drop-down Namespace, dan kemudian atur Name dan Matching Label.

  4. Di bagian Log Settings, pilih field yang diinginkan atau modifikasi informasi field kustom. Anda juga dapat mengklik ikon 增加.png di sebelah kanan metrik log di bagian bawah untuk menambahkan field log. Kemudian, klik submit.

    Anda hanya dapat menyesuaikan field log akses jika Anda mengaktifkan Aktifkan Output Log. Di bagian Log Format, field log yang dipilih secara default adalah wajib dan tidak dapat dimodifikasi. Anda dapat memilih untuk mendapatkan nilai field log dari header permintaan, header respons, atau nilai bawaan Envoy.

    Contoh berikut mengatur accessLogFormat key menjadi accept-encoding, Type menjadi Request Properties, dan accessLogFormat value menjadi Accept-Encoding untuk mencetak header accept-encoding dalam permintaan.日志格式.png

  5. Jalankan perintah berikut untuk melihat log komponen pada bidang data instance ASM:

    kubectl logs httpbin-5c5944c58c-w**** -c istio-proxy --tail 1|grep accept-encoding --color=auto

    Tampilkan 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"
    }

    Nilai header accept-encoding yang ditambahkan di sublangkah 4 dicetak dalam log akses. Untuk informasi lebih lanjut tentang log, lihat Konfigurasikan Pengaturan Observabilitas dan Aktifkan pengumpulan log bidang kontrol dan peringatan berbasis log di instance ASM versi 1.17.2.35 atau lebih baru.

Langkah 3: Lihat log akses

Setelah mengaktifkan pencatatan akses dan menyesuaikan field log akses, kontainer sidecar yang memulai permintaan akan mencetak log akses dalam format kustom.

  1. Masukkan Alamat IP gateway masuk:productpage di bilah alamat browser Anda untuk mengakses aplikasi Productpage.

  2. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  3. Pada halaman Clusters, cari kluster yang ingin dikelola dan klik nama klusternya. Di panel sisi kiri, pilih Workloads > Deployments.

  4. Di bagian atas halaman Deployments, pilih default dari daftar drop-down Namespace dan klik Details di kolom Actions untuk aplikasi productpage-v1.

  5. Di halaman detail aplikasi, klik tab Logs dan atur parameter Container menjadi istio-proxy.

    Log berikut ditampilkan di kotak output log. Log tersebut berisi field yang menentukan pengguna akhir bernama jason. Ini menunjukkan bahwa konfigurasi kustom telah diterapkan.日志

Field durasi

Dalam Service Mesh, "upstream" menunjukkan penerima permintaan, dan "downstream" menunjukkan pengirim permintaan. Sebagai contoh, ketika layanan A mengirimkan permintaan ke layanan B, layanan A adalah layanan downstream, dan layanan B adalah layanan upstream.

Field

Nilai

Deskripsi

duration

$DURATION%

  • Untuk permintaan HTTP, field ini menunjukkan rentang waktu dari saat proxy sidecar atau gateway mulai membaca permintaan hingga saat proxy sidecar atau gateway mengirim byte terakhir respons ke layanan downstream. Ini mewakili durasi yang diperlukan oleh proxy sidecar atau gateway untuk memproses permintaan.

  • Untuk permintaan TCP, field ini menunjukkan periode waktu selama proxy sidecar atau gateway terhubung ke layanan downstream.

request_duration

%REQUEST_DURATION%

  • Untuk permintaan HTTP, field ini menunjukkan waktu yang dikonsumsi untuk membaca seluruh permintaan dari layanan downstream. Permintaan lengkap mencakup header permintaan dan body permintaan. Jika nilai field ini lebih besar dari yang diharapkan, periksa item berikut:

    • Apakah kualitas jaringan baik dan bandwidth cukup

    • Apakah layanan upstream atau downstream memiliki bottleneck I/O

  • Untuk permintaan TCP, field ini tidak tersedia, dan nilainya adalah tanda hubung (-).

request_tx_duration

%REQUEST_TX_DURATION%

  • Untuk permintaan HTTP, field ini menunjukkan rentang waktu dari saat permintaan dimulai hingga saat byte terakhir permintaan dikirim ke layanan upstream. Jika nilai field ini lebih besar dari yang diharapkan, periksa item berikut:

    • Apakah kualitas jaringan baik dan bandwidth cukup

    • Apakah layanan upstream atau downstream memiliki bottleneck I/O

  • Untuk permintaan TCP, field ini tidak tersedia, dan nilainya adalah tanda hubung (-).

response_duration

%RESPONSE_DURATION%

  • Untuk permintaan HTTP, field ini menunjukkan rentang waktu dari saat permintaan dimulai hingga saat byte pertama respons dibaca dari layanan upstream. Jika nilai field ini lebih besar dari yang diharapkan dan nilai request_tx_duration sesuai harapan, periksa apakah layanan upstream memiliki bottleneck kinerja.

  • Untuk permintaan TCP, field ini tidak tersedia, dan nilainya adalah tanda hubung (-).

response_tx_duration

%RESPONSE_TX_DURATION%

  • Untuk permintaan HTTP, field ini menunjukkan rentang waktu dari saat byte pertama respons dibaca dari layanan upstream hingga saat byte terakhir respons dikirim ke layanan downstream. Jika nilai field ini lebih besar dari yang diharapkan, periksa item berikut:

    • Apakah kualitas jaringan baik dan bandwidth cukup

    • Apakah layanan upstream atau downstream memiliki bottleneck I/O

  • Untuk permintaan TCP, field ini tidak tersedia, dan nilainya adalah tanda hubung (-).

upstream_service_time (untuk proxy sidecar)

%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%

Dalam log akses proxy sidecar atau gateway, field ini menunjukkan waktu pemrosesan layanan upstream dan waktu yang dikonsumsi dalam komunikasi dengan layanan upstream. Jika nilai field ini lebih besar dari yang diharapkan, periksa item berikut:

  • Apakah performa pemrosesan aplikasi upstream sesuai harapan.

  • Apakah latensi jaringan dan bandwidth untuk komunikasi dengan layanan upstream sesuai harapan.

upstream_response_time (untuk gateway)

Catatan

Untuk permintaan HTTP dengan body yang Content-Length-nya lebih besar dari 0, permintaan tersebut dibaca dan dikirim secara bersamaan ke layanan upstream alih-alih dikirim setelah selesai dibaca. Dalam hal ini, jika node saat ini membaca permintaan secara lambat dari layanan downstream, layanan upstream dari node saat ini akan membutuhkan waktu lebih lama untuk membaca permintaan.

Operasi terkait

Anda juga dapat menggunakan Layanan Log Sederhana untuk mengumpulkan log akses pada bidang data. Untuk informasi lebih lanjut, lihat Konfigurasikan fitur pembuatan dan pengumpulan log akses gateway ASM.