Log NGINX mencatat informasi penting yang dapat digunakan untuk pemeliharaan situs web. Layanan Log Sederhana menyediakan fungsi e_table_map yang dapat digunakan untuk memperkaya kode status respon HTTP dalam analisis log NGINX. Topik ini menjelaskan cara menggunakan fungsi e_table_map untuk memperkaya kode status respon HTTP.
Prasyarat
Log NGINX telah dikumpulkan. Untuk informasi lebih lanjut, lihat Ikhtisar Pengumpulan Data.
Skenario contoh
Sebuah perusahaan mengembangkan Aplikasi A dan mendefinisikan kode status respon HTTP untuk pemeliharaan aplikasi tersebut. Data diperbarui pada interval yang tidak teratur. Hanya bidang http_code dalam log mentah NGINX yang menunjukkan status permintaan HTTP. Bidang ini tidak cukup efisien untuk mengidentifikasi masalah.
Dalam kasus ini, tabel pemetaan kode status respon HTTP diperlukan. Anda dapat menggunakan fungsi e_table_map untuk memperkaya log sehingga status permintaan HTTP dapat diidentifikasi secara lebih efisien.
Contoh Log Mentah
body_bytes_sent:1750 host:www.example.com http_referer:www.example.aliyundoc.com http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 http_x_forwarded_for:203.0.XXX.XX remote_addr:203.0.XXX.XX remote_user:p288 request_length:13741 request_method:GET request_time:71 request_uri:/request/path-1/file-1 http_code:200 time_local:11/Aug/2021:06:52:27 upstream_response_time:0.66Log mentah ini disimpan di Logstore bernama nginx-demo. Nilai dari bidang http_code adalah kode status respon HTTP.
Tabel Pemetaan Kode Status Respon HTTP
Tabel berikut adalah tabel pemetaan kode status respon HTTP yang umum.
kode
alias
kategori
deskripsi
100
1xx
Informasional
Lanjutkan
200
2xx
Sukses
OK
300
3xx
Pengalihan
Pilihan Ganda
400
4xx
Kesalahan Klien
Permintaan Buruk
Log yang Diperkaya
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Sukses http_code_desc:OK http_referer:www.example.aliyundoc.com http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 http_x_forwarded_for:203.0.XXX.XX remote_addr:203.0.XXX.XX remote_user:p288 request_length:13741 request_method:GET request_time:71 request_uri:/request/path-1/file-1 time_local:11/Aug/2021:06:52:27 upstream_response_time:0.66
Solusi yang tersedia
Proses Transformasi
Konversikan kode status respon HTTP menjadi objek tabel.
Gunakan fungsi e_table_map untuk mentransformasi dan memperkaya data.
Solusi yang Direkomendasikan
Tabel berikut menjelaskan solusi yang dapat digunakan untuk memperkaya data.
Solusi | Volume data yang didukung | Pembaruan inkremental | Pembaruan batch | |
Besar | Didukung | Didukung | Tabel pemetaan berisi volume data besar dan sering diperbarui. | |
Sedang | Tidak didukung | Didukung | Tabel pemetaan sering diperbarui. | |
Sedang | Tidak didukung | Didukung | Tabel pemetaan jarang diperbarui. | |
Kecil | Tidak didukung | Tidak didukung | Tabel pemetaan berisi kode status respon HTTP yang umum. |
Solusi 1: (Direkomendasikan) Perkaya data berdasarkan Logstore
Gunakan SDK untuk menulis kode status respon HTTP ke Logstore bernama http_code.
Contoh berikut menunjukkan log yang berisi kode status respon HTTP di Logstore http_code:
__source__:203.0.XXX.XX __tag__:__receive_time__:1595424194 __topic__: code:200 alias:2xx description:OK category:SuksesUntuk informasi lebih lanjut, lihat Ikhtisar SDK Layanan Log Sederhana.
Dapatkan nama dan titik akhir Logstore http_code serta pasangan AccessKey yang diperlukan. Informasi ini digunakan untuk menulis pernyataan transformasi data.
Untuk informasi lebih lanjut tentang titik akhir Layanan Log Sederhana dan pasangan AccessKey, lihat Titik Akhir dan Pasangan AccessKey.
Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Di kotak editor, masukkan pernyataan transformasi data.
Baca data dari Logstore http_code dan gunakan fungsi e_table_map untuk mengembalikan nilai bidang yang cocok.
e_table_map( res_log_logstore_pull("cn-hangzhou-intranet.log.aliyuncs.com", res_local("AK_ID"),res_local("AK_KEY"),"live-demo","http_code", ["code","alias","description","category"]), [("http_code","code")], [("alias","http_code_alias"), ("description","http_code_desc"), ("category","http_code_category")])PentingUntuk memastikan keamanan data, kami sarankan Anda menentukan pasangan AccessKey di bidang Pengaturan Parameter Lanjutan. Untuk informasi lebih lanjut tentang cara mengonfigurasi bidang Pengaturan Parameter Lanjutan, lihat Buat Pekerjaan Transformasi Data.
Fungsi res_log_logstore_pull menarik data dari Logstore lain saat Anda mentransformasi data di Logstore. Untuk informasi lebih lanjut, lihat res_log_logstore_pull.
Fungsi e_table_map memetakan nilai bidang input ke baris di tabel yang ditentukan dan mengembalikan bidang baru. Untuk informasi lebih lanjut, lihat e_table_map.
Klik Preview Data.
Setelah log mentah NGINX diperkaya, bidang baru yang terkait dengan kode status respon HTTP termasuk dalam log.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Sukses http_code_desc:OK http_referer:www.example.aliyundoc.com http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 http_x_forwarded_for:203.0.XXX.XX remote_addr:203.0.XXX.XX remote_user:p288 request_length:13741 request_method:GET request_time:71 request_uri:/request/path-1/file-1 time_local:11/Aug/2021:06:52:27 upstream_response_time:0.66Buat pekerjaan transformasi data.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Solusi 2: Perkaya data berdasarkan tabel MySQL
Simpan kode status respon HTTP ke database ApsaraDB RDS for MySQL.
Gambar berikut menunjukkan tabel pemetaan kode status respon HTTP yang disimpan di database ApsaraDB RDS for MySQL.

