有奖:语音产品征文挑战赛火热进行中> HOT

背景

用户使用 CLS 仪表盘时,偶尔会遇到检索超时,导致图表绘制失败的问题,这个时候,可以考虑将日志转为指标(Metric)数据,然后使用 PromQL 对指标进行计算分析,其分析性能比日志高,可以有效的解决仪表盘超时的问题。

概述

使用定时 SQL,可以从日志中提取指标,并将指标保存在指标主题中。相比日志,指标查询快,存储空间小,可对接 Promethues 生态。指标的更多信息参见 指标存储概述
下述内容以示例的形式来说明如何使用定时 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. 根据上述业务场景,在控制台配置统计分析中,输入SQL语句进行验证,语句如下:
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
调度周期
1分钟,意为每1分钟发起一次查询,并将结果保存到指标主题
SQL 时间窗口
@m-1m,@m ,意为查询的时间范围近1分钟
SQL 语句
* | 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
指标名称
pv,bad_request_count,P99_request_time,一般为数值
指标维度
url,一般都是 group by 后面的字段,例子中是按照 URL 去分组统计的意思。
自定义维度
{"Author","Coder"}。添加您自己的维度,实际生产中可能是您所在的开发组、应用、或者集群、命名空间之类的。
4. 查看定时 SQL 分析
可以查看每分钟会调度一次我们配置的 SQL 语句,并将查询结果输出至指标主题。
5. 在定时 SQL 分析任务详情中找到目标主题 NginxMetric,点击跳转至指标主题页面,点击浏览指标,从指标列表中选择一个指标进行查看。
6. 使用 指标检索 对指标数据进行计算分析,并将分析结果添加至仪表盘