Todos os produtos
Search
Central de documentação

Simple Log Service:Enriquecer códigos de status de resposta HTTP com a função e_table_map

Última atualização: Jul 03, 2026

Enriqueça os códigos de status de resposta HTTP em logs do Nginx com a função e_table_map. Cada código de status é mapeado para seu alias, categoria e descrição, o que simplifica a análise de logs e a solução de problemas.

Pré-requisitos

Dados de log do Nginx coletados. Para mais informações, consulte Coleta de dados.

Cenário

Uma empresa mantém uma tabela de mapeamento de códigos de status HTTP atualizada periodicamente para uma aplicação. Nos logs brutos do Nginx, apenas o campo http_code indica o status da requisição, mas isso não fornece contexto suficiente para solucionar problemas.

Para resolver essa questão, use a função e_table_map para enriquecer os campos de log com base na tabela de mapeamento de códigos de status HTTP e tornar o status da requisição HTTP mais legível.

  • Exemplo de log bruto:

    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

    O log bruto está armazenado em um Logstore chamado nginx-demo. O campo http_code indica o código de status HTTP.

  • Tabela de mapeamento de códigos de status HTTP:

    A tabela a seguir mostra um exemplo de mapeamento de códigos de status HTTP:

    code

    alias

    category

    desc

    100

    1xx

    Informational

    Continue

    200

    2xx

    Success

    OK

    300

    3xx

    Redirection

    Multiple Choices

    400

    4xx

    Client Error

    Bad Request

  • Exemplo de log enriquecido:

    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

Soluções

Processing flow

image
  1. Converta os códigos de status HTTP em um objeto de tabela.

  2. Use a função e_table_map para enriquecer os dados de log.

Soluções recomendadas

Selecione uma das soluções abaixo para enriquecimento de dados conforme sua fonte de dados e requisitos de atualização:

Solução

Suporte a volume de dados

Atualizações incrementais

Atualizações em lote

Mais indicado para

Enriquecer dados usando um Logstore (recomendado)

Grande

Suportado

Suportado

Tabelas de mapeamento grandes com atualizações frequentes.

Enriquecer dados usando uma tabela MySQL

Grande

Não suportado

Suportado

Tabelas de mapeamento atualizadas frequentemente.

Enriquecer dados usando um arquivo OSS

Grande

Não suportado

Suportado

Tabelas de mapeamento relativamente estáticas e com atualizações pouco frequentes.

Incorporar a tabela de mapeamento no código

Pequeno

Não suportado

Não suportado

Tabelas de mapeamento de códigos de status HTTP padrão com pequenos volumes de dados.

Solução 1: Enriquecer dados usando um Logstore (recomendado)

  1. Grave os dados de mapeamento de códigos de status HTTP em um Logstore chamado http_code com um SDK.

    O exemplo a seguir mostra um log de código de status HTTP no Logstore:

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

    Para mais informações, consulte Referência do SDK.

  2. Obtenha o nome do Logstore, o endpoint e o par de AccessKey do Logstore que armazena os dados de mapeamento de códigos de status HTTP.

    Para mais informações sobre o endpoint e o par de AccessKey, consulte Endpoints e Par de AccessKey.

  3. Abra o Logstore nginx-demo que armazena os logs brutos e acesse a página de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

  4. No editor, insira a instrução de transformação de dados.

    Leia os dados do Logstore http_code e use a função e_table_map para retornar os valores dos campos correspondentes:

    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")])
    Importante

    Para garantir a segurança dos dados, configure o par de AccessKey nas configurações avançadas de parâmetros. Para mais informações, consulte Criar uma tarefa de transformação de dados.

    • A função res_log_logstore_pull extrai dados de outro Logstore. Para mais informações, consulte res_log_logstore_pull.

    • A função e_table_map localiza a linha correspondente na tabela com base no valor do campo de entrada e retorna os valores dos campos especificados. Para mais informações, consulte e_table_map.

  5. Clique em Preview Data.

    Após o enriquecimento, o log do Nginx inclui os seguintes campos de código de status 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. Crie uma tarefa de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

