详情页标题前

阿里云日志服务SLS使用e_table_map函数对HTTP请求返回码进行富化-云淘科技

详情页1

Nginx日志是运维网站的重要信息,日志服务通过e_table_map函数快速对HTTP请求的返回码进行富化,便于您分析日志数据。本文介绍通过日志服务数据加工富化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.103.10
    remote_addr:203.0.103.10
    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.103.10
    remote_addr:203.0.103.10
    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

可选方案

加工流程

阿里云日志服务SLS使用e_table_map函数对HTTP请求返回码进行富化-云淘科技

  1. 将HTTP返回码转换为Table对象。
  2. 使用e_table_map函数进行数据加工富化。

可选方案

为实现以上需求,您可以选择如下合适方案进行数据富化。

方案 数据量支持能力 增量更新 批量更新 适用场景
使用Logstore实现富化(推荐) 大量 支持 支持 大数据量且频繁更新的映射表。
通过MySQL表实现富化 较大 不支持 支持 频繁更新的映射表。
通过使用OSS文件实现富化 较大 不支持 支持 相对静态的,更新不频繁的映射表。
代码内嵌 不支持 不支持 简单HTTP返回码映射表。

方案一:使用Logstore实现富化(推荐)

  1. 通过SDK方式将HTTP返回码写入名为http_code的Logstore。Logstore中HTTP返回码日志样例如下:
    __source__:203.0.103.10
    __tag__:__receive_time__:1595424194
    __topic__:
    code:200
    alias:2xx
    description:OK
    category:Success

    更多信息,请参见SDK参考。

  2. 获取HTTP返回码Logstore的名称、服务入口和AccessKey,用于后续编辑数据加工语句。日志服务的服务入口和访问密钥AccessKey。更多信息,请参见服务入口和访问密钥。
  3. 登录原始日志nginx-demo的Logstore,进入数据加工页面。具体操作,请参见创建数据加工任务。
  4. 在编辑框中,输入数据加工语句。从HTTP返回码Logstore(名称为http_code)中读取数据,并通过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.103.10
    remote_addr:203.0.103.10
    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. 创建数据加工任务。更多信息,请参见创建数据加工任务。

方案二:通过MySQL表实现富化

  1. 将HTTP返回码存入RDS MySQL数据库。RDS MySQL中HTTP返回码映射表如下所示。阿里云日志服务SLS使用e_table_map函数对HTTP请求返回码进行富化-云淘科技
  2. 获取RDS MySQL数据库的主机地址、用户名、密码和数据库表等,用于后续编辑数据加工语句。
  3. 登录原始日志nginx-demo的Logstore,进入数据加工页面。具体操作,请参见创建数据加工任务。
  4. 在编辑框中,输入数据加工语句。从MySQL数据库中读取数据,并通过e_table_map函数将对应字段的值返回。
    e_table_map(res_rds_mysql(address="MySQL主机地址", 
                      username="用户名", password="密码",
                      database="数据库",table="表名", refresh_interval=300),
                  [("http_code","code")],
                  [("alias","http_code_alias"), ("description","http_code_desc"), 
                  ("category","http_code_category")])


    注意 为了数据安全,建议在高级参数配置中配置AccessKey。关于如何配置高级参数,请参见创建数据加工任务。

    • 使用res_rds_mysql函数从RDS 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.103.10
    remote_addr:203.0.103.10
    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. 创建数据加工任务。更多信息,请参见创建数据加工任务。

方案三:通过使用OSS文件实现富化

  1. 将HTTP返回码保存至名为http_code.csv的文件中,上传至OSS Bucket。更多信息,请参见OSS上传文件。
  2. 获取http_code.csv文件所在OSS Bucket名称、服务入口和AccessKey,用于后续编辑数据加工语句。对象存储OSS的服务入口。更多信息,请参见访问域名和数据中心。
  3. 登录原始日志nginx-demo的Logstore,进入数据加工页面。具体操作,请参见创建数据加工任务。
  4. 在编辑框中,输入数据加工语句。从OSS Bucket中读取数据,并通过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 Bucket中获取文件内容,并支持定期刷新。更多信息,请参见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.103.10
    remote_addr:203.0.103.10
    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. 创建数据加工任务。更多信息,请参见创建数据加工任务。

