すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:e_table_map 関数を使用した HTTP リクエストリターンコードのエンリッチ

最終更新日:Mar 14, 2026

Nginx ログには、ウェブサイトの運用保守 (O&M) に重要な情報が含まれています。Simple Log Service の e_table_map 関数を使用すると、HTTP リクエストのリターンコードをエンリッチでき、ログデータ分析が簡素化されます。このトピックでは、e_table_map 関数を使用して HTTP リターンコードをエンリッチする方法について説明します。

前提条件

Nginx ログデータを収集済みです。詳細については、「データ収集」をご参照ください。

シナリオの説明

ある企業では、アプリケーションの開発中に HTTP リクエストリターンコードを標準化しています。マッピングデータは、統合メンテナンスのために定期的に更新されます。アプリケーションのメンテナンス中、生 Nginx ログの http_code フィールドのみがリクエスト状態を示すために使用されますが、これはトラブルシューティングには十分ではありません。

この問題に対処するために、HTTP リターンコードマッピングテーブルに基づいてログフィールドをエンリッチし、e_table_map 関数を使用して HTTP リクエスト状態をより直感的にすることができます。

  • 生ログのサンプル

    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

    生ログは nginx-demo という名前の LogStore に保存されます。http_code フィールドは HTTP リターンコードを示します。

  • HTTP リターンコードマッピングテーブル

    以下は一般的な HTTP リターンコードマッピングテーブルです。

    code

    alias

    category

    desc

    100

    1xx

    Informational

    Continue

    200

    2xx

    Success

    OK

    300

    3xx

    Redirection

    Multiple Choices

    400

    4xx

    Client Error

    Bad Request

  • エンリッチされたログのサンプル

    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

利用可能なソリューション

処理フロー

image
  1. HTTP リターンコードをテーブルオブジェクトに変換します。

  2. e_table_map 関数を使用してデータエンリッチメントを行います。

推奨ソリューション

これらの要件を満たすために、データエンリッチメントには以下のいずれかのソリューションを選択できます。

ソリューション

データ量サポート

増分更新

バッチ更新

シナリオ

LogStore を使用したデータエンリッチメント (推奨)

大量

サポートされています

サポートされています

データ量が多く、頻繁に更新されるマッピングテーブル。

MySQL テーブルを使用したデータエンリッチメント

サポートされていません

サポートされています

頻繁に更新されるマッピングテーブル。

OSS ファイルを使用したデータエンリッチメント

サポートされていません

サポートされています

更新頻度が低い比較的静的なマッピングテーブル。

コードの埋め込み

少量

サポートされていません

サポートされていません

一般的な HTTP リターンコードマッピングテーブル。

ソリューション 1: LogStore を使用したデータエンリッチメント (推奨)

  1. ソフトウェア開発キット (SDK) を使用して、HTTP リターンコードを http_code という名前の LogStore に書き込みます。

    以下は、LogStore 内の HTTP リターンコードログのサンプルです。

    __source__:203.0.XXX.XX
    __tag__:__receive_time__:1595424194
    __topic__:
    code:200
    alias:2xx
    description:OK
    category:Success

    詳細については、「SDK リファレンス」をご参照ください。

  2. HTTP リターンコードを保存する LogStore の名前、エンドポイント、および AccessKey を取得します。これらの情報はデータ変換ステートメントを編集するために必要です。

    Simple Log Service のエンドポイントと AccessKey ペア。詳細については、「エンドポイント」および「AccessKey ペア」をご参照ください。

  3. 生ログを保存する nginx-demo LogStore にログインし、データ変換ページに移動します。

    詳細については、「データ変換タスクの作成」をご参照ください。

  4. エディターでデータ変換ステートメントを入力します。

    http_code LogStore からデータを読み取り、e_table_map 関数を使用して対応するフィールドの値を返します。

    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")])
    重要

    データセキュリティのため、AccessKey は詳細パラメーター設定で構成する必要があります。詳細パラメーターの構成方法については、「データ変換タスクの作成」をご参照ください。

    • res_log_LogStore_pull 関数を使用して、別の LogStore からデータをプルします。詳細については、「res_log_LogStore_pull」をご参照ください。

    • この関数は、入力フィールドの値に基づいてテーブル内の対応する行を検索し、指定されたフィールドの値を返します。詳細については、「e_table_map」をご参照ください。

  5. クリック[データのプレビュー]

    Nginx ログがエンリッチされると、HTTP リターンコードに関連するフィールドが追加されます。

    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. データ変換タスクを作成します。

    詳細については、「データ変換タスクの作成」をご参照ください。

