All Products
Search
Document Center

Alibaba Cloud Service Mesh:Gunakan CEL untuk mengonfigurasi aturan penyaringan log akses

Last Updated:Jun 28, 2025

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 >= 400

response.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_path menunjukkan jalur permintaan HTTP tanpa string query.

  • contains adalah metode string standar CEL yang mengembalikan nilai Boolean, digunakan untuk menentukan apakah sebuah string berisi substring tertentu. Jika request.url_path berisi substring login, 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_path menunjukkan jalur permintaan HTTP tanpa string query.

    • request.headers menunjukkan header permintaan dalam permintaan. Tipe nilainya adalah map<string, string>.

    • Jika request.url_path berisi login, permintaan memiliki header permintaan x-user-type, dan nilai header tersebut adalah dev, log akses dari permintaan tersebut dikembalikan.

  • OR Logis (||)

    request.url_path.contains('login') || request.url_path.contains('logout')
    • request.url_path menunjukkan jalur permintaan HTTP tanpa string query.

    • Jika request.url_path berisi login atau logout, 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.