Prosesor tipe parser yang dapat dikonfigurasi - CloudWatch Log Amazon

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

Prosesor tipe parser yang dapat dikonfigurasi

Bagian ini berisi informasi tentang prosesor parser data yang dapat dikonfigurasi yang dapat Anda gunakan dalam transformator peristiwa log.

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 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 kali atau lebih, 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"}

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

CAP WAKTU_ 01 ISO86 Cocokkan ISO86 01 format datetime (yy) yy- (M) M- (d) dT (H) H: mm: (s) s) (Z| [+-] (H) H: mm) dengan detik opsional dan zona waktu. 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\"]" }

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 maksimum: 1 kecuali nilainya adalah \t atau \s

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

Pengaturan delimiter untuk \t akan memisahkan setiap kolom pada karakter tab, dan \t akan memisahkan setiap kolom pada karakter spasi tunggal.

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

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