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
-
Login ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
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
Namespace
-
Login ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
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
Custom
-
Login ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
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 log mencakup pengaktifan atau penonaktifan output log akses, pengaturan format output log, penyesuaian format log, dan filtering log.
Output log akses
-
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.
-
-
Lihat log di output standar kontainer sidecar bidang data.
Contoh berikut menunjukkan cara melihat log akses menggunakan kubectl.
-
Jalankan perintah berikut untuk melihat log sidecar.
kubectl logs <Pod-name> -c istio-proxy --tail 1 -
Jalankan perintah berikut untuk melihat log gerbang masuk.
kubectl -n istio-system logs <ingress-gateway-Pod-name> --tail 1
-
-
(Opsional) Lihat log akses di konsol ACK.
Jika Anda menggunakan kluster ACK, Anda juga dapat melihat log akses di konsol ACK.
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Pods, klik nama Pod target, lalu klik tab Logs di bagian bawah halaman untuk melihat log akses.
Format output log
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
-
Pada bagian Log Settings, pilih field yang akan disertakan, modifikasi informasi field kustom, atau klik ikon
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-encodingdari permintaan. Atur accessLogFormat key ke accept-encoding, Type ke Request Properties, dan accessLogFormat value ke Accept-Encoding. Sebagai contoh, field bawaanauthority_forsesuai dengan variabel format%REQ(:AUTHORITY)%, danrequest_durationsesuai dengan%REQUEST_DURATION%. Untuk field kustom sepertiupstream_response_time, jika Anda memilih Response Attribute sebagai tipe atribut, variabel formatnya adalah%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%. Untuk field kustom sepertiaccept-encoding, jika Anda memilih Request Attribute sebagai tipe atribut, variabel formatnya adalah%REQ(Accept-Encoding)%. -
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=autoOutput 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: |
|
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.
-
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/prometheuspada port 15020. -
Jika dinonaktifkan, metrik tidak diekspos pada port ini.
-
-
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/prometheuspada 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 10Contoh 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:
-
Pada bagian Metric Settings, pada kolom Client-Side Metrics atau Server-Side Metrics, klik Edit dimension untuk metrik yang diaktifkan.
-
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:
-
Pada bagian Metric Settings, pada kolom Client-Side Metrics atau Server-Side Metrics, klik Edit dimension untuk metrik yang diaktifkan.
-
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
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. |
|
|
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 |
|
|
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 |
|