Prosesor yang dapat Anda gunakan - CloudWatch Log Amazon

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.

@messageKonten 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

@message

Panjang maksimum: 128

Kedalaman kunci bersarang maksimum: 3

tujuan

Bidang tujuan dari JSON yang diuraikan

Tidak

Parent JSON node

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

@message

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.

Lihat semua pola Grok yang didukung

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_NAMEbersifat opsional, tetapi jika Anda tidak menentukan nilai ini maka data yang diekstraksi akan dihapus dari peristiwa log yang diubah. Jika FIELD_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: user123.name-TEST

Pola: %{USERNAME:name}

Keluaran: {"name": "user123.name-TEST"}

INT Cocokkan tanda plus atau minus opsional diikuti oleh satu atau lebih digit. 20

Masukan: -456

Pola: %{INT:num}

Keluaran: {"num": "-456"}

BASE10NUM Cocokkan bilangan bulat atau angka floating-point dengan tanda opsional dan titik desimal 20

Masukan: -0.67

Pola: %{BASE10NUM:num}

Keluaran: {"num": "-0.67"}

BASE16NUM Cocokkan angka desimal dan heksadesimal dengan tanda opsional (+ atau -) dan awalan 0x opsional 20

Masukan: +0xA1B2

Pola: %{BASE16NUM:num}

Keluaran: {"num": "+0xA1B2"}

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: 123

Pola: %{POSINT:num}

Keluaran: {"num": "123"}

NONNEGINT Cocokkan setiap bilangan bulat (terdiri dari satu atau lebih digit 0-9) termasuk nol dan angka dengan angka nol di depan. 20

Masukan: 007

Pola: %{NONNEGINT:num}

Keluaran: {"num": "007"}

KATA Cocokkan seluruh kata yang terdiri dari satu atau lebih karakter kata (\ w), termasuk huruf, digit, dan garis bawah 20

Masukan: user_123

Pola: %{WORD:user}

Keluaran: {"user": "user_123"}

NOTSPACE Cocokkan satu atau lebih karakter non-spasi. 5

Masukan: hello_world123

Pola: %{NOTSPACE:msg}

Keluaran: {"msg": "hello_world123"}

LUAR ANGKASA Cocokkan nol atau lebih karakter spasi putih. 5

Masukan: " "

Pola: %{SPACE:extra}

Keluaran: {"extra": " "}

DATA Cocokkan karakter apa pun (kecuali baris baru) nol kali atau lebih, tidak serakah. 5

Masukan: abc def ghi

Pola: %{DATA:x} %{DATA:y}

Keluaran: {"x": "abc", "y": "def ghi"}

DATA KESERAKAHAN Cocokkan karakter apa pun (kecuali baris baru) nol atau lebih kali, serakah. 5

Masukan: abc def ghi

Pola: %{GREEDYDATA:x} %{GREEDYDATA:y}

Keluaran: {"x": "abc def", "y": "ghi"}

GREEDYDATA_MULTILINE Cocokkan karakter apa pun (termasuk baris baru) nol atau lebih kali, serakah. 1

Masukan:

abc

def

ghi

Pola: %{GREEDYDATA_MULTILINE:data}

Keluaran: {"data": "abc\ndef\nghi"}

QUOTEDSTRING Cocokkan string yang dikutip (tanda kutip tunggal atau ganda) dengan karakter yang lolos. 20

Masukan: "Hello, world!"

Pola: %{QUOTEDSTRING:msg}

Keluaran: {"msg": "Hello, world!"}

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: 550e8400-e29b-41d4-a716-446655440000

Pola: %{UUID:id}

Keluaran: {"id": "550e8400-e29b-41d4-a716-446655440000"}

GUCI Mencocokkan sintaks URN (Uniform Resource Name). 20

Masukan: urn:isbn:0451450523

Pola: %{URN:urn}

Keluaran: {"urn": "urn:isbn:0451450523"}

AWS pola grok

Pola Deskripsi Batas pola maksimum Contoh

ARN

Mencocokkan AWS Amazon Resource Names (ARNs), menangkap partisi (aws,aws-cn, atauaws-us-gov), layanan, Wilayah, ID akun, dan hingga 5 pengidentifikasi sumber daya hierarkis yang dipisahkan oleh garis miring. Itu tidak akan cocok dengan informasi ARNs yang hilang di antara titik dua.

5

Masukan: arn:aws:iam:us-east-1:123456789012:user/johndoe

Pola: %{ARN:arn}

Keluaran: {"arn": "arn:aws:iam:us-east-1:123456789012:user/johndoe"}

Pola grok jaringan

Pola Grok Deskripsi Batas pola maksimum Contoh
CISKOMAK Cocokkan alamat MAC dalam format heksadesimal 4-4-4. 20

