All Products
Search
Document Center

Simple Log Service:Perkaya kode respons permintaan HTTP menggunakan fungsi e_table_map

Last Updated:Mar 14, 2026

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.66

    Log 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

image
  1. Mengonversi kode respons HTTP menjadi objek tabel.

  2. 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

Scenarios

Perkaya data menggunakan LogStore (Direkomendasikan)

a substantial amount

Supported

Supported

Tabel pemetaan dengan volume data besar dan sering diperbarui.

Perkaya data menggunakan tabel MySQL

Large

Not supported

Supported

Tabel pemetaan yang sering diperbarui.

Perkaya data menggunakan file OSS

Large

Not supported

Supported

Tabel pemetaan yang relatif statis dan tidak sering diperbarui.

Embed code

Small

Not supported

Not supported

Tabel pemetaan kode respons HTTP khas.

Solusi 1: Perkaya data menggunakan LogStore (Direkomendasikan)

  1. 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:Success

    Untuk informasi selengkapnya, lihat Referensi SDK.

  2. 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.

  3. Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

  4. 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")])
    Penting

    Untuk 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.

  5. 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
  6. Buat tugas transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

Solusi 2: Perkaya data menggunakan tabel MySQL

  1. Simpan kode respons HTTP dalam database ApsaraDB RDS for MySQL.

    Gambar berikut menunjukkan tabel pemetaan kode respons HTTP dalam database ApsaraDB RDS for MySQL.mysql

  2. Dapatkan alamat host, username, password, dan nama tabel dari database ApsaraDB RDS for MySQL. Anda memerlukan informasi ini untuk mengedit pernyataan transformasi data.

  3. Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

  4. 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")])
    Penting

    Untuk 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.

  5. 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
  6. Buat tugas transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

Solusi 3: Perkaya data menggunakan file OSS

  1. 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.

  2. 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.

  3. Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

  4. 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")])
    Penting

    Untuk 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.

  5. 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
  6. Buat tugas transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

Solusi 4: Embed code

  1. Siapkan tabel pemetaan kode respons HTTP dalam format CSV.

  2. Masuk ke LogStore nginx-demo yang menyimpan log mentah dan buka halaman transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.

  3. 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")])
    Penting

    Untuk 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.

  4. 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
  5. Buat tugas transformasi data.

    Untuk informasi selengkapnya, lihat Buat tugas transformasi data.