方案四:代码内嵌

  1. 准备CSV格式的HTTP返回码映射表。
  2. 登录原始日志nginx-demo的Logstore,进入数据加工页面。具体操作,请参见创建数据加工任务。
  3. 在编辑框中,输入数据加工语句。通过tab_parse_csv函数对CSV格式的HTTP返回码进行转换,并通过e_table_map函数将对应字段的值返回。
    e_table_map(tab_parse_csv("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
    207,2xx,Success,Multi-Status (WebDAV)
    208,2xx,Success,Already Reported (WebDAV)
    226,2xx,Success,IM Used
    300,3xx,Redirection,Multiple Choices
    301,3xx,Redirection,Moved Permanently
    302,3xx,Redirection,Found
    303,3xx,Redirection,See Other
    304,3xx,Redirection,Not Modified
    305,3xx,Redirection,Use Proxy
    306,3xx,Redirection,(Unused)
    307,3xx,Redirection,Temporary Redirect
    308,3xx,Redirection,Permanent Redirect (experimental)
    400,4xx,Client Error,Bad Request
    401,4xx,Client Error,Unauthorized
    402,4xx,Client Error,Payment Required
    403,4xx,Client Error,Forbidden
    404,4xx,Client Error,Not Found
    405,4xx,Client Error,Method Not Allowed
    406,4xx,Client Error,Not Acceptable
    407,4xx,Client Error,Proxy Authentication Required
    408,4xx,Client Error,Request Timeout
    409,4xx,Client Error,Conflict
    410,4xx,Client Error,Gone
    411,4xx,Client Error,Length Required
    412,4xx,Client Error,Precondition Failed
    413,4xx,Client Error,Request Entity Too Large
    414,4xx,Client Error,Request-URI Too Long
    415,4xx,Client Error,Unsupported Media Type
    416,4xx,Client Error,Requested Range Not Satisfiable
    417,4xx,Client Error,Expectation Failed
    418,4xx,Client Error,I'm a teapot (RFC 2324)
    420,4xx,Client Error,Enhance Your Calm (Twitter)
    422,4xx,Client Error,Unprocessable Entity (WebDAV)
    423,4xx,Client Error,Locked (WebDAV)
    424,4xx,Client Error,Failed Dependency (WebDAV)
    425,4xx,Client Error,Reserved for WebDAV
    426,4xx,Client Error,Upgrade Required
    428,4xx,Client Error,Precondition Required
    429,4xx,Client Error,Too Many Requests
    431,4xx,Client Error,Request Header Fields Too Large
    444,4xx,Client Error,No Response (Nginx)
    449,4xx,Client Error,Retry With (Microsoft)
    450,4xx,Client Error,Blocked by Windows Parental Controls (Microsoft)
    451,4xx,Client Error,Unavailable For Legal Reasons
    499,4xx,Client Error,Client Closed Request (Nginx)
    500,5xx,Server Error,Internal Server Error
    501,5xx,Server Error,Not Implemented
    502,5xx,Server Error,Bad Gateway
    503,5xx,Server Error,Service Unavailable
    504,5xx,Server Error,Gateway Timeout
    505,5xx,Server Error,HTTP Version Not Supported
    506,5xx,Server Error,Variant Also Negotiates (Experimental)
    507,5xx,Server Error,Insufficient Storage (WebDAV)
    508,5xx,Server Error,Loop Detected (WebDAV)
    509,5xx,Server Error,Bandwidth Limit Exceeded (Apache)
    510,5xx,Server Error,Not Extended
    511,5xx,Server Error,Network Authentication Required
    598,5xx,Server Error,Network read timeout error
    599,5xx,Server Error,Network connect timeout error
    "),
                  [("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.103.10
    remote_addr:203.0.103.10
    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. 创建数据加工任务。更多信息,请参见创建数据加工任务。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/163525.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云日志服务SLS数据加密-云淘科技

    日志服务支持通过密钥管理服务KMS(Key Management Service)对数据进行加密存储,提供数据静态保护能力。日志服务同时支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。 服务器端加密 日志服务支持如下两种加密类型机制: 通过日志服务自带的服务密钥加密 日志服务为每个Logstore生成独立的数据加密密钥,用于数据…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云RDS数据库RDS实例间数据迁移-云淘科技

    本文介绍如何使用数据传输服务(Data Transmission Service,简称DTS),实现RDS实例间的数据迁移。DTS支持结构迁移、全量数据迁移以及增量数据迁移,同时使用这三种迁移类型可以实现在自建应用不停服的情况下,平滑地完成数据库的迁移。 前提条件 迁移场景中RDS实例的数据库类型必须满足如下条件: 源数据库 目标数据库 RDS MySQL(…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云云原生大数据计算服务 MaxCompute划分数据域-云淘科技

    数据仓库是面向主题(数据综合、归类并进行分析利用)的应用。数据仓库模型设计除横向的分层外,通常也需要根据业务情况纵向划分数据域。数据域是联系较为紧密的数据主题的集合,是业务对象高度概括的概念,目的是便于管理和应用数据。 通常,您需要阅读各源系统的设计文档、数据字典和数据模型,研究逆向导出的物理数据模型。进而,可以进行跨源的主题域合并,跨源梳理出整个企业的数据…

  • 阿里云日志服务SLS畅捷通-云淘科技

    日志服务帮助畅捷通运维开发团队解决了误报频繁、 无法快速发现问题站点、无法快速定位异常的问题,实现了运维效率、运维成本、沟通成本等方面的改善。日志服务支撑了畅捷通所有云产品的健康稳定运行,在IT运维开发领域树立了一个标杆。 公司简介 畅捷通信息技术股份有限公司是用友旗下成员企业。畅捷通致力于为小微企业提供社交化、个性化、服务化、小量化的生意管理支持。畅捷通针…

    2023年12月10日
  • 阿里云日志服务SLS采集Log4j日志-云淘科技

    本文介绍如何通过Loghub Log4j Appender或Logtail采集Log4j日志。 背景信息 Log4j是Apache的一个开放源代码项目,通过Log4j,可以控制日志的优先级、输出目的地和输出格式。日志的优先级从高到低为ERROR、WARN、 INFO、DEBUG,日志的输出目的地指定了将日志打印到控制台还是文件中,输出格式控制了输出的日志内容…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。