全部产品
Search
文档中心

Simple Log Service:Gunakan fungsi e_table_map untuk memperkaya kode status respon HTTP

更新时间:Jul 06, 2025

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

    Log 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

  1. Konversikan kode status respon HTTP menjadi objek tabel.

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

Skenario

(Direkomendasikan) Perkaya data berdasarkan Logstore

Besar

Didukung

Didukung

Tabel pemetaan berisi volume data besar dan sering diperbarui.

Perkaya data berdasarkan tabel MySQL

Sedang

Tidak didukung

Didukung

Tabel pemetaan sering diperbarui.

Perkaya data berdasarkan objek Object Storage Service (OSS)

Sedang

Tidak didukung

Didukung

Tabel pemetaan jarang diperbarui.

Perkaya data berdasarkan kode tertanam

Kecil

Tidak didukung

Tidak didukung

Tabel pemetaan berisi kode status respon HTTP yang umum.

Solusi 1: (Direkomendasikan) Perkaya data berdasarkan Logstore

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

    Untuk informasi lebih lanjut, lihat Ikhtisar SDK Layanan Log Sederhana.

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

  3. Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

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

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

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

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

Solusi 2: Perkaya data berdasarkan tabel MySQL

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

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

  3. Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

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

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

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

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

Solusi 3: Perkaya data berdasarkan objek OSS

  1. Simpan kode status respon HTTP ke objek bernama http_code.csv dan unggah objek ke Bucket OSS.

    Untuk informasi lebih lanjut, lihat Unggah Objek.

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

  3. Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

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

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

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

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

Solusi 4: Perkaya data berdasarkan kode tertanam

  1. Siapkan tabel pemetaan kode status respon HTTP dalam format CSV.

  2. Pergi ke halaman transformasi data Logstore nginx-demo yang menyimpan log mentah.

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.

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

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

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

    Untuk informasi lebih lanjut, lihat Buat Pekerjaan Transformasi Data.