Masukan: 0123.4567.89AB

Pola: %{CISCOMAC:MacAddress}

Keluaran: {"MacAddress": "0123.4567.89AB"}

WINDOWSMAC Cocokkan alamat MAC dalam format heksadesimal dengan tanda hubung 20

Masukan: 01-23-45-67-89-AB

Pola: %{WINDOWSMAC:MacAddress}

Keluaran: {"MacAddress": "01-23-45-67-89-AB"}

COMMONMAC Cocokkan alamat MAC dalam format heksadesimal dengan titik dua. 20

Masukan: 01:23:45:67:89:AB

Pola: %{COMMONMAC:MacAddress}

Keluaran: {"MacAddress": "01:23:45:67:89:AB"}

MAC Cocokkan dengan salah satu pola grok CISCOMAC, WINDOWSMAC atau COMMONMAC 20

Masukan: 01:23:45:67:89:AB

Pola: %{MAC:m1}

Keluaran: {"m1":"01:23:45:67:89:AB"}

IPV6 Mencocokkan IPv6 alamat, termasuk formulir terkompresi dan alamat yang IPv4 dipetakan IPv6 . 5

Masukan: 2001:db8:3333:4444:5555:6666:7777:8888

Pola: %{IPV6:ip}

Keluaran: {"ip": "2001:db8:3333:4444:5555:6666:7777:8888"}

IPV4 Cocokkan IPv4 alamat. 20

Masukan: 192.168.0.1

Pola: %{IPV4:ip}

Keluaran: {"ip": "192.168.0.1"}

IP Cocokkan IPv6 alamat yang didukung oleh% {IPv6} atau IPv4 alamat yang didukung oleh% {IPv4} 5

Masukan: 192.168.0.1

Pola: %{IP:ip}

Keluaran: {"ip": "192.168.0.1"}

HOSTNAME atau HOST Cocokkan nama domain, termasuk subdomain 5

Masukan: server-01.internal-network.local

Pola: %{HOST:host}

Keluaran: {"host": "server-01.internal-network.local"}

IPORHOST Cocokkan nama host atau alamat IP 5

Masukan: 2001:db8:3333:4444:5555:6666:7777:8888

Pola: %{IPORHOST:ip}

Keluaran: {"ip": "2001:db8:3333:4444:5555:6666:7777:8888"}

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: 192.168.1.1:8080

Pola: %{HOSTPORT:ip}

Keluaran: {"ip":"192.168.1.1:8080","PORT":"8080"}

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: example.com:443 10.0.0.1

Pola: %{URIHOST:host} %{URIHOST:ip}

Keluaran: {"host":"example.com:443","port":"443","ip":"10.0.0.1"}

Pola grok jalur

Pola Grok Deskripsi Batas pola maksimum Contoh
UNIXPATH Cocokkan jalur URL, berpotensi termasuk parameter kueri. 20

Masukan: /search?q=regex

Pola: %{UNIXPATH:path}

Keluaran: {"path":"/search?q=regex"}

WINPATH Cocokkan jalur file Windows. 5

Masukan: C:\Users\John\Documents\file.txt

Pola: %{WINPATH:path}

Keluaran: {"path": "C:\\Users\\John\\Documents\\file.txt"}

PATH Cocokkan dengan URL atau jalur file Windows 5

Masukan: /search?q=regex

Pola: %{PATH:path}

Keluaran: {"path":"/search?q=regex"}

TTY Cocokkan jalur perangkat Unix untuk terminal dan terminal semu. 20

Masukan: /dev/tty1

Pola: %{TTY:path}

Keluaran: {"path":"/dev/tty1"}

URIPROTO Mencocokkan huruf, secara opsional diikuti oleh karakter plus (+) dan huruf tambahan atau karakter plus (+) 20

Masukan: web+transformer

Pola: %{URIPROTO:protocol}

Keluaran: {"protocol":"web+transformer"}

URIPATH Cocokkan komponen jalur URI 20

Masukan: /category/sub-category/product_name

Pola: %{URIPATH:path}

Keluaran: {"path":"/category/sub-category/product_name"}

URIPARAM Cocokkan parameter kueri URL 5

Masukan: ?param1=value1&param2=value2

Pola: %{URIPARAM:url}

Keluaran: {"url":"?param1=value1&param2=value2"}

URIPATHPARAM Cocokkan jalur URI secara opsional diikuti oleh parameter kueri 5

Masukan: /category/sub-category/product?id=12345&color=red

Pola: %{URIPATHPARAM:path}

Keluaran: {"path":"/category/sub-category/product?id=12345&color=red"}

URI Cocokkan URI lengkap 5

Masukan: https://user:password@example.com/path/to/resource?param1=value1&param2=value2

