Pra-proses data dengan Agen - Amazon Data Firehose

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

Pra-proses data dengan Agen

Agen dapat memproses catatan yang diuraikan dari file yang dipantau sebelum mengirimnya ke aliran Firehose Anda. Anda dapat mengaktifkan fitur ini dengan menambahkan pengaturan konfigurasi dataProcessingOptions ke aliran file Anda. Satu atau lebih opsi pemrosesan dapat ditambahkan, dan dilakukan dalam urutan yang ditentukan.

Agen mendukung opsi pemrosesan berikut. Karena agen adalah sumber terbuka, Anda dapat lebih mengembangkan dan memperluas pilihan pemrosesannya. Anda dapat mengunduh agen dari Agen Kinesis.

Opsi Pemrosesan
SINGLELINE

Mengonversi catatan multi-baris untuk catatan baris tunggal dengan menghapus karakter baris baru, spasi di bagian paling depan, dan spasi di bagian paling belakang.

{ "optionName": "SINGLELINE" }
CSVTOJSON

Mengonversi catatan dari format yang dipisahkan pembatas ke format JSON.

{ "optionName": "CSVTOJSON", "customFieldNames": [ "field1", "field2", ... ], "delimiter": "yourdelimiter" }
customFieldNames

[Diperlukan] Nama-nama field yang digunakan sebagai kunci dalam setiap pasangan nilai kunci JSON. Misalnya, jika Anda menentukan ["f1", "f2"], catatan "v1, v2" dikonversi ke {"f1":"v1","f2":"v2"}.

delimiter

String yang digunakan sebagai pembatas dalam catatan. Default adalah koma (,).

LOGTOJSON

Mengonversi catatan dari format log ke format JSON. Format log yang didukung adalah Apache Common Log, Apache Combined Log, Apache Error Log, dan RFC3164 Syslog.

{ "optionName": "LOGTOJSON", "logFormat": "logformat", "matchPattern": "yourregexpattern", "customFieldNames": [ "field1", "field2", ] }
logFormat

[Diperlukan] Format entri log. Berikut adalah nilai yang mungkin:

  • COMMONAPACHELOG — Format Log Umum Apache. Setiap entri log memiliki pola berikut secara default: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}".

  • COMBINEDAPACHELOG — Format Log Gabungan Apache. Setiap entri log memiliki pola berikut secara default: "%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}".

  • APACHEERRORLOG — Format Log Kesalahan Apache. Setiap entri log memiliki pola berikut secara default: "[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}".

  • SYSLOG— Format RFC3164 Syslog. Setiap entri log memiliki pola berikut secara default: "%{timestamp} %{hostname} %{program}[%{processid}]: %{message}".

matchPattern

Menimpa pola default untuk format log tertentu. Gunakan pengaturan ini untuk mengekstraksi nilai dari entri log jika nilai menggunakan format khusus. Jika menentukan matchPattern, Anda juga harus menentukan customFieldNames.

customFieldNames

Nama bidang khusus digunakan sebagai kunci dalam setiap pasangan nilai kunci JSON. Anda dapat menggunakan pengaturan ini untuk menentukan nama bidang untuk nilai-nilai yang diekstraksi dari matchPattern, atau menimpa nama bidang default dari format log yang telah ditetapkan sebelumnya.

contoh : Konfigurasi LOGTOJSON

Berikut adalah salah satu contoh konfigurasi LOGTOJSON untuk entri Log Umum Apache yang dikonversi ke format JSON:

{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }

Sebelum konversi:

64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291

Setelah konversi:

{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
contoh : Konfigurasi LOGTOJSON dengan Bidang Khusus

Berikut adalah contoh lain konfigurasi LOGTOJSON:

{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }

Dengan pengaturan konfigurasi ini, entri Log Umum Apache yang sama dari contoh sebelumnya dikonversi ke format JSON sebagai berikut:

{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
contoh : Mengonversi Entri Log Umum Apache

Konfigurasi aliran berikut mengonversi entri Log Umum Apache ke catatan baris tunggal dalam format JSON:

{ "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "my-delivery-stream", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
contoh : Mengonversi Catatan Multi-Baris

Konfigurasi aliran berikut mengurai catatan multi-baris yang baris pertamanya dimulai dengan "[SEQUENCE=". Setiap catatan dikonversi ke catatan baris tunggal terlebih dahulu. Kemudian, nilai-nilai diekstraksi dari catatan tersebut berdasarkan pembatas tab. Nilai yang diekstraksi dipetakan ke nilai customFieldNames yang ditentukan untuk membentuk catatan baris tunggal dalam format JSON.

{ "flows": [ { "filePattern": "/tmp/app.log*", "deliveryStream": "my-delivery-stream", "multiLineStartPattern": "\\[SEQUENCE=", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1", "field2", "field3" ], "delimiter": "\\t" } ] } ] }
contoh : Konfigurasi LOGTOJSON dengan Pola Pencocokan

Berikut adalah salah satu contoh konfigurasi LOGTOJSON untuk entri Log Umum Apache yang dikonversi ke format JSON, dengan bidang terakhir (byte) dihilangkan:

{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }

Sebelum konversi:

123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200

Setelah konversi:

{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}