Solução 2: Enriquecer dados usando uma tabela MySQL

  1. Armazene os códigos de status HTTP em um banco de dados ApsaraDB RDS for MySQL.

    O exemplo a seguir mostra a tabela de mapeamento de códigos de status HTTP no RDS for MySQL.

    MySQL [etl-test]> select * from http_code limit 10;
    +------+-------+---------------+-----------------------------------+
    | code | alias | category      | description                       |
    +------+-------+---------------+-----------------------------------+
    | 100  | 1xx   | Informational | Continue                          |
    | 101  | 1xx   | Informational | Switching Protocols               |
    | 102  | 1xx   | Informational | Processing (WebDAV)               |
    | 200  | 2xx   | Success       | OK                                |
    | 201  | 2xx   | Success       | Created                           |
    | 202  | 2xx   | Success       | Accepted                          |
    | 203  | 2xx   | Success       | Non-Authoritative Information     |
    | 204  | 2xx   | Success       | No Content                        |
    | 205  | 2xx   | Success       | Reset Content                     |
    | 206  | 2xx   | Success       | Partial Content                   |
    +------+-------+---------------+-----------------------------------+
    10 rows in set (0.04 sec)
  2. Obtenha o endereço do host, o nome de usuário, a senha, o nome do banco de dados e o nome da tabela do banco de dados ApsaraDB RDS for MySQL.

  3. Abra o Logstore nginx-demo que armazena os logs brutos e acesse a página de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

  4. No editor, insira a instrução de transformação de dados.

    Leia os dados do banco de dados MySQL e use a função e_table_map para retornar os valores dos campos correspondentes:

    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")])
    Importante

    Para garantir a segurança dos dados, configure o par de AccessKey nas configurações avançadas de parâmetros. Para mais informações, consulte Criar uma tarefa de transformação de dados.

    • A função res_rds_mysql extrai o conteúdo da tabela de um banco de dados ApsaraDB RDS for MySQL. Para mais informações, consulte res_rds_mysql.

    • A função e_table_map localiza a linha correspondente na tabela com base no valor do campo de entrada e retorna os valores dos campos especificados. Para mais informações, consulte e_table_map.

  5. Clique em Preview Data.

    Após o enriquecimento, o log do Nginx inclui os seguintes campos de código de status 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. Crie uma tarefa de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

Solução 3: Enriquecer dados usando um arquivo OSS

  1. Salve os códigos de status HTTP em um arquivo chamado http_code.csv e faça upload do arquivo para um bucket do Object Storage Service (OSS).

    Para mais informações, consulte Fazer upload de arquivos.

  2. Obtenha o nome do bucket, o endpoint e o par de AccessKey do bucket OSS onde o arquivo http_code.csv está armazenado.

    Para mais informações sobre endpoints do OSS, consulte Regiões e endpoints.

  3. Abra o Logstore nginx-demo que armazena os logs brutos e acesse a página de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

  4. No editor, insira a instrução de transformação de dados.

    Leia os dados do bucket OSS e use a função e_table_map para retornar os valores dos campos correspondentes:

    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")])
    Importante

    Para garantir a segurança dos dados, configure o par de AccessKey nas configurações avançadas de parâmetros. Para mais informações, consulte Criar uma tarefa de transformação de dados.

    • A função res_oss_file recupera o conteúdo de arquivos de um bucket OSS e suporta atualização periódica. Para mais informações, consulte res_oss_file.

    • A função tab_parse_csv cria uma tabela a partir de texto no formato CSV. Para mais informações, consulte tab_parse_csv.

    • A função e_table_map localiza a linha correspondente na tabela com base no valor do campo de entrada e retorna os valores dos campos especificados. Para mais informações, consulte e_table_map.

  5. Clique em Preview Data.

    Após o enriquecimento, o log do Nginx inclui os seguintes campos de código de status 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. Crie uma tarefa de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

Solução 4: Incorporar a tabela de mapeamento no código

  1. Prepare a tabela de mapeamento de códigos de status HTTP no formato CSV.

  2. Abra o Logstore nginx-demo que armazena os logs brutos e acesse a página de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.

  3. No editor, insira a instrução de transformação de dados.

    Use a função tab_parse_csv para converter os códigos de status HTTP do formato CSV em uma tabela e, em seguida, use a função e_table_map para retornar os valores dos campos correspondentes:

    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")])
    Importante

    Para garantir a segurança dos dados, configure o par de AccessKey nas configurações avançadas de parâmetros. Para mais informações, consulte Criar uma tarefa de transformação de dados.

    • A função tab_parse_csv cria uma tabela a partir de texto no formato CSV. Para mais informações, consulte tab_parse_csv.

    • A função e_table_map localiza a linha correspondente na tabela com base no valor do campo de entrada e retorna os valores dos campos especificados. Para mais informações, consulte e_table_map.

  4. Clique em Preview Data.

    Após o enriquecimento, o log do Nginx inclui os seguintes campos de código de status 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. Crie uma tarefa de transformação de dados.

    Para mais informações, consulte Criar uma tarefa de transformação de dados.