Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Prosesor yang dapat Anda gunakan
Bagian ini berisi informasi tentang setiap prosesor yang dapat Anda gunakan dalam transformator peristiwa log. Prosesor dapat dikategorikan menjadi parser, mutator string, mutator JSON, dan prosesor tanggal.
Prosesor tipe parser yang dapat dikonfigurasi
parseJSON
Prosesor ParseJSON mem-parsing peristiwa log JSON dan menyisipkan pasangan nilai kunci JSON yang diekstraksi di bawah tujuan. Jika Anda tidak menentukan tujuan, prosesor menempatkan pasangan kunci-nilai di bawah simpul akar. Saat menggunakan parseJSON
sebagai prosesor pertama, Anda harus mengurai seluruh peristiwa log menggunakan @message
sebagai bidang sumber. Setelah penguraian JSON awal, Anda kemudian dapat memanipulasi bidang tertentu di prosesor berikutnya.
@message
Konten asli tidak diubah, kunci baru ditambahkan ke pesan.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
sumber |
Jalur ke bidang dalam peristiwa log yang akan diuraikan. Gunakan notasi titik untuk mengakses bidang anak. Sebagai contoh, store.book . |
Tidak |
|
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
tujuan |
Bidang tujuan dari JSON yang diuraikan |
Tidak |
|
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
Contoh
Misalkan peristiwa log tertelan terlihat seperti ini:
{ "outer_key": { "inner_key": "inner_value" } }
Kemudian jika kita memiliki prosesor ParseJson ini:
[ { "parseJSON": { "destination": "new_key" } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "new_key": { "outer_key": { "inner_key": "inner_value" } } }
grok
Gunakan prosesor grok untuk mengurai dan menyusun data yang tidak terstruktur menggunakan pencocokan pola. Prosesor ini juga dapat mengekstrak bidang dari pesan log.
Bidang | Deskripsi | Diperlukan? | Default | Batas | Catatan |
---|---|---|---|---|---|
sumber |
Jalur bidang untuk menerapkan pencocokan Grok pada |
Tidak |
|
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
match |
Pola grok untuk mencocokkan dengan peristiwa log |
Ya |
Panjang maksimal: 512 Pola grok maksimum: 20 Beberapa jenis pola grok memiliki batas penggunaan individual. Setiap kombinasi dari pola berikut dapat digunakan sebanyak lima kali: {URI, URIPARAM, URIPATHPARAM, SPACE, DATA, GREEDYDATA, GREEDYDATA_MULTILINE} Pola Grok tidak mendukung konversi tipe. Untuk pola format log umum (APACHE_ACCESS_LOG, NGINX_ACCESS_LOG, SYSLOG5424), hanya pola DATA, GREEDYDATA, atau GREEDYDATA_MULTILINE yang didukung untuk disertakan setelah pola log umum. |
Struktur Pola Grok
Ini adalah struktur pola grok yang didukung:
%{PATTERN_NAME:FIELD_NAME}
-
PATTERN_NAME: Mengacu pada ekspresi reguler yang telah ditentukan sebelumnya untuk mencocokkan jenis data tertentu. Hanya pola grok yang telah ditentukan dari daftar pola grok yang didukung yang didukung. Membuat pola kustom tidak diperbolehkan.
-
FIELD_NAME: Menetapkan nama ke nilai yang diekstraksi.
FIELD_NAME
bersifat opsional, tetapi jika Anda tidak menentukan nilai ini maka data yang diekstraksi akan dihapus dari peristiwa log yang diubah. JikaFIELD_NAME
menggunakan notasi putus-putus (misalnya, “parent.child”), itu dianggap sebagai jalur JSON. -
Jenis Konversi: Konversi tipe eksplisit tidak didukung. Gunakan TypeConverter prosesor untuk mengonversi tipe data dari nilai apa pun yang diekstraksi oleh grok.
Untuk membuat ekspresi pencocokan yang lebih kompleks, Anda dapat menggabungkan beberapa pola grok. Sebanyak 20 pola grok dapat digabungkan untuk mencocokkan peristiwa log. Misalnya, kombinasi pola ini %{NUMBER:timestamp} [%{NUMBER:db}
%{IP:client_ip}:%{NUMBER:client_port}] %{GREEDYDATA:data}
dapat digunakan untuk mengekstrak bidang dari entri log lambat Redis seperti ini:
1629860738.123456 [0 127.0.0.1:6379] "SET" "key1" "value1"
Contoh Grok
Contoh 1: Gunakan grok untuk mengekstrak bidang dari log yang tidak terstruktur
Log sampel:
293750 server-01.internal-network.local OK "[Thread-000] token generated"
Transformator yang digunakan:
[ { "grok": { "match": "%{NUMBER:version} %{HOSTNAME:hostname} %{NOTSPACE:status} %{QUOTEDSTRING:logMsg}" } } ]
Output:
{ "version": "293750", "hostname": "server-01.internal-network.local", "status": "OK", "logMsg": "[Thread-000] token generated" }
Log sampel:
23/Nov/2024:10:25:15 -0900 172.16.0.1 200
Transformator yang digunakan:
[ { "grok": { "match": "%{HTTPDATE:timestamp} %{IPORHOST:clientip} %{NUMBER:response_status}" } } ]
Output:
{ "timestamp": "23/Nov/2024:10:25:15 -0900", "clientip": "172.16.0.1", "response_status": "200" }
Contoh 2: Gunakan grok dalam kombinasi dengan ParseJson untuk mengekstrak bidang dari peristiwa log JSON
Log sampel:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1" }
Transformator yang digunakan:
[ { "parseJSON": {} }, { "grok": { "source": "logMsg", "match": "%{WORD:http_method} %{NOTSPACE:request} HTTP/%{NUMBER:http_version}" } } ]
Output:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1", "http_method": "GET", "request": "/page.html", "http_version": "1.1" }
Contoh 3: Pola Grok dengan anotasi bertitik di FIELD_NAME
Log sampel:
192.168.1.1 GET /index.html?param=value 200 1234
Transformator yang digunakan:
[ { "grok": { "match": "%{IP:client.ip} %{WORD:method} %{URIPATHPARAM:request.uri} %{NUMBER:response.status} %{NUMBER:response.bytes}" } } ]
Output:
{ "client": { "ip": "192.168.1.1" }, "method": "GET", "request": { "uri": "/index.html?param=value" }, "response": { "status": "200", "bytes": "1234" } }
Pola grok yang didukung
Tabel berikut mencantumkan pola yang didukung oleh grok
prosesor.
Pola grok umum
Pola Grok | Deskripsi | Batas pola maksimum | Contoh |
---|---|---|---|
USERNAME atau USER | Cocokkan satu atau lebih karakter yang dapat mencakup huruf kecil (a-z), huruf besar (A-Z), digit (0-9), titik (.), garis bawah (_), atau tanda hubung (-) | 20 |
Masukan: Pola: Keluaran: |
INT | Cocokkan tanda plus atau minus opsional diikuti oleh satu atau lebih digit. | 20 |
Masukan: Pola: Keluaran: |
BASE10NUM | Cocokkan bilangan bulat atau angka floating-point dengan tanda opsional dan titik desimal | 20 |
Masukan: Pola: Keluaran: |
BASE16NUM | Cocokkan angka desimal dan heksadesimal dengan tanda opsional (+ atau -) dan awalan 0x opsional | 20 |
Masukan: Pola: Keluaran: |
POSINT | Cocokkan seluruh bilangan bulat positif tanpa angka nol di depan, terdiri dari satu atau lebih digit (1-9 diikuti oleh 0-9) | 20 |
Masukan: Pola: Keluaran: |
NONNEGINT | Cocokkan setiap bilangan bulat (terdiri dari satu atau lebih digit 0-9) termasuk nol dan angka dengan angka nol di depan. | 20 |
Masukan: Pola: Keluaran: |
KATA | Cocokkan seluruh kata yang terdiri dari satu atau lebih karakter kata (\ w), termasuk huruf, digit, dan garis bawah | 20 |
Masukan: Pola: Keluaran: |
NOTSPACE | Cocokkan satu atau lebih karakter non-spasi. | 5 |
Masukan: Pola: Keluaran: |
LUAR ANGKASA | Cocokkan nol atau lebih karakter spasi putih. | 5 |
Masukan: Pola: Keluaran: |
DATA | Cocokkan karakter apa pun (kecuali baris baru) nol kali atau lebih, tidak serakah. | 5 |
Masukan: Pola: Keluaran: |
DATA KESERAKAHAN | Cocokkan karakter apa pun (kecuali baris baru) nol atau lebih kali, serakah. | 5 |
Masukan: Pola: Keluaran: |
GREEDYDATA_MULTILINE | Cocokkan karakter apa pun (termasuk baris baru) nol atau lebih kali, serakah. | 1 |
Masukan:
Pola: Keluaran: |
QUOTEDSTRING | Cocokkan string yang dikutip (tanda kutip tunggal atau ganda) dengan karakter yang lolos. | 20 |
Masukan: Pola: Keluaran: |
UUID | Cocokkan format UUID standar: 8 karakter heksadesimal, diikuti oleh tiga kelompok 4 karakter heksadesimal, dan diakhiri dengan 12 karakter heksadesimal, semuanya dipisahkan oleh tanda hubung. | 20 |
Masukan: Pola: Keluaran: |
GUCI | Mencocokkan sintaks URN (Uniform Resource Name). | 20 |
Masukan: Pola: Keluaran: |
AWS pola grok
Pola | Deskripsi | Batas pola maksimum | Contoh |
---|---|---|---|
ARN |
Mencocokkan AWS Amazon Resource Names (ARNs), menangkap partisi ( |
5 |
Masukan: Pola: Keluaran: |
Pola grok jaringan
Pola Grok | Deskripsi | Batas pola maksimum | Contoh |
---|---|---|---|
CISKOMAK | Cocokkan alamat MAC dalam format heksadesimal 4-4-4. | 20 |
Masukan: Pola: Keluaran: |
WINDOWSMAC | Cocokkan alamat MAC dalam format heksadesimal dengan tanda hubung | 20 |
Masukan: Pola: Keluaran: |
COMMONMAC | Cocokkan alamat MAC dalam format heksadesimal dengan titik dua. | 20 |
Masukan: Pola: Keluaran: |
MAC | Cocokkan dengan salah satu pola grok CISCOMAC, WINDOWSMAC atau COMMONMAC | 20 |
Masukan: Pola: Keluaran: |
IPV6 | Mencocokkan IPv6 alamat, termasuk formulir terkompresi dan alamat yang IPv4 dipetakan IPv6 . | 5 |
Masukan: Pola: Keluaran: |
IPV4 | Cocokkan IPv4 alamat. | 20 |
Masukan: Pola: Keluaran: |
IP | Cocokkan IPv6 alamat yang didukung oleh% {IPv6} atau IPv4 alamat yang didukung oleh% {IPv4} | 5 |
Masukan: Pola: Keluaran: |
HOSTNAME atau HOST | Cocokkan nama domain, termasuk subdomain | 5 |
Masukan: Pola: Keluaran: |
IPORHOST | Cocokkan nama host atau alamat IP | 5 |
Masukan: Pola: Keluaran: |
HOSTPORT | Cocokkan alamat IP atau nama host yang didukung oleh pola% {IPORHOST} diikuti oleh titik dua dan nomor port, menangkap port sebagai “PORT” dalam output. | 5 |
Masukan: Pola: Keluaran: |
URIHOST | Cocokkan alamat IP atau nama host yang didukung oleh pola% {IPORHOST}, secara opsional diikuti oleh titik dua dan nomor port, menangkap port sebagai “port” jika ada. | 5 |
Masukan: Pola: Keluaran: |
Pola grok jalur
Pola Grok | Deskripsi | Batas pola maksimum | Contoh |
---|---|---|---|
UNIXPATH | Cocokkan jalur URL, berpotensi termasuk parameter kueri. | 20 |
Masukan: Pola: Keluaran: |
WINPATH | Cocokkan jalur file Windows. | 5 |
Masukan: Pola: Keluaran: |
PATH | Cocokkan dengan URL atau jalur file Windows | 5 |
Masukan: Pola: Keluaran: |
TTY | Cocokkan jalur perangkat Unix untuk terminal dan terminal semu. | 20 |
Masukan: Pola: Keluaran: |
URIPROTO | Mencocokkan huruf, secara opsional diikuti oleh karakter plus (+) dan huruf tambahan atau karakter plus (+) | 20 |
Masukan: Pola: Keluaran: |
URIPATH | Cocokkan komponen jalur URI | 20 |
Masukan: Pola: Keluaran: |
URIPARAM | Cocokkan parameter kueri URL | 5 |
Masukan: Pola: Keluaran: |
URIPATHPARAM | Cocokkan jalur URI secara opsional diikuti oleh parameter kueri | 5 |
Masukan: Pola: Keluaran: |
URI | Cocokkan URI lengkap | 5 |
Masukan: Pola: Keluaran: |
Pola grok tanggal dan waktu
Pola Grok | Deskripsi | Batas pola maksimum | Contoh |
---|---|---|---|
MONTH | Cocokkan nama bulan bahasa Inggris lengkap atau disingkat sebagai kata utuh | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
BULAN | Mencocokkan angka bulan dari 1 hingga 12, dengan nol opsional untuk bulan satu digit. | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
MONTHNUM2 | Cocokkan angka bulan dua digit dari 01 hingga 12. | 20 |
Masukan: Pola: Keluaran: |
HARI BULAN | Pertandingan hari dalam sebulan dari 1 hingga 31, dengan nol opsional. | 20 |
Masukan: Pola: Keluaran: |
YEAR | Pertandingan tahun dalam dua atau empat digit | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
DAY | Cocokkan nama hari penuh atau disingkat. | 20 |
Masukan: Pola: Keluaran: |
HOUR | Mencocokkan jam dalam format 24 jam dengan opsional nol (0) 0-23. | 20 |
Masukan: Pola: Keluaran: |
MINUTE | Menit pertandingan (00-59). | 20 |
Masukan: Pola: Keluaran: |
DETIK | Cocokkan angka yang mewakili detik (0) 0-60, secara opsional diikuti oleh titik desimal atau titik dua dan satu atau lebih digit untuk menit pecahan | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
TIME | Cocokkan format waktu dengan jam, menit, dan detik dalam format (H) H: mm: (s) s. Detik termasuk detik kabisat (0) 0-60. | 20 |
Masukan: Pola: Keluaran: |
DATE_US | Cocokkan tanggal dalam format (M) M/ (d) d/ (yy) yy atau (M) M- (d) d- (yy) yy. | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
DATE_EU | Tanggal pertandingan dalam format (d) d/ (M) M/ (yy) yy, (d) d- (M) M- (yy) yy, atau (d) d. (M) M. (yy) yy. | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
ISO8601_ZONA WAKTU | Cocokkan offset UTC 'Z' atau offset zona waktu dengan titik dua opsional dalam format [+-] (H) H (:) mm. | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
ISO8601_DETIK | Cocokkan angka yang mewakili detik (0) 0-60, secara opsional diikuti oleh titik desimal atau titik dua dan satu atau lebih digit untuk detik pecahan | 20 |
Masukan: Pola: Keluaran: |
STEMPEL ISO86 WAKTU_ 01 | Cocokkan ISO86 01 format datetime (yy) yy- (M) M- (d) dT (H) H: mm: (s) s) (Z| [+-] (H) H: mm) dengan detik dan zona waktu opsional. | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
DATE | Cocokkan tanggal dalam format AS menggunakan% {DATE_US} atau dalam format UE menggunakan% {DATE_EU} | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
DATESTAMP | Cocokkan% {DATE} diikuti oleh pola% {TIME}, dipisahkan oleh spasi atau tanda hubung. | 20 |
Masukan: Pola: Keluaran: |
TZ | Cocokkan singkatan zona waktu umum (PST, PDT, MST, MDT, CST CDT, EST, EDT, UTC). | 20 |
Masukan: Pola: Keluaran: |
DATESTAMP_ RFC822 | Tanggal dan waktu pertandingan dalam format: Hari MonthName (D) D (YY) YY (H) H:mm :( s) s Zona Waktu | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
DATESTAMP_ RFC2822 | Format RFC2822 tanggal-waktu yang cocok: Hari, (d) d (yy) yy MonthName (H) H: mm :( s) s Z| [+-] (H) H: mm | 20 |
Masukan: Pola: Keluaran: Masukan: Pola: Keluaran: |
DATESTAMP_OTHER | Tanggal dan waktu pertandingan dalam format: Hari MonthName (d) d (H) H:mm :( s) s Zona Waktu (yy) yy | 20 |
Masukan: Pola: Keluaran: |
DATESTAMP_EVENTLOG | Cocokkan format datetime ringkas tanpa pemisah: (yy) YYmm (d) d (H) Hmm (s) s | 20 |
Masukan: Pola: Keluaran: |
Pola log grok
Pola Grok | Deskripsi | Batas pola maksimum | Contoh |
---|---|---|---|
LOGLEVEL | Cocokkan tingkat log standar dalam kapitalisasi dan singkatan yang berbeda, termasuk yang berikut ini:Alert/ALERT ,,Trace/TRACE ,Debug/DEBUG ,Notice/NOTICE ,Info/INFO ,,Warn/Warning/WARN/WARNING ,Err/Error/ERR/ERROR , Crit/Critical/CRIT/CRITICAL Fatal/FATAL Severe/SEVERE Emerg/Emergency/EMERG/EMERGENCY |
20 |
Masukan: Pola: Keluaran: |
HTTPDATE | Cocokkan format tanggal dan waktu yang sering digunakan dalam file log. Format: (d) d/MonthName/(yy) yy :( H) H: mm :( s) s Zona Waktu: Cocokkan nama bulan bahasa Inggris lengkap atau disingkat (Contoh MonthName: “Jan” atau “Januari”) Zona Waktu: Cocokkan% {INT} pola grok | 20 |
Masukan: Pola: Keluaran: |
SYSLOGTIMESTAMP | Mencocokkan format tanggal dengan MonthName (d) d (H) H: mm :( s) s MonthName: Cocokkan nama bulan Inggris penuh atau disingkat (Contoh: “Jan” atau “Januari”) | 20 |
Masukan: Pola: Keluaran: |
PROG | Cocokkan nama program yang terdiri dari string huruf, digit, titik, garis bawah, garis miring ke depan, tanda persen, dan karakter tanda hubung. | 20 |
Masukan: Pola: Keluaran: |
SYSLOGPROG | Cocokkan pola grok PROG secara opsional diikuti oleh ID proses dalam tanda kurung siku. | 20 |
Masukan: Pola: Keluaran: |
SYSLOGHOST | Cocokkan dengan pola% {HOST} atau% {IP} | 5 |
Masukan: Pola: Keluaran: |
FASILITAS SYSLOG | Cocokkan prioritas syslog dalam format desimal. Nilai harus diapit dalam tanda kurung sudut (<>). | 20 |
Masukan: Pola: Keluaran: |
Pola grok log umum
Anda dapat menggunakan pola grok kustom yang telah ditentukan sebelumnya untuk mencocokkan format log Apache, NGINX dan Syslog Protocol (RFC 5424). Saat Anda menggunakan pola khusus ini, mereka harus menjadi pola pertama dalam konfigurasi pencocokan Anda, dan tidak ada pola lain yang dapat mendahuluinya. Juga, Anda dapat mengikuti mereka hanya dengan tepat satu DATA. GREEDYDATA atau pola GREEDYDATA_MULTILINE.
Pola Grok | Deskripsi | Batas pola maksimum |
---|---|---|
APACHE_ACCESS_LOG |
Cocokkan log akses Apache |
1 |
NGINX_ACCESS_LOG |
Cocokkan log akses NGINX |
1 |
SYSLOG5424 |
Pertandingan Syslog Protocol (RFC 5424) log |
1 |
Berikut ini menunjukkan contoh yang valid dan tidak valid untuk menggunakan pola format log umum ini.
"%{NGINX_ACCESS_LOG} %{DATA}" // Valid "%{SYSLOG5424}%{DATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{GREEDYDATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{SYSLOG5424}" // Invalid (multiple common log patterns used) "%{NGINX_ACCESS_LOG} %{NUMBER:num}" // Invalid (Only GREEDYDATA and DATA patterns are supported with common log patterns) "%{GREEDYDATA:logMsg} %{SYSLOG5424}" // Invalid (GREEDYDATA and DATA patterns are supported only after common log patterns)
Contoh format log umum
Contoh log Apache
Log sampel:
127.0.0.1 - - [03/Aug/2023:12:34:56 +0000] "GET /page.html HTTP/1.1" 200 1234
Transformator:
[ { "grok": { "match": "%{APACHE_ACCESS_LOG}" } } ]
Output:
{ "request": "/page.html", "http_method": "GET", "status_code": 200, "http_version": "1.1", "response_size": 1234, "remote_host": "127.0.0.1", "timestamp": "2023-08-03T12:34:56Z" }
Contoh log NGINX
Log sampel:
192.168.1.100 - Foo [03/Aug/2023:12:34:56 +0000] "GET /account/login.html HTTP/1.1" 200 42 "https://www.amazon.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
Transformator:
[ { "grok": { "match": "%{NGINX_ACCESS_LOG}" } } ]
Output:
{ "request": "/account/login.html", "referrer": "https://www.amazon.com/", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", "http_method": "GET", "status_code": 200, "auth_user": "Foo", "http_version": "1.1", "response_size": 42, "remote_host": "192.168.1.100", "timestamp": "2023-08-03T12:34:56Z" }
Contoh log Protokol Syslog (RFC 5424)
Log sampel:
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource= "Application" eventID="1011"][examplePriority@32473 class="high"]
Transformator:
[ { "grok": { "match": "%{SYSLOG5424}" } } ]
Output:
{ "pri": 165, "version": 1, "timestamp": "2003-10-11T22:14:15.003Z", "hostname": "mymachine.example.com", "app": "evntslog", "msg_id": "ID47", "structured_data": "exampleSDID@32473 iut=\"3\" eventSource= \"Application\" eventID=\"1011\"", "message": "[examplePriority@32473 class=\"high\"]" }
ParseTooCSF
Prosesor ParsetOCSF mengubah log menjadi format Open Cybersecurity
@message
Konten asli tidak diubah, kunci baru ditambahkan ke pesan.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
EventSource |
Layanan atau proses yang menghasilkan peristiwa log yang akan dikonversi dengan prosesor ini. Nilai yang valid adalah sebagai berikut:
|
Ya |
- |
- |
OCSFVersion |
Versi skema OCSF yang akan digunakan untuk peristiwa log yang diubah. Saat ini, satu-satunya nilai yang didukung adalah V1.1 |
Ya |
|
- |
Contoh
Contoh berikut mengubah log aliran Amazon VPC ke format OCSF.
[ "parseToOCSF": { eventSource: "VPCFlow", version: "V1.1" } ]
csv
Prosesor csv mem-parsing nilai yang dipisahkan koma (CSV) dari peristiwa log ke dalam kolom.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
sumber |
Jalur ke bidang dalam peristiwa log yang akan diuraikan |
Tidak |
|
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
pembatas |
Karakter yang digunakan untuk memisahkan setiap kolom dalam peristiwa log nilai dipisahkan koma asli |
Tidak |
|
Panjang maksimal: 1 |
Quotecharacter |
Karakter yang digunakan sebagai kualifikasi teks untuk satu kolom data |
Tidak |
|
Panjang maksimal: 1 |
kolom |
Daftar nama yang akan digunakan untuk kolom dalam peristiwa log yang diubah. |
Tidak |
|
Kolom CSV maksimum: 100 Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
Contoh
Misalkan bagian dari peristiwa log yang dicerna terlihat seperti ini:
'Akua Mansa',28,'New York, USA'
Misalkan kita hanya menggunakan prosesor csv:
[ "csv": { "delimiter": ",", "quoteCharacter": ":"" } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "column_1": "Akua Mansa", "column_2": "28", "column_3": "New York: USA" }
parseKeyValue
Gunakan parseKeyValueprosesor untuk mengurai bidang tertentu menjadi pasangan kunci-nilai. Anda dapat menyesuaikan prosesor untuk mengurai informasi bidang dengan opsi berikut.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
sumber |
Jalur ke bidang dalam peristiwa log yang akan diuraikan |
Tidak |
|
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
tujuan |
Bidang tujuan untuk menempatkan pasangan kunci-nilai yang diekstraksi ke dalam |
Tidak |
Panjang maksimum: 128 |
|
Fielddelimiter |
String pembatas bidang yang digunakan antara pasangan kunci-nilai dalam peristiwa log asli |
Tidak |
|
Panjang maksimum: 128 |
keyValueDelimiter |
String pembatas untuk digunakan antara kunci dan nilai di setiap pasangan dalam peristiwa log yang diubah |
Tidak |
|
Panjang maksimum: 128 |
nonMatchValue |
Nilai untuk dimasukkan ke dalam bidang nilai dalam hasil, ketika pasangan kunci-nilai tidak berhasil dibagi. |
Tidak |
Panjang maksimum: 128 |
|
KeyPrefix |
Jika Anda ingin menambahkan awalan kesemua kunci yang diubah, tentukan di sini. |
Tidak |
Panjang maksimum: 128 |
|
overwriteIfExists |
Apakah akan menimpa nilai jika kunci tujuan sudah ada |
Tidak |
|
Contoh
Ambil contoh peristiwa log berikut:
key1:value1!key2:value2!key3:value3!key4
Misalkan kita menggunakan konfigurasi prosesor berikut:
[ { "parseKeyValue": { "destination": "new_key", "fieldDelimiter": "!", "keyValueDelimiter": ":", "nonMatchValue": "defaultValue", "keyPrefix": "parsed_" } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "new_key": { "parsed_key1": "value1", "parsed_key2": "value2", "parsed_key3": "value3", "parsed_key4": "defaultValue" } }
Prosesor bawaan untuk AWS log penjual
ParseWAF
Gunakan prosesor ini untuk mengurai log AWS WAF vended, Dibutuhkan isi httpRequest.headers
dan membuat kunci JSON dari setiap nama header, dengan nilai yang sesuai. Itu juga melakukan hal yang sama untuklabels
. Transformasi ini dapat membuat query AWS WAF log jauh lebih mudah. Untuk informasi selengkapnya tentang format AWS WAF log, lihat Contoh log untuk lalu lintas ACL web.
Prosesor ini hanya menerima @message
sebagai input.
penting
Jika Anda menggunakan prosesor ini, itu harus menjadi prosesor pertama di transformator Anda.
Contoh
Ambil contoh peristiwa log berikut:
{ "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [], "httpRequest": { "clientIp": "1.1.1.1", "country": "AU", "headers": [ { "name": "Host", "value": "localhost:1989" }, { "name": "User-Agent", "value": "curl/7.61.1" }, { "name": "Accept", "value": "*/*" }, { "name": "x-stm-test", "value": "10 AND 1=1" } ], "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": [{ "name": "value" }] }
Konfigurasi prosesor adalah ini:
[ { "parseWAF": {} } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "httpRequest": { "headers": { "Host": "localhost:1989", "User-Agent": "curl/7.61.1", "Accept": "*/*", "x-stm-test": "10 AND 1=1" }, "clientIp": "1.1.1.1", "country": "AU", "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": { "name": "value" }, "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [] }
ParsePostgres
Gunakan prosesor ini untuk mengurai log Amazon RDS for PostgreSQL penjual, mengekstrak bidang, dan mengonversinya ke format JSON. Untuk informasi selengkapnya tentang RDS untuk format log PostgreSQL, lihat RDS untuk file log database PostgreSQL.
Prosesor ini hanya menerima @message
sebagai input.
penting
Jika Anda menggunakan prosesor ini, itu harus menjadi prosesor pertama di transformator Anda.
Contoh
Ambil contoh peristiwa log berikut:
2019-03-10 03:54:59 UTC:10.0.0.123(52834):postgres@logtestdb:[20175]:ERROR: column "wrong_column_name" does not exist at character 8
Konfigurasi prosesor adalah ini:
[ { "parsePostgres": {} } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "logTime": "2019-03-10 03:54:59 UTC", "srcIp": "10.0.0.123(52834)", "userName": "postgres", "dbName": "logtestdb", "processId": "20175", "logLevel": "ERROR" }
ParseCloudFront
Gunakan prosesor ini untuk mengurai log Amazon CloudFront vended, mengekstrak bidang, dan mengubahnya menjadi format JSON. Nilai bidang yang dikodekan diterjemahkan. Nilai yang merupakan bilangan bulat dan ganda diperlakukan seperti itu. Untuk informasi selengkapnya tentang format Amazon CloudFront log, lihat Mengkonfigurasi dan menggunakan log standar (log akses).
Prosesor ini hanya menerima @message
sebagai input.
penting
Jika Anda menggunakan prosesor ini, itu harus menjadi prosesor pertama di transformator Anda.
Contoh
Ambil contoh peristiwa log berikut:
2019-12-04 21:02:31 LAX1 392 192.0.2.24 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - -
Konfigurasi prosesor adalah ini:
[ { "parseCloudfront": {} } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "date": "2019-12-04", "time": "21:02:31", "x-edge-location": "LAX1", "sc-bytes": 392, "c-ip": "192.0.2.24", "cs-method": "GET", "cs(Host)": "d111111abcdef8.cloudfront.net", "cs-uri-stem": "/index.html", "sc-status": 200, "cs(Referer)": "-", "cs(User-Agent)": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "cs-uri-query": "-", "cs(Cookie)": "-", "x-edge-result-type": "Hit", "x-edge-request-id": "SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==", "x-host-header": "d111111abcdef8.cloudfront.net", "cs-protocol": "https", "cs-bytes": 23, "time-taken": 0.001, "x-forwarded-for": "-", "ssl-protocol": "TLSv1.2", "ssl-cipher": "ECDHE-RSA-AES128-GCM-SHA256", "x-edge-response-result-type": "Hit", "cs-protocol-version": "HTTP/2.0", "fle-status": "-", "fle-encrypted-fields": "-", "c-port": 11040, "time-to-first-byte": 0.001, "x-edge-detailed-result-type": "Hit", "sc-content-type": "text/html", "sc-content-len": 78, "sc-range-start": "-", "sc-range-end": "-" }
ParseRoute53
Gunakan prosesor ini untuk mengurai log Amazon Route 53 Public Data Plane vended, mengekstrak bidang, dan mengubahnya menjadi format JSON. Nilai bidang yang dikodekan diterjemahkan. Prosesor ini tidak mendukung Amazon Route 53 Resolver log.
Prosesor ini hanya menerima @message
sebagai input.
penting
Jika Anda menggunakan prosesor ini, itu harus menjadi prosesor pertama di transformator Anda.
Contoh
Ambil contoh peristiwa log berikut:
1.0 2017-12-13T08:15:50.235Z Z123412341234 example.com AAAA NOERROR TCP IAD12 192.0.2.0 198.51.100.0/24
Konfigurasi prosesor adalah ini:
[ { "parseRoute53": {} } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "version": 1.0, "queryTimestamp": "2017-12-13T08:15:50.235Z", "hostZoneId": "Z123412341234", "queryName": "example.com", "queryType": "AAAA", "responseCode": "NOERROR", "protocol": "TCP", "edgeLocation": "IAD12", "resolverIp": "192.0.2.0", "ednsClientSubnet": "198.51.100.0/24" }
ParseVPC
Gunakan prosesor ini untuk mengurai log penjual Amazon VPC, mengekstrak bidang, dan mengubahnya menjadi format JSON. Nilai bidang yang dikodekan diterjemahkan.
Prosesor ini hanya menerima @message
sebagai input.
penting
Jika Anda menggunakan prosesor ini, itu harus menjadi prosesor pertama di transformator Anda.
Contoh
Ambil contoh peristiwa log berikut:
2 123456789010 eni-abc123de 192.0.2.0 192.0.2.24 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
Konfigurasi prosesor adalah ini:
[ { "parseVPC": {} } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "version": 2, "accountId": "123456789010", "interfaceId": "eni-abc123de", "srcAddr": "192.0.2.0", "dstAddr": "192.0.2.24", "srcPort": 20641, "dstPort": 22, "protocol": 6, "packets": 20, "bytes": 4249, "start": 1418530010, "end": 1418530070, "action": "ACCEPT", "logStatus": "OK" }
Prosesor mutasi string
lowerCaseString
lowerCaseString
Prosesor mengkonversi string ke versi huruf kecil.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
denganKeys |
Daftar kunci untuk dikonversi ke huruf kecil |
Ya |
Entri maksimum: 10 |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "INNER_VALUE" } }
Konfigurasi transformator adalah ini, menggunakan lowerCaseString
denganparseJSON
:
[ { "parseJSON": {} }, { "lowerCaseString": { "withKeys":["outer_key.inner_key"] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": "inner_value" } }
upperCaseString
upperCaseString
Prosesor mengkonversi string ke versi huruf besar.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
denganKeys |
Daftar kunci untuk dikonversi ke huruf besar |
Ya |
Entri maksimum: 10 |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "inner_value" } }
Konfigurasi transformator adalah ini, menggunakan upperCaseString
denganparseJSON
:
[ { "parseJSON": {} }, { "upperCaseString": { "withKeys":["outer_key.inner_key"] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": "INNER_VALUE" } }
SplitString
splitString
Prosesor adalah jenis prosesor mutasi string yang membagi bidang menjadi array menggunakan karakter pembatas.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array harus berisi source dan delimiter bidang. |
Ya |
Entri maksimum: 10 |
|
sumber |
Kunci dari nilai bidang untuk dibagi |
Ya |
Panjang maksimum: 128 |
|
pembatas |
String pembatas untuk membagi nilai bidang |
Ya |
Panjang maksimum: 128 |
Contoh 1
Ambil contoh peristiwa log berikut:
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
Konfigurasi transformator adalah ini, menggunakan splitString
denganparseJSON
:
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": [ "inner", "value" ] } }
Contoh 2
Pembatas untuk membagi string bisa menjadi beberapa karakter panjang.
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "item1, item2, item3" } }
Konfigurasi transformator adalah sebagai berikut:
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": ", " } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": [ "item1", "item2", "item3" ] } }
SubstituteString
substituteString
Prosesor adalah jenis prosesor mutasi string yang cocok dengan nilai kunci terhadap ekspresi reguler dan menggantikan semua kecocokan dengan string pengganti.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array harus berisisource ,from , dan to bidang. |
Ya |
Entri maksimum: 10 |
|
sumber |
Kunci bidang untuk memodifikasi |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
From |
String ekspresi reguler yang akan diganti. Karakter regex khusus seperti [dan] harus diloloskan menggunakan\\ saat menggunakan tanda kutip ganda dan dengan\ saat menggunakan tanda kutip tunggal atau ketika dikonfigurasi dari. AWS Management Console Untuk informasi selengkapnya, lihat Pola Kelas Anda dapat membungkus pola |
Ya |
Panjang maksimum: 128 |
|
kepada |
String yang akan diganti untuk setiap kecocokan from Backreferences untuk menangkap grup dapat digunakan. Gunakan formulir $n untuk grup bernomor seperti $1 dan gunakan ${group_name} untuk grup bernama seperti $. {my_group} > |
Ya |
Panjang maksimum: 128 Jumlah backreferensi-referensi maksimum: 10 Jumlah maksimum referensi balik duplikat: 2 |
Contoh 1
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key1": "[]", "inner_key2": "123-345-567", "inner_key3": "A cat takes a catnap." } }
Konfigurasi transformator adalah ini, menggunakan substituteString
denganparseJSON
:
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "\\[\\]", "to": "value1" }, { "source": "outer_key.inner_key2", "from": "[0-9]{3}-[0-9]{3}-[0-9]{3}", "to": "xxx-xxx-xxx" }, { "source": "outer_key.inner_key3", "from": "cat", "to": "dog" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key1": "value1", "inner_key2": "xxx-xxx-xxx", "inner_key3": "A dog takes a dognap." } }
Contoh 2
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key1": "Tom, Dick, and Harry", "inner_key2": "arn:aws:sts::123456789012:assumed-role/MyImportantRole/MySession" } }
Konfigurasi transformator adalah ini, menggunakan substituteString
denganparseJSON
:
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "(\w+), (\w+), and (\w+)", "to": "$1 and $3" }, { "source": "outer_key.inner_key2", "from": "^arn:aws:sts::(?P<account_id>\\d{12}):assumed-role/(?P<role_name>[\\w+=,.@-]+)/(?P<role_session_name>[\\w+=,.@-]+)$", "to": "${account_id}:${role_name}:${role_session_name}" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key1": "Tom and Harry", "inner_key2": "123456789012:MyImportantRole:MySession" } }
TrimString
trimString
Prosesor menghapus spasi putih dari awal dan akhir kunci.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
denganKeys |
Daftar kunci untuk memangkas |
Ya |
Entri maksimum: 10 |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": " inner_value " } }
Konfigurasi transformator adalah ini, menggunakan trimString
denganparseJSON
:
[ { "parseJSON": {} }, { "trimString": { "withKeys":["outer_key.inner_key"] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": "inner_value" } }
JSON bermutasi prosesor
AddKeys
Gunakan addKeys
prosesor untuk menambahkan pasangan kunci-nilai baru ke peristiwa log.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array dapat berisikey ,value , dan overwriteIfExists bidang. |
Ya |
Entri maksimal: 5 |
|
kunci |
Kunci entri baru yang akan ditambahkan |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
nilai |
Nilai entri baru yang akan ditambahkan |
Ya |
Panjang maksimal: 256 |
|
overwriteIfExists |
Jika Anda menyetel ini ketrue , nilai yang ada akan ditimpa jika key sudah ada dalam acara tersebut. Nilai default-nya adalah false . |
Tidak |
false |
Tidak ada batas |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "inner_value" } }
Konfigurasi transformator adalah ini, menggunakan addKeys
denganparseJSON
:
[ { "parseJSON": {} }, { "addKeys": { "entries": [ { "source": "outer_key.new_key", "value": "new_value" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": "inner_value", "new_key": "new_value" } }
DeleteKeys
Gunakan deleteKeys
prosesor untuk menghapus bidang dari peristiwa log. Bidang ini dapat mencakup pasangan kunci-nilai.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
denganKeys |
Daftar kunci untuk dihapus. |
Ya |
Tidak ada batas |
Entri maksimal: 5 |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "inner_value" } }
Konfigurasi transformator adalah ini, menggunakan deleteKeys
denganparseJSON
:
[ { "parseJSON": {} }, { "deleteKeys": { "withKeys":["outer_key.inner_key"] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": {} }
MoveKeys
Gunakan moveKeys
prosesor untuk memindahkan kunci dari satu bidang ke bidang lainnya.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array dapat berisisource ,target , dan overwriteIfExists bidang. |
Ya |
Entri maksimal: 5 |
|
sumber |
Kunci untuk bergerak |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
target |
Kunci untuk pindah ke |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
overwriteIfExists |
Jika Anda menyetel ini ketrue , nilai yang ada akan ditimpa jika key sudah ada dalam acara tersebut. Nilai default-nya adalah false . |
Tidak |
false |
Tidak ada batas |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key1": { "inner_key1": "inner_value1" }, "outer_key2": { "inner_key2": "inner_value2" } }
Konfigurasi transformator adalah ini, menggunakan moveKeys
denganparseJSON
:
[ { "parseJSON": {} }, { "moveKeys": { "entries": [ { "source": "outer_key1.inner_key1", "target": "outer_key2" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key1": {}, "outer_key2": { "inner_key2": "inner_value2", "inner_key1": "inner_value1" } }
RenameKeys
Gunakan renameKeys
prosesor untuk mengganti nama kunci dalam peristiwa log.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array dapat berisikey ,target , dan overwriteIfExists bidang. |
Ya |
Tidak ada batas |
Entri maksimal: 5 |
kunci |
Kunci untuk mengganti nama |
Ya |
Tidak ada batas |
Panjang maksimum: 128 |
target |
Nama kunci baru |
Ya |
Tidak ada batas |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
overwriteIfExists |
Jika Anda menyetel ini ketrue , nilai yang ada akan ditimpa jika key sudah ada dalam acara tersebut. Nilai default-nya adalah false . |
Tidak |
false |
Tidak ada batas |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "inner_value" } }
Konfigurasi transformator adalah ini, menggunakan renameKeys
denganparseJSON
:
[ { "parseJSON": {} }, { "renameKeys": { "entries": [ { "key": "outer_key", "target": "new_key" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "new_key": { "inner_key": "inner_value" } }
CopyValue
Gunakan copyValue
prosesor untuk menyalin nilai dalam peristiwa log. Anda juga dapat menggunakan prosesor ini untuk menambahkan metadata ke log peristiwa, dengan menyalin nilai kunci metadata berikut ke dalam peristiwa log:,,,. @logGroupName
@logGroupStream
@accountId
@regionName
Ini diilustrasikan dalam contoh berikut.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array dapat berisisource ,target , dan overwriteIfExists bidang. |
Ya |
Entri maksimal: 5 |
|
sumber |
Kunci untuk menyalin |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
target |
Kunci untuk menyalin nilai ke |
Ya |
Tidak ada batas |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
overwriteIfExists |
Jika Anda menyetel ini ketrue , nilai yang ada akan ditimpa jika key sudah ada dalam acara tersebut. Nilai default-nya adalah false . |
Tidak |
false |
Tidak ada batas |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": { "inner_key": "inner_value" } }
Konfigurasi transformator adalah ini, menggunakan copyValue
denganparseJSON
:
[ { "parseJSON": {} }, { "copyValue": { "entries": [ { "source": "outer_key.new_key", "target": "new_key" }, { "source": "@logGroupName", "target": "log_group_name" }, { "source": "@logGroupStream", "target": "log_group_stream" }, { "source": "@accountId", "target": "account_id" }, { "source": "@regionName", "target": "region_name" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": { "inner_key": "inner_value" }, "new_key": "inner_value", "log_group_name": "myLogGroupName", "log_group_stream": "myLogStreamName", "account_id": "012345678912", "region_name": "us-east-1" }
listToMap
listToMap
Prosesor mengambil daftar objek yang berisi bidang kunci, dan mengubahnya menjadi peta kunci target.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
sumber |
Kunci dalam ProcessingEvent dengan daftar objek yang akan dikonversi ke peta |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
kunci |
Kunci bidang yang akan diekstraksi sebagai kunci di peta yang dihasilkan |
Ya |
Panjang maksimum: 128 |
|
ValueKey |
Jika ini ditentukan, nilai yang Anda tentukan dalam parameter ini akan diekstraksi dari source objek dan dimasukkan ke dalam nilai peta yang dihasilkan. Jika tidak, objek asli dalam daftar sumber akan dimasukkan ke dalam nilai peta yang dihasilkan. |
Tidak |
Panjang maksimum: 128 |
|
target |
Kunci bidang yang akan menampung peta yang dihasilkan |
Tidak |
Simpul akar |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
meratakan |
Nilai Boolean untuk menunjukkan apakah daftar akan diratakan menjadi item tunggal atau jika nilai dalam peta yang dihasilkan akan menjadi daftar. Secara default nilai-nilai untuk kunci yang cocok akan diwakili dalam array. Set |
Tidak |
false |
|
FlattenedElement |
Jika Anda mengatur flatten ketrue , gunakan flattenedElement untuk menentukan elemen mana, first ataulast , yang akan disimpan. |
Diperlukan saat |
Nilai hanya bisa first atau last |
Contoh
Ambil contoh peristiwa log berikut:
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ] }
Transformator untuk kasus penggunaan 1: flatten
adalah false
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": false } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": [ "val-a" ], "b": [ "val-b1", "val-b2" ], "c": [ "val-c" ] }
Transformator untuk kasus penggunaan 2: flatten
adalah true
dan flattenedElement
adalah first
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "first" } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b1", "c": "val-c" }
Transformator untuk kasus penggunaan 3: flatten
adalah true
dan flattenedElement
adalah last
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "last" } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b2", "c": "val-c" }
Prosesor konverter tipe data
TypeConverter
Gunakan typeConverter
prosesor untuk mengonversi jenis nilai yang terkait dengan kunci yang ditentukan ke tipe yang ditentukan. Ini adalah prosesor casting yang mengubah jenis bidang yang ditentukan. Nilai dapat diubah menjadi salah satu tipe data berikut:integer
,, double
dan. string
boolean
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
entri |
Array entri. Setiap item dalam array harus berisi key dan type bidang. |
Ya |
Entri maksimum: 10 |
|
kunci |
Kunci dengan nilai yang akan dikonversi ke tipe yang berbeda |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
jenis |
Jenis untuk dikonversi ke. Nilai yang valid adalahinteger ,double , string danboolean . |
Ya |
Contoh
Ambil contoh peristiwa log berikut:
{ "name": "value", "status": "200" }
Konfigurasi transformator adalah ini, menggunakan typeConverter
denganparseJSON
:
[ { "parseJSON": {} }, { "typeConverter": { "entries": [ { "key": "status", "type": "integer" } ] } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "name": "value", "status": 200 }
DateTimeConverter
Gunakan datetimeConverter
prosesor untuk mengonversi string datetime menjadi format yang Anda tentukan.
Bidang | Deskripsi | Diperlukan? | Default | Batas |
---|---|---|---|---|
sumber |
Kunci untuk menerapkan konversi tanggal ke. |
Ya |
Entri maksimum: 10 |
|
MatchPatterns |
Daftar pola yang cocok dengan source bidang |
Ya |
Entri maksimal: 5 |
|
target |
Bidang JSON untuk menyimpan hasilnya. |
Ya |
Panjang maksimum: 128 Kedalaman kunci bersarang maksimum: 3 |
|
TargetFormat |
Format datetime yang akan digunakan untuk data yang dikonversi di bidang target. |
Tidak |
|
Panjang maksimum:64 |
SourceTimeZone |
Zona waktu bidang sumber. Untuk daftar nilai yang mungkin, lihat Id dan Offset Zona yang Didukung Java |
Tidak |
UTC |
Panjang minimum:1 |
TargetTimeZone |
Zona waktu bidang target. Untuk daftar nilai yang mungkin, lihat Id dan Offset Zona yang Didukung Java |
Tidak |
UTC |
Panjang minimum:1 |
tempat |
Lokal bidang sumber. Untuk daftar nilai yang mungkin, lihat Metode Locale getAvailableLocales () di Java dengan Contoh |
Ya |
Panjang minimum:1 |
Contoh
Ambil contoh peristiwa log berikut:
{"german_datetime": "Samstag 05. Dezember 1998 11:00:00"}
Konfigurasi transformator adalah ini, menggunakan dateTimeConverter
denganparseJSON
:
[ { "parseJSON": {} }, { "dateTimeConverter": { "source": "german_datetime", "target": "target_1", "locale": "de", "matchPatterns": ["EEEE dd. MMMM yyyy HH:mm:ss"], "sourceTimezone": "Europe/Berlin", "targetTimezone": "America/New_York", "targetFormat": "yyyy-MM-dd'T'HH:mm:ss z" } } ]
Peristiwa log yang diubah adalah sebagai berikut.
{ "german_datetime": "Samstag 05. Dezember 1998 11:00:00", "target_1": "1998-12-05T17:00:00 MEZ" }