Pola: %{URI:uri}

Keluaran: {"path":"https://user:password@example.com/path/to/resource?param1=value1&param2=value2"}

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: Jan

Pola: %{MONTH:month}

Keluaran: {"month":"Jan"}

Masukan: January

Pola: %{MONTH:month}

Keluaran: {"month":"January"}

BULAN Mencocokkan angka bulan dari 1 hingga 12, dengan nol opsional untuk bulan satu digit. 20

Masukan: 5

Pola: %{MONTHNUM:month}

Keluaran: {"month":"5"}

Masukan: 05

Pola: %{MONTHNUM:month}

Keluaran: {"month":"05"}

MONTHNUM2 Cocokkan angka bulan dua digit dari 01 hingga 12. 20

Masukan: 05

Pola: %{MONTHNUM2:month}

Keluaran: {"month":"05"}

HARI BULAN Pertandingan hari dalam sebulan dari 1 hingga 31, dengan nol opsional. 20

Masukan: 31

Pola: %{MONTHDAY:monthDay}

Keluaran: {"monthDay":"31"}

YEAR Pertandingan tahun dalam dua atau empat digit 20

Masukan: 2024

Pola: %{YEAR:year}

Keluaran: {"year":"2024"}

Masukan: 24

Pola: %{YEAR:year}

Keluaran: {"year":"24"}

DAY Cocokkan nama hari penuh atau disingkat. 20

Masukan: Tuesday

Pola: %{DAY:day}

Keluaran: {"day":"Tuesday"}

HOUR Mencocokkan jam dalam format 24 jam dengan opsional nol (0) 0-23. 20

Masukan: 22

Pola: %{HOUR:hour}

Keluaran: {"hour":"22"}

MINUTE Menit pertandingan (00-59). 20

Masukan: 59

Pola: %{MINUTE:min}

Keluaran: {"min":"59"}

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: 3

Pola: %{SECOND:second}

Keluaran: {"second":"3"}

Masukan: 30.5

Pola: %{SECOND:minSec}

Keluaran: {"minSec":"30.5"}

Masukan: 30:5

Pola: %{SECOND:minSec}

Keluaran: {"minSec":"30:5"}

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: 09:45:32

Pola: %{TIME:time}

Keluaran: {"time":"09:45:32"}

DATE_US Cocokkan tanggal dalam format (M) M/ (d) d/ (yy) yy atau (M) M- (d) d- (yy) yy. 20

Masukan: 11/23/2024

Pola: %{DATE_US:date}

Keluaran: {"date":"11/23/2024"}

Masukan: 1-01-24

Pola: %{DATE_US:date}

Keluaran: {"date":"1-01-24"}

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: 23/11/2024

Pola: %{DATE_EU:date}

Keluaran: {"date":"23/11/2024"}

Masukan: 1.01.24

Pola: %{DATE_EU:date}

Keluaran: {"date":"1.01.24"}

ISO8601_ZONA WAKTU Cocokkan offset UTC 'Z' atau offset zona waktu dengan titik dua opsional dalam format [+-] (H) H (:) mm. 20

Masukan: +05:30

Pola: %{ISO8601_TIMEZONE:tz}

Keluaran: {"tz":"+05:30"}

Masukan: -530

Pola: %{ISO8601_TIMEZONE:tz}

Keluaran: {"tz":"-530"}

Masukan: Z

Pola: %{ISO8601_TIMEZONE:tz}

Keluaran: {"tz":"Z"}

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: 60

Pola: %{ISO8601_SECOND:second}

Keluaran: {"second":"60"}

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: 2023-05-15T14:30:00+05:30

Pola: %{TIMESTAMP_ISO8601:timestamp}

Keluaran: {"timestamp":"2023-05-15T14:30:00+05:30"}

Masukan: 23-5-1T1:25+5:30

Pola: %{TIMESTAMP_ISO8601:timestamp}

Keluaran: {"timestamp":"23-5-1T1:25+5:30"}

Masukan: 23-5-1T1:25Z

Pola: %{TIMESTAMP_ISO8601:timestamp}

Keluaran: {"timestamp":"23-5-1T1:25Z"}

DATE Cocokkan tanggal dalam format AS menggunakan% {DATE_US} atau dalam format UE menggunakan% {DATE_EU} 20

Masukan: 11/29/2024

Pola: %{DATE:date}

Keluaran: {"date":"11/29/2024"}

Masukan: 29.11.2024

Pola: %{DATE:date}

Keluaran: {"date":"29.11.2024"}

DATESTAMP Cocokkan% {DATE} diikuti oleh pola% {TIME}, dipisahkan oleh spasi atau tanda hubung. 20

Masukan: 29-11-2024 14:30:00

