Log Nginx berisi informasi penting untuk operasi dan pemeliharaan (O&M) situs web. Anda dapat menggunakan fungsi e_table_map dalam Simple Log Service untuk memperkaya kode respons permintaan HTTP, sehingga menyederhanakan analisis data log. Topik ini menjelaskan cara memperkaya kode respons HTTP menggunakan fungsi e_table_map.
Prasyarat
Anda telah mengumpulkan data log Nginx. Untuk informasi selengkapnya, lihat Pengumpulan data.
Deskripsi skenario
Sebuah perusahaan menstandarkan kode respons permintaan HTTP selama pengembangan aplikasi. Data pemetaan diperbarui secara berkala untuk pemeliharaan terpusat. Selama pemeliharaan aplikasi, hanya field http_code dalam log Nginx mentah yang digunakan untuk menandai status permintaan, yang tidak cukup untuk troubleshooting.
Untuk mengatasi masalah ini, Anda dapat memperkaya field log berdasarkan tabel pemetaan kode respons HTTP dan menggunakan fungsi e_table_map agar status permintaan HTTP menjadi lebih intuitif.
-
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 disimpan dalam LogStore bernama nginx-demo. Field http_code menunjukkan kode respons HTTP.
-
Tabel pemetaan kode respons HTTP
Berikut ini adalah contoh khas tabel pemetaan kode respons HTTP.
code
alias
category
desc
100
1xx
Informational
Continue
200
2xx
Success
OK
300
3xx
Redirection
Multiple Choices
400
4xx
Client Error
Bad Request
-
Contoh log yang diperkaya
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Success 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
Alur pemrosesan
-
Mengonversi kode respons HTTP menjadi objek tabel.
-
Menggunakan fungsi e_table_map untuk memperkaya data.
Solusi yang direkomendasikan
Untuk memenuhi persyaratan ini, Anda dapat memilih salah satu solusi berikut untuk memperkaya data.
|
Solution |
Data volume support |
Incremental updates |
Batch updates |
|
|
a substantial amount |
Supported |
Supported |
Tabel pemetaan dengan volume data besar dan sering diperbarui. |
|
|
Large |
Not supported |
Supported |
Tabel pemetaan yang sering diperbarui. |
|
|
Large |
Not supported |
Supported |
Tabel pemetaan yang relatif statis dan tidak sering diperbarui. |
|
|
Small |
Not supported |
Not supported |
Tabel pemetaan kode respons HTTP khas. |
Solusi 1: Perkaya data menggunakan LogStore (Direkomendasikan)
-
Gunakan software development kit (SDK) untuk menulis kode respons HTTP ke LogStore bernama http_code.
Contoh berikut menunjukkan log kode respons HTTP di LogStore:
__source__:203.0.XXX.XX __tag__:__receive_time__:1595424194 __topic__: code:200 alias:2xx description:OK category:SuccessUntuk informasi selengkapnya, lihat Referensi SDK.
-
Dapatkan nama, endpoint, dan AccessKey dari LogStore yang menyimpan kode respons HTTP. Anda memerlukan informasi ini untuk mengedit pernyataan transformasi data.
Pasangan endpoint dan AccessKey untuk Simple Log Service. Untuk informasi selengkapnya, lihat Endpoints dan Pasangan AccessKey.
-
Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
-
Di editor, masukkan pernyataan transformasi data.
Baca data dari LogStore http_code dan gunakan fungsi e_table_map untuk mengembalikan nilai field yang sesuai.
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 keamanan data, Anda harus mengonfigurasi AccessKey di pengaturan parameter advanced. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter advanced, lihat Buat tugas transformasi data.
-
Gunakan fungsi res_log_LogStore_pull untuk menarik data dari LogStore lain. Untuk informasi selengkapnya, lihat res_log_LogStore_pull.
-
Fungsi ini mencari baris yang sesuai dalam tabel berdasarkan nilai field input dan mengembalikan nilai field yang ditentukan. Untuk informasi selengkapnya, lihat e_table_map.
-
-
Klik Preview Data.
Setelah log Nginx diperkaya, field terkait kode respons HTTP ditambahkan.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Success 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 -
Buat tugas transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
Solusi 2: Perkaya data menggunakan tabel MySQL
-
Simpan kode respons HTTP dalam database ApsaraDB RDS for MySQL.
Gambar berikut menunjukkan tabel pemetaan kode respons HTTP dalam database ApsaraDB RDS for MySQL.