Dapatkan alamat host, nama pengguna, kata sandi, nama database, dan nama tabel dari database ApsaraDB RDS for MySQL. Informasi ini digunakan untuk menulis pernyataan transformasi data.
Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Di kotak editor, masukkan pernyataan transformasi data.
Baca data dari database MySQL dan gunakan fungsi e_table_map untuk mengembalikan nilai bidang yang cocok.
e_table_map(res_rds_mysql(address="Alamat host MySQL", username="Nama pengguna", password="Kata sandi", database="Nama database",table="Nama tabel", refresh_interval=300), [("http_code","code")], [("alias","http_code_alias"), ("description","http_code_desc"), ("category","http_code_category")])PentingUntuk memastikan keamanan data, kami sarankan Anda menentukan pasangan AccessKey di bidang Pengaturan Parameter Lanjutan. Untuk informasi lebih lanjut tentang cara mengonfigurasi bidang Pengaturan Parameter Lanjutan, lihat Buat Pekerjaan Transformasi Data.
Fungsi res_rds_mysql menarik data dari tabel yang ditentukan di database ApsaraDB RDS for MySQL. Untuk informasi lebih lanjut, lihat res_rds_mysql.
Fungsi e_table_map memetakan nilai bidang input ke baris di tabel yang ditentukan dan mengembalikan bidang baru. Untuk informasi lebih lanjut, lihat e_table_map.
Klik Preview Data.
Setelah log mentah NGINX diperkaya, bidang baru yang terkait dengan kode status respon HTTP termasuk dalam log.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Sukses http_code_desc:OK http_referer:www.example.aliyundoc.com http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 http_x_forwarded_for:203.0.XXX.XX remote_addr:203.0.XXX.XX remote_user:p288 request_length:13741 request_method:GET request_time:71 request_uri:/request/path-1/file-1 time_local:11/Aug/2021:06:52:27 upstream_response_time:0.66Buat pekerjaan transformasi data.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Solusi 3: Perkaya data berdasarkan objek OSS
Simpan kode status respon HTTP ke objek bernama http_code.csv dan unggah objek ke Bucket OSS.
Untuk informasi lebih lanjut, lihat Unggah Objek.
Dapatkan nama dan titik akhir Bucket OSS tempat objek http_code.csv diunggah dan pasangan AccessKey yang diperlukan. Informasi ini digunakan untuk menulis pernyataan transformasi data.
Untuk informasi lebih lanjut tentang titik akhir OSS, lihat Wilayah dan Titik Akhir.
Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Di kotak editor, masukkan pernyataan transformasi data.
Baca data dari Bucket OSS dan gunakan fungsi e_table_map untuk mengembalikan nilai bidang yang cocok.
e_table_map( tab_parse_csv( res_oss_file(endpoint="oss-cn-shanghai-internal.aliyuncs.com", ak_id=res_local("AK_ID"), ak_key=res_local("AK_KEY"), bucket="ali-sls-etl-test", file="http_code.csv", format='text')), [("http_code","code")], [("alias","http_code_alias"), ("description","http_code_desc"), ("category","http_code_category")])PentingUntuk memastikan keamanan data, kami sarankan Anda menentukan pasangan AccessKey di bidang Pengaturan Parameter Lanjutan. Untuk informasi lebih lanjut tentang cara mengonfigurasi bidang Pengaturan Parameter Lanjutan, lihat Buat Pekerjaan Transformasi Data.
Fungsi res_oss_file menarik data dari objek di Bucket OSS yang ditentukan. Data dapat diperbarui pada interval reguler. Untuk informasi lebih lanjut, lihat res_oss_file.
Fungsi tab_parse_csv membuat tabel dari file CSV. Untuk informasi lebih lanjut, lihat tab_parse_csv.
Fungsi e_table_map memetakan nilai bidang input ke baris di tabel yang ditentukan dan mengembalikan bidang baru. Untuk informasi lebih lanjut, lihat e_table_map.
Klik Preview Data.
Setelah log mentah NGINX diperkaya, bidang baru yang terkait dengan kode status respon HTTP termasuk dalam log.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Sukses http_code_desc:OK http_referer:www.example.aliyundoc.com http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 http_x_forwarded_for:203.0.XXX.XX remote_addr:203.0.XXX.XX remote_user:p288 request_length:13741 request_method:GET request_time:71 request_uri:/request/path-1/file-1 time_local:11/Aug/2021:06:52:27 upstream_response_time:0.66Buat pekerjaan transformasi data.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Solusi 4: Perkaya data berdasarkan kode tertanam
Siapkan tabel pemetaan kode status respon HTTP dalam format CSV.
Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.
Di kotak editor, masukkan pernyataan transformasi data.
Gunakan fungsi tab_parse_csv untuk membuat tabel dari file CSV dan gunakan fungsi e_table_map untuk mengembalikan nilai bidang yang cocok.
e_table_map(tab_parse_csv("code,alias,category,description\n100,1xx,Informasional,Lanjutkan\n101,1xx,Informasional,Mengganti Protokol\n102,1xx,Informasional,Pemrosesan (WebDAV)\n200,2xx,Sukses,OK\n201,2xx,Sukses,Dibuat\n202,2xx,Sukses,Diterima\n203,2xx,Sukses,Informasi Tidak Resmi\n204,2xx,Sukses,Tidak Ada Konten\n205,2xx,Sukses,Reset Konten\n206,2xx,Sukses,Konten Parsial\n207,2xx,Sukses,Status Ganda (WebDAV)\n208,2xx,Sukses,Sudah Dilaporkan (WebDAV)\n226,2xx,Sukses,IM Digunakan\n300,3xx,Pengalihan,Pilihan Ganda\n301,3xx,Pengalihan,Pindah Permanen\n302,3xx,Pengalihan,Ditemukan\n303,3xx,Pengalihan,Lihat Lainnya\n304,3xx,Pengalihan,Tidak Dimodifikasi\n305,3xx,Pengalihan,Gunakan Proxy\n306,3xx,Pengalihan,(Tidak Digunakan)\n307,3xx,Pengalihan,Pengalihan Sementara\n308,3xx,Pengalihan,Pengalihan Permanen (eksperimental)\n400,4xx,Kesalahan Klien,Permintaan Buruk\n401,4xx,Kesalahan Klien,Tidak Berwenang\n402,4xx,Kesalahan Klien,Pembayaran Diperlukan\n403,4xx,Kesalahan Klien,Dilarang\n404,4xx,Kesalahan Klien,Tidak Ditemukan\n405,4xx,Kesalahan Klien,Metode Tidak Diizinkan\n406,4xx,Kesalahan Klien,Tidak Dapat Diterima\n407,4xx,Kesalahan Klien,Otentikasi Proxy Diperlukan\n408,4xx,Kesalahan Klien,Waktu Permintaan Habis\n409,4xx,Kesalahan Klien,Konflik\n410,4xx,Kesalahan Klien,Hilang\n411,4xx,Kesalahan Klien,Panjang Diperlukan\n412,4xx,Kesalahan Klien,Prasyarat Gagal\n413,4xx,Kesalahan Klien,Entitas Permintaan Terlalu Besar\n414,4xx,Kesalahan Klien,URI Permintaan Terlalu Panjang\n415,4xx,Kesalahan Klien,Jenis Media Tidak Didukung\n416,4xx,Kesalahan Klien,Rentang yang Diminta Tidak Memuaskan\n417,4xx,Kesalahan Klien,Harapan Gagal\n418,4xx,Kesalahan Klien,Saya adalah teko (RFC 2324)\n420,4xx,Kesalahan Klient,Tingkatkan Ketenangan Anda (Twitter)\n422,4xx,Kesalahan Klien,Entitas Tidak Dapat Diproses (WebDAV)\n423,4xx,Kesalahan Klien,Terkunci (WebDAV)\n424,4xx,Kesalahan Klien,Ketergantungan Gagal (WebDAV)\n425,4xx,Kesalahan Klien,Dicadangkan untuk WebDAV\n426,4xx,Kesalahan Klien,Peningkatan Diperlukan\n428,4xx,Kesalahan Klien,Prasyarat Diperlukan\n429,4xx,Kesalahan Klien,Terlalu Banyak Permintaan\n431,4xx,Kesalahan Klien,Bidang Header Permintaan Terlalu Besar\n444,4xx,Kesalahan Klien,Tidak Ada Tanggapan (Nginx)\n449,4xx,Kesalahan Klien,Coba Lagi Dengan (Microsoft)\n450,4xx,Kesalahan Klien,Diblokir oleh Kontrol Orang Tua Windows (Microsoft)\n451,4xx,Kesalahan Klien,Tidak Tersedia Karena Alasan Hukum\n499,4xx,Kesalahan Klien,Permintaan Ditutup Klien (Nginx)\n500,5xx,Kesalahan Server,Kesalahan Server Internal\n501,5xx,Kesalahan Server,Belum Diimplementasikan\n502,5xx,Kesalahan Server,Gateway Buruk\n503,5xx,Kesalahan Server,Layanan Tidak Tersedia\n504,5xx,Kesalahan Server,Waktu Gateway Habis\n505,5xx,Kesalahan Server,Versi HTTP Tidak Didukung\n506,5xx,Kesalahan Server,Negoisasi Variasi Juga (Eksperimental)\n507,5xx,Kesalahan Server,Penyimpanan Tidak Cukup (WebDAV)\n508,5xx,Kesalahan Server,Pendeteksian Loop (WebDAV)\n509,5xx,Kesalahan Server,Batas Bandwidth Terlampaui (Apache)\n510,5xx,Kesalahan Server,Tidak Diperpanjang\n511,5xx,Kesalahan Server,Otentikasi Jaringan Diperlukan\n598,5xx,Kesalahan Server,Kesalahan Waktu Baca Jaringan\n599,5xx,Kesalahan Server,Kesalahan Waktu Koneksi Jaringan\n"), [("http_code","code")], [("alias","http_code_alias"), ("description","http_code_desc"), ("category","http_code_category")])PentingUntuk memastikan keamanan data, kami sarankan Anda menentukan pasangan AccessKey di bidang Pengaturan Parameter Lanjutan. Untuk informasi lebih lanjut tentang cara mengonfigurasi bidang Pengaturan Parameter Lanjutan, lihat Buat Pekerjaan Transformasi Data.
Fungsi tab_parse_csv membuat tabel dari file CSV. Untuk informasi lebih lanjut, lihat tab_parse_csv.
Fungsi e_table_map memetakan nilai bidang input ke baris di tabel yang ditentukan dan mengembalikan bidang baru. Untuk informasi lebih lanjut, lihat e_table_map.
Klik Preview Data.
Setelah log mentah NGINX diperkaya, bidang baru yang terkait dengan kode status respon HTTP termasuk dalam log.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Sukses http_code_desc:OK http_referer:www.example.aliyundoc.com http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27 http_x_forwarded_for:203.0.XXX.XX remote_addr:203.0.XXX.XX remote_user:p288 request_length:13741 request_method:GET request_time:71 request_uri:/request/path-1/file-1 time_local:11/Aug/2021:06:52:27 upstream_response_time:0.66Buat pekerjaan transformasi data.
Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.