背景
用户使用 CLS 仪表盘时,偶尔会遇到检索超时,导致图表绘制失败的问题,这个时候,可以考虑将日志转为指标(Metric)数据,然后使用 PromQL 对指标进行计算分析,其分析性能比日志高,可以有效的解决仪表盘超时的问题。
概述
下述内容以示例的形式来说明如何使用定时 SQL 转 Metric。其业务场景是:从 Nginx 日志中提取3个指标(PV、失败请求数、P99_请求时间)。指标维度是 URL,按照 PV 的大小取 TOP10。
我们将使用定时 SQL,完成日志转指标。
操作步骤
1. 登录 CLS 控制台,选择重庆地域,打开 Nginx Demo 日志主题(免费的体验主题)检索分析页面,Demo 日志主题请参见 使用 Demo 日志快速体验 CLS。
单条的原始日志如下:
{"remote_addr":"124.78.124.112""method":"GET""upstream_addr":"169.254.128.14:60002""upstream_response_length":"48""body_bytes_sent":"59""time_local":"2021-12-03T17:16:58+00:00""version":"HTTP/1.1""url":"/""http_user_agent":"-""remote_user":"-""req_id":"e3d1ae06b30344539bc7e28314d542fa""upstream_status":"400""request_time":"0.002""sys_address":"11.149.155.219""request_length":"40""http_referer":"-""sys_datasource":"gz.1.1.v1.2.19""proxy_upstream_name":"default-kubernetes-443""upstream_response_time":"0.000""time":"1702542388004""timestamp":"2023-12-14T16:26:28+08:00""status":"400"}
2. 打开 demo 日志主题的检索分析,输入查询语句如下:
select count(*)as pv, count_if(status>=400)as bad_request_count, approx_percentile(request_time,0.99) as P99_request_time,url group by url order by pv desc limit 10
结果如下图,确认了查询语句的准确性:

3. 在统计图表 TAB 页面的右上方,单击存为定时 SQL 分析。完成基本配置项。
配置项 | 说明 |
任务名称 | Log2Metric |
写入目标 | 选择指标主题,提前新建好,示例中的名称为 NginxMetric。 |
执行语句 | * | select count(*)as pv, count_if(status>=400)as bad_request_count, approx_percentile(request_time,0.99) as P99_request_time,url group by url order by pv desc limit 10 |
预览结果 | 单击预览。 |
指标名称 | 系统默认填充您 SQL 语句中的统计指标(数值类型): pv,bad_request_count,P99_request_time |
指标维度 | 单击下拉菜单,选中 url,一般都是 group by 后面的字段,例子中是按照 URL 去分组统计的意思。 |
自定义维度 | {"Author","Coder"}。添加您自己的维度,实际生产中可能是您所在的开发组、应用、或者集群、命名空间之类的。 |
时间戳 | 默认(查询时间窗口左侧),例如查询的是00:00:00-00:00:01的数据,那么生成的指标的时间戳为窗口的左侧时间:00:00:00。 |
4. 单击下一步,进入调度配置。
配置项 | 说明 |
调度范围 | 定时 SQL 处理的数据范围。 |
调度周期 | 1分钟,意为每1分钟发起一次查询,并将结果保存到指标主题。 |
查询时间窗口 | 选择时间表达式,@m-1m,@m,意为查询的时间范围近1分钟。 |
5. 单击确定,保存任务。
6. 在检索分析页面右上角点击更多,单击定时 SQL 分析,选择名称为 log2Metric 的任务,进入任务详情页面。
7. 在当前定时 SQL 分析任务详情中找到目标主题 NginxMetric,单击目标主题,跳转至指标主题查询页面,单击浏览指标,从指标列表中选择一个指标进行查看。
8. 使用 指标检索 对指标数据进行计算分析,并将分析结果添加至仪表盘。