ソリューション 2: MySQL テーブルを使用したデータエンリッチメント

  1. HTTP リターンコードを ApsaraDB RDS for MySQL データベースに保存します。

    以下は、ApsaraDB RDS for MySQL データベース内の HTTP リターンコードマッピングテーブルを示しています。mysql

  2. ApsaraDB RDS for MySQL データベースのホストアドレス、ユーザー名、パスワード、およびテーブル名を取得します。これらの情報はデータ変換ステートメントを編集するために必要です。

  3. 生ログを保存する nginx-demo LogStore にログインし、データ変換ページに移動します。

    詳細については、「データ変換タスクの作成」をご参照ください。

  4. エディターでデータ変換ステートメントを入力します。

    MySQL データベースからデータを読み取り、e_table_map 関数を使用して対応するフィールドの値を返します。

    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")])
    重要

    データセキュリティのため、AccessKey は詳細パラメーター設定で構成する必要があります。詳細パラメーターの構成方法については、「データ変換タスクの作成」をご参照ください。

    • res_rds_mysql 関数を使用して、ApsaraDB RDS for MySQL データベースからテーブルコンテンツをプルします。詳細については、「res_rds_mysql」をご参照ください。

    • この関数は、入力フィールドの値に基づいてテーブル内の対応する行を検索し、指定されたフィールドの値を返します。詳細については、「e_table_map」をご参照ください。

  5. クリック [データのプレビュー]

    Nginx ログがエンリッチされると、HTTP リターンコードに関連するフィールドが追加されます。

    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. データ変換タスクを作成します。

    詳細については、「データ変換タスクの作成」をご参照ください。

ソリューション 3: OSS ファイルを使用したデータエンリッチメント

  1. HTTP リターンコードを http_code.csv という名前のファイルに保存し、そのファイルを Object Storage Service (OSS) バケットにアップロードします。

    詳細については、「ファイルのアップロード」をご参照ください。

  2. http_code.csv ファイルが保存されている OSS バケットの名前、エンドポイント、および AccessKey を取得します。これらの情報はデータ変換ステートメントを編集するために必要です。

    Object Storage Service (OSS) のエンドポイント。詳細については、「リージョンとエンドポイント」をご参照ください。

  3. 生ログを保存する nginx-demo LogStore にログインし、データ変換ページに移動します。

    詳細については、「データ変換タスクの作成」をご参照ください。

  4. エディターでデータ変換ステートメントを入力します。

    OSS バケットからデータを読み取り、e_table_map 関数を使用して対応するフィールドの値を返します。

    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")])
    重要

    データセキュリティのため、AccessKey は詳細パラメーター設定で構成する必要があります。詳細パラメーターの構成方法については、「データ変換タスクの作成」をご参照ください。

    • res_oss_file 関数は、OSS バケットからファイルコンテンツを取得し、定期的なリフレッシュをサポートします。詳細については、「res_oss_file」をご参照ください。

    • tab_parse_csv 関数を使用して、CSV 形式のテキストからテーブルを作成します。詳細については、「tab_parse_csv」をご参照ください。

    • この関数は、入力フィールドの値に基づいてテーブル内の対応する行を検索し、指定されたフィールドの値を返します。詳細については、「e_table_map」をご参照ください。

  5. クリックします[データのプレビュー]

    Nginx ログがエンリッチされると、HTTP リターンコードに関連するフィールドが追加されます。

    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. データ変換タスクを作成します。

    詳細については、「データ変換タスクの作成」をご参照ください。

ソリューション 4: コードの埋め込み

  1. HTTP リターンコードマッピングテーブルを CSV 形式で準備します。

  2. 生ログを保存する nginx-demo LogStore にログインし、データ変換ページに移動します。

    詳細については、「データ変換タスクの作成」をご参照ください。

  3. エディターでデータ変換ステートメントを入力します。

    tab_parse_csv 関数を使用して HTTP リターンコードを CSV 形式からテーブルに変換します。その後、e_table_map 関数を使用して対応するフィールドの値を返します。

    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")])
    重要

    データセキュリティのため、AccessKey は詳細パラメーター設定で構成する必要があります。詳細パラメーターの構成方法については、「データ変換タスクの作成」をご参照ください。

    • tab_parse_csv 関数を使用して、CSV 形式のテキストからテーブルを作成します。詳細については、「tab_parse_csv」をご参照ください。

    • この関数は、入力フィールドの値に基づいてテーブル内の対応する行を検索し、指定されたフィールドの値を返します。詳細については、「e_table_map」をご参照ください。

  4. クリック[データのプレビュー]

    Nginx ログがエンリッチされると、HTTP リターンコードに関連するフィールドが追加されます。

    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. データ変換タスクを作成します。

    詳細については、「データ変換タスクの作成」をご参照ください。