Log akses memungkinkan Anda memantau status operasional bisnis dan bidang data plane Service Mesh (ASM). Dalam skenario dengan banyak permintaan akses, Anda dapat menyaring log berdasarkan kondisi tertentu untuk mengurangi overhead kinerja proxy sisi dan fokus pada konten log utama. ASM memungkinkan Anda menggunakan Common Expression Language (CEL) untuk mengonfigurasi aturan penyaringan log. Topik ini menjelaskan cara menggunakan CEL untuk mengonfigurasi aturan penyaringan log akses ASM serta bidang yang didukung oleh CEL.
Aturan Penyaringan
Jika ekspresi CEL dievaluasi menjadi true, log akses dikembalikan. Jika tidak, log akses tidak dikembalikan.
Contoh
Contoh 1: Kembalikan hanya log akses dengan kode status respons 400 atau lebih tinggi
response.code >= 400response.code menunjukkan kode status HTTP dari respons HTTP. Jika kode status HTTP dari respons tersebut lebih besar dari atau sama dengan 400, ekspresi dievaluasi menjadi true dan log akses dari permintaan tersebut dikembalikan.
Contoh 2: Kembalikan hanya log akses yang berisi substring login di URI permintaan
request.url_path.contains('login')request.url_pathmenunjukkan jalur permintaan HTTP tanpa string query.containsadalah metode string standar CEL yang mengembalikan nilai Boolean, digunakan untuk menentukan apakah sebuah string berisi substring tertentu. Jikarequest.url_pathberisi substringlogin, ekspresi dievaluasi menjadi true dan log akses dari permintaan tersebut dikembalikan.
Contoh 3: Gunakan AND logis dan OR logis untuk membuat penilaian berdasarkan beberapa kondisi
AND Logis (&&)
request.url_path.contains('login') && request.headers['x-user-type'] == 'dev'request.url_pathmenunjukkan jalur permintaan HTTP tanpa string query.request.headersmenunjukkan header permintaan dalam permintaan. Tipe nilainya adalah map<string, string>.Jika
request.url_pathberisilogin, permintaan memiliki header permintaanx-user-type, dan nilai header tersebut adalahdev, log akses dari permintaan tersebut dikembalikan.
OR Logis (||)
request.url_path.contains('login') || request.url_path.contains('logout')request.url_pathmenunjukkan jalur permintaan HTTP tanpa string query.Jika
request.url_pathberisiloginataulogout, log akses dari permintaan tersebut dikembalikan.
Bidang yang Didukung oleh CEL
Atribut Permintaan
Atribut | Tipe | Deskripsi |
request.path | string | Bagian jalur URL HTTP dengan string query. |
request.url_path | string | Bagian jalur URL HTTP tanpa string query. |
request.host | string | Bagian nama host URL HTTP. |
request.scheme | string | Bagian skema URL HTTP, seperti HTTP atau HTTPS. |
request.method | string | Metode permintaan, seperti GET atau POST. |
request.headers | map<string, string> | Peta semua header permintaan. |
request.referer | string | Nilai header Refer dalam permintaan. |
request.useragent | string | Nilai header User-Agent dalam permintaan. |
request.time | timestamp | Timestamp ketika byte pertama permintaan diterima. |
request.id | string | Nilai header x-request-id dalam permintaan. |
request.protocol | string | Protokol permintaan, seperti HTTP/1.0, HTTP/1, HTTP/2, atau HTTP/3. |
request.query | string | String query dalam URL, seperti name1=value1&name2=value2. |
request.duration | duration | Total durasi permintaan. |
request.size | int | Ukuran badan permintaan. Jika header Content-Length ada, nilainya digunakan. |
request.total_size | int | Ukuran permintaan lengkap yang mencakup header permintaan. |
Atribut Respons
Atribut | Tipe | Deskripsi |
response.code | int | Kode status HTTP dari respons. |
response.code_details | string | Deskripsi kode status respons. |
response.flags | int | Informasi tambahan, selain kode status HTTP dari respons, yang dienkripsi sebagai Bit Vector. |
response.grpc_status | int | Kode status GRPC dari respons. |
response.headers | map<string, string> | Peta semua header respons. |
response.trailers | map<string, string> | Peta semua Trailers dalam respons. |
response.size | int | Ukuran badan respons. |
response.total_size | int | Ukuran respons lengkap yang mencakup header respons. |
Atribut koneksi downstream
Atribut | Tipe | Deskripsi |
source.address | string | Alamat klien downstream. |
source.port | int | Port klien downstream. |
destination.address | string | Alamat tujuan koneksi downstream. |
destination.port | int | Port tujuan koneksi downstream. |
connection.id | uint | ID koneksi downstream. |
connection.mtls | bool | Menentukan apakah akan mengaktifkan TLS pada koneksi downstream dan apakah koneksi downstream membawa sertifikat. |
connection.requested_server_name | string | Nama server yang diminta oleh koneksi TLS downstream. |
connection.tls_version | string | Versi TLS koneksi downstream. |
connection.subject_local_certificate | string | Bidang Subject dari sertifikat server yang digunakan untuk koneksi downstream. |
connection.subject_peer_certificate | string | Bidang Subject dari sertifikat klien yang digunakan untuk koneksi downstream. |
connection.dns_san_local_certificate | string | Entri DNS pertama dalam bidang SAN dari sertifikat server yang digunakan untuk koneksi TLS downstream. |
connection.dns_san_peer_certificate | string | Entri DNS pertama dalam bidang SAN dari sertifikat klien yang digunakan untuk koneksi TLS downstream. |
connection.uri_san_local_certificate | string | Entri URI pertama dalam bidang SAN dari sertifikat server yang digunakan untuk koneksi TLS downstream. |
connection.uri_san_peer_certificate | string | Entri URI pertama dalam bidang SAN dari sertifikat klien yang digunakan untuk koneksi TLS downstream. |
connection.sha256_peer_certificate_digest | string | Hash string SHA256 dari sertifikat klien yang digunakan untuk koneksi TLS downstream. |
connection.transport_failure_reason | string | Alasan kegagalan transmisi, seperti validasi sertifikat gagal. |
Atribut koneksi upstream
Atribut | Tipe | Deskripsi |
upstream.address | string | Alamat tujuan koneksi upstream. |
upstream.port | int | Port tujuan koneksi upstream. |
upstream.tls_version | string | Versi TLS koneksi upstream. |
upstream.subject_local_certificate | string | Nilai bidang Subject dari sertifikat klien yang digunakan untuk koneksi upstream. |
upstream.subject_peer_certificate | string | Nilai bidang Subject dari sertifikat server yang digunakan untuk koneksi upstream. |
upstream.dns_san_local_certificate | string | Entri DNS pertama dalam bidang SAN dari sertifikat klien yang digunakan untuk koneksi upstream. |
upstream.dns_san_peer_certificate | string | Entri DNS pertama dalam bidang SAN dari sertifikat server yang digunakan untuk koneksi upstream. |
upstream.uri_san_local_certificate | string | Entri URI pertama dalam bidang SAN dari sertifikat klien yang digunakan untuk koneksi upstream. |
upstream.uri_san_peer_certificate | string | Entri URI pertama dalam bidang SAN dari sertifikat server yang digunakan untuk koneksi upstream. |
upstream.sha256_peer_certificate_digest | string | Hash string SHA256 dari sertifikat server yang digunakan untuk koneksi TLS downstream. |
upstream.local_address | string | Alamat lokal klien upstream. |
upstream.transport_failure_reason | string | Alasan kegagalan transmisi upstream, seperti validasi sertifikat gagal. |