Menggunakan pola filter untuk mencocokkan istilah dalam peristiwa log JSON - CloudWatch Log Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan pola filter untuk mencocokkan istilah dalam peristiwa log JSON

Gunakan pola filter JSON saat log Anda terstruktur dalam format JSON. Pola-pola ini memungkinkan Anda menargetkan bidang dan nilai tertentu dalam objek JSON, menjadikannya ideal untuk:

  • Log aplikasi: Targetkan jenis peristiwa tertentu, pengguna IDs, atau kode kesalahan

  • AWS log layanan: Filter CloudTrail, Log Aliran VPC, atau log terstruktur lainnya AWS

  • Microservices: Pantau aplikasi kontainer yang menghasilkan JSON terstruktur

Misalnya, gunakan { $.eventType = "UpdateTrail" } untuk menemukan CloudTrail peristiwa tertentu, atau { $.sourceIPAddress != 123.123.* } untuk mengidentifikasi lalu lintas dari rentang IP yang tidak terduga.

Perluas bagian berikut dan telusuri tab untuk melihat contoh yang menunjukkan cara membuat pola filter JSON untuk skenario pemantauan umum, dari pola kondisi tunggal dasar hingga ekspresi gabungan yang kompleks.

Contoh berikut menunjukkan cara menggunakan pola filter dengan peristiwa log JSON dalam skenario pemantauan dan pemecahan masalah umum. Setiap contoh menyertakan sintaks pola filter dan kasus penggunaan praktis di mana Anda akan menerapkannya.

Pola-pola ini bekerja dengan log berformat JSON dari aplikasi, AWS layanan, kontainer, atau sistem kustom. Anda dapat menggunakannya dengan filter metrik untuk membuat CloudWatch metrik, filter langganan untuk merutekan log ke layanan lain, atau Live Tail untuk memantau log secara real-time.

catatan

Jika Anda menguji pola filter contoh dengan contoh peristiwa log JSON, Anda harus memasukkan log JSON contoh pada satu baris.

Contoh peristiwa log JSON untuk pengujian:

{ "eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": [ "value", "another value" ], "objectList": [ { "name": "a", "id": 1 }, { "name": "b", "id": 2 } ], "SomeObject": null, "cluster.name": "c" }
Monitor application events by type

Lacak jenis peristiwa tertentu di log aplikasi JSON Anda untuk memantau perilaku sistem.

Pola filter:

{ $.eventType = "UpdateTrail" }

Kasus penggunaan:

  • Pemantauan aplikasi: Lacak tindakan pengguna tertentu atau peristiwa sistem

  • Analisis bisnis: Hitung kemunculan jenis acara tertentu

  • Pemecahan masalah: Fokus pada operasi tertentu saat menyelidiki masalah

Pola ini bekerja dengan log JSON yang berisi bidang EventType, seperti:

  • Log aplikasi: {"eventType": "UserLogin", "userId": "123"}

  • Log sistem: {"eventType": "ConfigUpdate", "component": "database"}

  • Log API: {"eventType": "UpdateTrail", "source": "cloudtrail"}

Block suspicious IP addresses

Identifikasi lalu lintas yang tidak sesuai dengan pola alamat IP yang diharapkan untuk pemantauan keamanan.

Pola filter:

{ $.sourceIPAddress != 123.123.* }

Kasus penggunaan:

  • Pemantauan keamanan: Temukan permintaan dari rentang IP yang tidak terduga

  • Kontrol akses: Pantau lalu lintas di luar jaringan perusahaan Anda

  • Deteksi ancaman: Identifikasi potensi upaya akses yang tidak sah

Track specific application events

Pantau nilai tertentu dalam array JSON untuk melacak perilaku aplikasi dan tindakan pengguna.

Pola filter:

{ $.arrayKey[0] = "value" }

Kasus penggunaan:

  • Pelacakan perilaku pengguna: Pantau tindakan pengguna tertentu di log aplikasi

  • Penggunaan fitur: Lacak kapan fitur aplikasi tertentu digunakan

  • Analisis kesalahan: Temukan log dengan kategori kesalahan tertentu dalam array

Find events using pattern matching

Gunakan pola regex untuk menemukan peristiwa dengan pencocokan fleksibel untuk nilai bidang.

Pola filter:

{ $.eventType = %Trail% }

Kasus penggunaan:

  • Pelacakan acara fleksibel: Temukan semua acara yang berisi pola teks tertentu

  • Pemantauan API: Lacak keluarga API tanpa menentukan nama yang tepat

  • Analisis log: Cari kecocokan sebagian dalam nama atau deskripsi acara

Monitor application data with wildcards

Gunakan wildcard dan regex untuk menemukan pola tertentu dalam elemen array apa pun.

Pola filter:

{ $.arrayKey[*] = %val.{2}% }

Kasus penggunaan:

  • Validasi data: Temukan array yang berisi nilai yang cocok dengan pola tertentu

  • Pemfilteran konten: Pantau konten buatan pengguna untuk pola tertentu

  • Jaminan kualitas: Lacak kepatuhan format data di seluruh log aplikasi

Track network traffic patterns

Pantau alamat IP dalam rentang tertentu menggunakan pola regex dan wildcard.

Pola filter:

{ $.* = %111\.111\.111\.1[0-9]{1,2}% }

