如果您需要监控Log中某字段的指标变化趋势,可以使用日志服务数据加工函数e_to_metric将Log字段转换为Metric,通过时序库查看该指标的变化趋势。本文以Nginx访问日志为例说明如何将Log转化为Metric。
前提条件
背景信息
应用程序的运行数据,主要有Log、Trace和Metric这三大类数据。Log是离散的事件,Trace可以认为是带请求追踪的事件,Metric是带统计量的事件。Log、Trace、Metric本质上都是事件,满足事件存储的系统都可以用来存储这三类数据。日志服务提供两种存储:
- Logstore
日志服务中Log的采集、存储和查询单元。更多信息,请参见日志库(Logstore)。
- MetricStore
日志服务中Metric的采集、存储和查询单元。日志服务MetricStore针对Metric做了大量优化,提供PromQL查询能力,支持Prometheus协议。更多信息,请参见时序库(MetricStore)。
很多应用的Log数据往往比Metric全面,Metric可以认为是特定格式的Log,因此在日志服务中可以将Log转换为Metric。常见的Log转Metric的方法如下:
- 使用日志服务的Scheduled SQL功能聚合日志产生指标。更多信息,请参见从Logstore到MetricStore。
- 使用数据加工e_to_metric函数将Log转换为Metric。
场景描述
某企业在华东1(杭州)地域创建了名为nginx-demo的Logstore,用于存储Nginx服务的访问日志。
该企业需要监控后端服务器(Host)的每次请求耗时(request_time)和响应耗时(upstream_response_time)变化情况,并通过仪表盘展示变化趋势。
body_bytes_sent:1750
host:www.example.com
http_referer:www.guide.example.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.113.10
remote_addr:203.0.113.10
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
status:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66
为实现以上需求,您需要将Log中request_time和upstream_response_time字段转换为Metric,并打上Host标签。
步骤一:创建时序库
创建名称为service-metric的时序库,用于保存数据加工后的时序数据。
步骤二:创建数据加工任务
使用e_to_metric函数创建数据加工任务,并保存加工后数据到步骤一创建的时序库。
以上步骤配置完成后,日志服务开始将Log加工到目标时序库service-metric。