Pola: %{DATESTAMP:dateTime}

Keluaran: {"dateTime":"29-11-2024 14:30:00"}

TZ Cocokkan singkatan zona waktu umum (PST, PDT, MST, MDT, CST CDT, EST, EDT, UTC). 20

Masukan: PDT

Pola: %{TZ:tz}

Keluaran: {"tz":"PDT"}

DATESTAMP_ RFC822 Tanggal dan waktu pertandingan dalam format: Hari MonthName (D) D (YY) YY (H) H:mm :( s) s Zona Waktu 20

Masukan: Monday Jan 5 23 1:30:00 CDT

Pola: %{DATESTAMP_RFC822:dateTime}

Keluaran: {"dateTime":"Monday Jan 5 23 1:30:00 CDT"}

Masukan: Mon January 15 2023 14:30:00 PST

Pola: %{DATESTAMP_RFC822:dateTime}

Keluaran: {"dateTime":"Mon January 15 2023 14:30:00 PST"}

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: Mon, 15 May 2023 14:30:00 +0530

Pola: %{DATESTAMP_RFC2822:dateTime}

Keluaran: {"dateTime":"Mon, 15 May 2023 14:30:00 +0530"}

Masukan: Monday, 15 Jan 23 14:30:00 Z

Pola: %{DATESTAMP_RFC2822:dateTime}

Keluaran: {"dateTime":"Monday, 15 Jan 23 14:30:00 Z"}

DATESTAMP_OTHER Tanggal dan waktu pertandingan dalam format: Hari MonthName (d) d (H) H:mm :( s) s Zona Waktu (yy) yy 20

Masukan: Mon May 15 14:30:00 PST 2023

Pola: %{DATESTAMP_OTHER:dateTime}

Keluaran: {"dateTime":"Mon May 15 14:30:00 PST 2023"}

DATESTAMP_EVENTLOG Cocokkan format datetime ringkas tanpa pemisah: (yy) YYmm (d) d (H) Hmm (s) s 20

Masukan: 20230515143000

Pola: %{DATESTAMP_EVENTLOG:dateTime}

Keluaran: {"dateTime":"20230515143000"}

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: INFO

Pola: %{LOGLEVEL:logLevel}

Keluaran: {"logLevel":"INFO"}

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: 23/Nov/2024:14:30:00 +0640

Pola: %{HTTPDATE:date}

Keluaran: {"date":"23/Nov/2024:14:30:00 +0640"}

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: Nov 29 14:30:00

Pola: %{SYSLOGTIMESTAMP:dateTime}

Keluaran: {"dateTime":"Nov 29 14:30:00"}

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: user.profile/settings-page

Pola: %{PROG:program}

Keluaran: {"program":"user.profile/settings-page"}

SYSLOGPROG Cocokkan pola grok PROG secara opsional diikuti oleh ID proses dalam tanda kurung siku. 20

Masukan: user.profile/settings-page[1234]

Pola: %{SYSLOGPROG:programWithId}

Keluaran: {"programWithId":"user.profile/settings-page[1234]","program":"user.profile/settings-page","pid":"1234"}

SYSLOGHOST Cocokkan dengan pola% {HOST} atau% {IP} 5

Masukan: 2001:db8:3333:4444:5555:6666:7777:8888

Pola: %{SYSLOGHOST:ip}

Keluaran: {"ip": "2001:db8:3333:4444:5555:6666:7777:8888"}

FASILITAS SYSLOG Cocokkan prioritas syslog dalam format desimal. Nilai harus diapit dalam tanda kurung sudut (<>). 20

Masukan: <13.6>

Pola: %{SYSLOGFACILITY:syslog}

Keluaran: {"syslog":"<13.6>","facility":"13","priority":"6"}

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 Schema Framework (OCSF).

@messageKonten 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

V1.1

-

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

@message

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

[column_1, column_2 ...]

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

@message

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

false

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

lowerCaseStringProsesor 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

upperCaseStringProsesor 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

splitStringProsesor 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

substituteStringProsesor 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 di situs web Oracle.

Anda dapat membungkus pola (...) untuk membuat grup penangkap bernomor dan membuat grup penangkap (?P<group_name>...) bernama yang dapat direferensikan di bidang. to

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

trimStringProsesor 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

listToMapProsesor 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 flatten true untuk mengkonversi array ke nilai tunggal berdasarkan nilaiflattenedElement.

Tidak

false

FlattenedElement

Jika Anda mengatur flatten ketrue, gunakan flattenedElement untuk menentukan elemen mana, first ataulast, yang akan disimpan.

Diperlukan saat flatten diatur ke true

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

yyyy-MM-dd'T'HH:mm:ss.SSS'Z

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" }