Kasus penggunaan:

  • Pemantauan jaringan: Lacak lalu lintas dari subnet IP tertentu

  • Analisis keamanan: Memantau akses dari rentang jaringan tertentu

  • Load balancing: Menganalisis distribusi lalu lintas di seluruh rentang IP

catatan

Kuota

Anda hanya dapat menggunakan hingga satu pemilih wildcard di pemilih properti.

Handle JSON properties with special characters

Akses properti JSON yang berisi periode atau karakter khusus lainnya dalam namanya.

Pola filter:

{ $.['cluster.name'] = "c" }

Kasus penggunaan:

  • Pemantauan Kubernetes: Lacak nama cluster di log kontainer

  • Pelacakan konfigurasi: Pantau pengaturan dengan nama properti putus-putus

  • Integrasi pihak ketiga: Menangani log dari sistem menggunakan konvensi penamaan khusus

Find null or missing values

Pantau data yang hilang atau nilai nol yang mungkin menunjukkan masalah aplikasi.

Pola filter:

{ $.SomeObject IS NULL }

Kasus penggunaan:

  • Pemantauan kualitas data: Temukan catatan dengan bidang wajib yang hilang

  • Debugging aplikasi: Lacak saat data yang diharapkan tidak ada

  • Deteksi kesalahan: Pantau respons API atau kueri basis data yang tidak lengkap

Detect missing configuration fields

Temukan log yang kehilangan bidang yang diharapkan seluruhnya, yang dapat menunjukkan masalah konfigurasi.

Pola filter:

{ $.SomeOtherObject NOT EXISTS }

Kasus penggunaan:

  • Validasi konfigurasi: Pastikan semua bidang yang diperlukan ada di log

  • Pemantauan API: Lacak permintaan atau tanggapan yang tidak lengkap

  • Pemantauan pipa data: Temukan catatan yang hilang bidang skema yang diharapkan

catatan

Variabel IS NOT dan EXISTS saat ini tidak didukung.

Gunakan ekspresi majemuk saat Anda perlu menggabungkan beberapa kondisi menggunakan operator logis AND (“&&”) dan OR (“||”). Pola-pola ini membantu Anda membuat aturan pemantauan canggih yang memerlukan beberapa kriteria untuk dipenuhi atau dipicu pada salah satu dari beberapa kondisi.

Ekspresi majemuk mendukung tanda kurung (“()”) dan mengikuti urutan operasi standar: () > && > ||. Gunakan pola ini ketika filter satu kondisi sederhana tidak cukup untuk kebutuhan pemantauan Anda.

Contoh peristiwa log JSON untuk pengujian:

{ "user": { "id": 1, "email": "John.Stiles@example.com" }, "users": [ { "id": 2, "email": "John.Doe@example.com" }, { "id": 3, "email": "Jane.Doe@example.com" } ], "actions": [ "GET", "PUT", "DELETE" ], "coordinates": [ [0, 1, 2], [4, 5, 6], [7, 8, 9] ] }
Monitor specific user actions

Lacak kapan pengguna tertentu melakukan tindakan tertentu dengan menggabungkan identifikasi pengguna dengan pemantauan tindakan.

Pola filter:

{ ($.user.id = 1) && ($.users[0].email = "John.Doe@example.com") }

Kasus penggunaan:

  • Audit keamanan: Lacak kapan pengguna admin tertentu mengakses sumber daya sensitif

  • Pemantauan kepatuhan: Pastikan pengguna tertentu hanya melakukan tindakan yang disetujui

  • Analisis perilaku pengguna: Pantau korelasi antara atribut dan tindakan pengguna

Alert on any suspicious activity

Buat pemantauan luas yang memicu ketika salah satu dari beberapa kondisi yang berkaitan terjadi.

Pola filter:

{ $.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch" && $.actions[2] = "nonmatch" }

Kasus penggunaan:

  • Pemantauan keamanan: Peringatan saat pengguna tertentu aktif ATAU ketika pola data yang tidak biasa terjadi

  • Kesehatan sistem: Pantau salah satu dari beberapa kondisi kesalahan yang berbeda

  • Peringatan fleksibel: Buat aturan catch-all untuk berbagai skenario terkait

Require multiple conditions for alerts

Kurangi positif palsu dengan mewajibkan beberapa kondisi tertentu untuk dipenuhi sebelum memicu peringatan.

Pola filter:

{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch") && $.actions[2] = "nonmatch" }

Kasus penggunaan:

  • Peringatan kepercayaan tinggi: Hanya waspada ketika beberapa indikator mencurigakan sejajar

  • Aturan bisnis yang kompleks: Pantau skenario yang membutuhkan banyak kriteria

  • Pengurangan kebisingan: Mencegah peringatan dari peristiwa tunggal yang terisolasi

catatan

Kuota

Anda hanya dapat menggunakan hingga satu pemilih wildcard di pemilih properti, dan hingga tiga pemilih wildcard dalam pola filter dengan ekspresi majemuk.

Monitor failed correlation attempts

Lacak kapan hubungan yang diharapkan antara bidang data tidak cocok, yang dapat menunjukkan masalah kualitas data.

Pola filter:

{ ($.user.id = 2 && $.users[0].email = "nonmatch") || $.actions[2] = "GET" }

Kasus penggunaan:

  • Validasi data: Temukan catatan di mana bidang terkait tidak cocok dengan pola yang diharapkan

  • Integritas sistem: Memantau kerusakan data atau masalah sinkronisasi

  • Jaminan kualitas: Lacak kapan hubungan data rusak