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

Simple Log Service:e_table_map関数を使用してHTTPレスポンスステータスコードを強化する

最終更新日:Sep 06, 2024

NGINXログは、WebサイトのO&Mに使用できる重要な情報を記録します。Simple Log Serviceは、NGINXログ分析用のHTTPレスポンスステータスコードを強化するために使用できるe_table_map関数を提供します。 このトピックでは、e_table_map関数を使用してHTTPレスポンスステータスコードを強化する方法について説明します。

前提条件

NGINXログが収集されます。 詳細については、「データ収集の概要」をご参照ください。

シナリオの例

企業はアプリケーションAを開発し、アプリケーションを維持するためにHTTP応答ステータスコードを定義しました。 データは不規則な間隔で更新されます。 生のNGINXログのhttp_codeフィールドのみがHTTPリクエストのステータスを示します。 このフィールドを使用して問題を効率的に識別することはできません。

この場合、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応答ステータスコードのマッピング表である。

    コード

    エイリアス

    カテゴリ

    desc

    100

    1xx

    情報

    続行

    200

    2xx

    Success

    OK

    300

    3xx

    リダイレクション

    複数の選択肢

    400

    4xx

    クライアントエラー

    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テーブルに基づくデータの強化

非対応

対応

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

Object Storage Service (OSS) オブジェクトに基づくデータの強化

非対応

対応

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

埋め込みコードに基づくデータの強化

非対応

非対応

マッピングテーブルは、典型的なHTTP応答ステータスコードを含む。

解決策1 :( 推奨) Logstoreに基づいてデータをエンリッチする

  1. SDKを使用して、HTTPレスポンスステータスコードをhttp_codeという名前のLogstoreに書き込みます。

    次の例は、http_code LogstoreのHTTP応答ステータスコードを含むログを示しています。

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

    詳細については、「Simple Log Service SDKの概要」をご参照ください。

  2. http_code 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ペアを指定することを推奨します。 詳細パラメーター設定フィールドの設定方法の詳細については、「データ変換ジョブの作成」をご参照ください。

    • Logstore内のデータを変換するときに、res_log_logstore_pull関数は別のLogstoreからデータをプルします。 詳細は、「res_log_logstore_pull」をご参照ください。

    • e_table_map関数は、入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。 詳細については、「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 name",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関数は、入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。 詳細については、「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オブジェクトをOSSバケットにアップロードします。

    詳細については、「オブジェクトのアップロード」をご参照ください。

  2. http_code.csvオブジェクトがアップロードされたOSSバケットの名前とエンドポイント、および必要なAccessKeyペアを取得します。 得られた情報は、データ変換文を書き込むために使用される。

    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関数は、入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。 詳細については、「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. CSV形式のHTTPレスポンスステータスコードのマッピングテーブルを用意します。

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

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

  3. エディターボックスに、データ変換ステートメントを入力します。

    tab_parse_csv関数を使用して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関数は、入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。 詳細については、「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. データ変換ジョブを作成します。

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