Nginx日志是运维网站的重要信息,日志服务通过e_table_map函数快速对HTTP请求的返回码进行富化,便于您分析日志数据。本文介绍通过日志服务数据加工富化HTTP返回码的操作方法。
前提条件
场景描述
某企业在应用A开发过程中,统一定义了HTTP请求的返回码信息(数据量不定期更新),便于统一维护。在应用程序维护过程中,原始Nginx日志中仅http_code用于标记HTTP请求的状态,该字段无法满足人员定位问题。
针对以上需求,需要基于HTTP返回码映射表,使用e_table_map函数对日志字段进行富化,便于直观判断HTTP请求状态。
- 原始日志样例
该原始日志存储在名称为nginx-demo的Logstore中,http_code字段即为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
- 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
可选方案
加工流程

- 将HTTP返回码转换为Table对象。
- 使用e_table_map函数进行数据加工富化。
可选方案
为实现以上需求,您可以选择如下合适方案进行数据富化。
方案 | 数据量支持能力 | 增量更新 | 批量更新 | 适用场景 |
---|---|---|---|---|
使用Logstore实现富化(推荐) | 大量 | 支持 | 支持 | 大数据量且频繁更新的映射表。 |
通过MySQL表实现富化 | 较大 | 不支持 | 支持 | 频繁更新的映射表。 |
通过使用OSS文件实现富化 | 较大 | 不支持 | 支持 | 相对静态的,更新不频繁的映射表。 |
代码内嵌 | 小 | 不支持 | 不支持 | 简单HTTP返回码映射表。 |