-
Dapatkan alamat host, username, password, dan nama tabel dari database ApsaraDB RDS for MySQL. Anda memerlukan informasi ini untuk mengedit pernyataan transformasi data.
-
Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
-
Di editor, masukkan pernyataan transformasi data.
Baca data dari database MySQL dan gunakan fungsi e_table_map untuk mengembalikan nilai field yang sesuai.
e_table_map(res_rds_mysql(address="MySQL host address", username="username", password="password", database="database",table="table name", refresh_interval=300), [("http_code","code")], [("alias","http_code_alias"), ("description","http_code_desc"), ("category","http_code_category")])PentingUntuk keamanan data, Anda harus mengonfigurasi AccessKey di pengaturan parameter advanced. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter advanced, lihat Buat tugas transformasi data.
-
Gunakan fungsi res_rds_mysql untuk menarik konten tabel dari database ApsaraDB RDS for MySQL. Untuk informasi selengkapnya, lihat res_rds_mysql.
-
Fungsi ini mencari baris yang sesuai dalam tabel berdasarkan nilai field input dan mengembalikan nilai field yang ditentukan. Untuk informasi selengkapnya, lihat e_table_map.
-
-
Klik Preview Data.
Setelah log Nginx diperkaya, field terkait kode respons HTTP ditambahkan.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Success 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 -
Buat tugas transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
Solusi 3: Perkaya data menggunakan file OSS
-
Simpan kode respons HTTP ke file bernama http_code.csv dan unggah file tersebut ke bucket Object Storage Service (OSS).
Untuk informasi selengkapnya, lihat Unggah file.
-
Dapatkan nama, endpoint, dan AccessKey dari bucket OSS tempat file http_code.csv disimpan. Anda memerlukan informasi ini untuk mengedit pernyataan transformasi data.
Endpoint untuk Object Storage Service (OSS). Untuk informasi selengkapnya, lihat Wilayah dan endpoint.
-
Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
-
Di editor, masukkan pernyataan transformasi data.
Baca data dari bucket OSS dan gunakan fungsi e_table_map untuk mengembalikan nilai field yang sesuai.
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 keamanan data, Anda harus mengonfigurasi AccessKey di pengaturan parameter advanced. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter advanced, lihat Buat tugas transformasi data.
-
Fungsi res_oss_file mengambil konten file dari bucket OSS dan mendukung penyegaran berkala. Untuk informasi selengkapnya, lihat res_oss_file.
-
Gunakan fungsi tab_parse_csv untuk membuat tabel dari teks dalam format CSV. Untuk informasi selengkapnya, lihat tab_parse_csv.
-
Fungsi ini mencari baris yang sesuai dalam tabel berdasarkan nilai field input dan mengembalikan nilai field yang ditentukan. Untuk informasi selengkapnya, lihat e_table_map.
-
-
Klik Preview Data.
Setelah log Nginx diperkaya, field terkait kode respons HTTP ditambahkan.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Success 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 -
Buat tugas transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
Solusi 4: Embed code
-
Siapkan tabel pemetaan kode respons HTTP dalam format CSV.
-
Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.
-
Di editor, masukkan pernyataan transformasi data.
Gunakan fungsi tab_parse_csv untuk mengubah kode respons HTTP dari format CSV menjadi tabel. Kemudian, gunakan fungsi e_table_map untuk mengembalikan nilai field yang sesuai.
e_table_map(tab_parse_csv("code,alias,category,description\n100,1xx,Informational,Continue\n101,1xx,Informational,Switching Protocols\n102,1xx,Informational,Processing (WebDAV)\n200,2xx,Success,OK\n201,2xx,Success,Created\n202,2xx,Success,Accepted\n203,2xx,Success,Non-Authoritative Information\n204,2xx,Success,No Content\n205,2xx,Success,Reset Content\n206,2xx,Success,Partial Content\n207,2xx,Success,Multi-Status (WebDAV)\n208,2xx,Success,Already Reported (WebDAV)\n226,2xx,Success,IM Used\n300,3xx,Redirection,Multiple Choices\n301,3xx,Redirection,Moved Permanently\n302,3xx,Redirection,Found\n303,3xx,Redirection,See Other\n304,3xx,Redirection,Not Modified\n305,3xx,Redirection,Use Proxy\n306,3xx,Redirection,(Unused)\n307,3xx,Redirection,Temporary Redirect\n308,3xx,Redirection,Permanent Redirect (experimental)\n400,4xx,Client Error,Bad Request\n401,4xx,Client Error,Unauthorized\n402,4xx,Client Error,Payment Required\n403,4xx,Client Error,Forbidden\n404,4xx,Client Error,Not Found\n405,4xx,Client Error,Method Not Allowed\n406,4xx,Client Error,Not Acceptable\n407,4xx,Client Error,Proxy Authentication Required\n408,4xx,Client Error,Request Timeout\n409,4xx,Client Error,Conflict\n410,4xx,Client Error,Gone\n411,4xx,Client Error,Length Required\n412,4xx,Client Error,Precondition Failed\n413,4xx,Client Error,Request Entity Too Large\n414,4xx,Client Error,Request-URI Too Long\n415,4xx,Client Error,Unsupported Media Type\n416,4xx,Client Error,Requested Range Not Satisfiable\n417,4xx,Client Error,Expectation Failed\n418,4xx,Client Error,I'm a teapot (RFC 2324)\n420,4xx,Client Error,Enhance Your Calm (Twitter)\n422,4xx,Client Error,Unprocessable Entity (WebDAV)\n423,4xx,Client Error,Locked (WebDAV)\n424,4xx,Client Error,Failed Dependency (WebDAV)\n425,4xx,Client Error,Reserved for WebDAV\n426,4xx,Client Error,Upgrade Required\n428,4xx,Client Error,Precondition Required\n429,4xx,Client Error,Too Many Requests\n431,4xx,Client Error,Request Header Fields Too Large\n444,4xx,Client Error,No Response (Nginx)\n449,4xx,Client Error,Retry With (Microsoft)\n450,4xx,Client Error,Blocked by Windows Parental Controls (Microsoft)\n451,4xx,Client Error,Unavailable For Legal Reasons\n499,4xx,Client Error,Client Closed Request (Nginx)\n500,5xx,Server Error,Internal Server Error\n501,5xx,Server Error,Not Implemented\n502,5xx,Server Error,Bad Gateway\n503,5xx,Server Error,Service Unavailable\n504,5xx,Server Error,Gateway Timeout\n505,5xx,Server Error,HTTP Version Not Supported\n506,5xx,Server Error,Variant Also Negotiates (Experimental)\n507,5xx,Server Error,Insufficient Storage (WebDAV)\n508,5xx,Server Error,Loop Detected (WebDAV)\n509,5xx,Server Error,Bandwidth Limit Exceeded (Apache)\n510,5xx,Server Error,Not Extended\n511,5xx,Server Error,Network Authentication Required\n598,5xx,Server Error,Network read timeout error\n599,5xx,Server Error,Network connect timeout error\n"), [("http_code","code")], [("alias","http_code_alias"), ("description","http_code_desc"), ("category","http_code_category")])PentingUntuk keamanan data, Anda harus mengonfigurasi AccessKey di pengaturan parameter advanced. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter advanced, lihat Buat tugas transformasi data.
-
Gunakan fungsi tab_parse_csv untuk membuat tabel dari teks dalam format CSV. Untuk informasi selengkapnya, lihat tab_parse_csv.
-
Fungsi ini mencari baris yang sesuai dalam tabel berdasarkan nilai field input dan mengembalikan nilai field yang ditentukan. Untuk informasi selengkapnya, lihat e_table_map.
-
-
Klik Preview Data.
Setelah log Nginx diperkaya, field terkait kode respons HTTP ditambahkan.
body_bytes_sent:1750 host:www.example.com http_code:200 http_code_alias:2xx http_code_category:Success 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 -
Buat tugas transformasi data.
Untuk informasi selengkapnya, lihat Buat tugas transformasi data.