日志转指标

最近更新时间:2024-04-19 15:07:02

我的收藏
存储在日志主题中的原始日志可通过 SQL 进行统计,获取其中的指标。例如通过以下 SQL 获取错误请求数,错误请求数 errorRequestCount 即为一个指标:
status:>=400 | select count(*) as errorRequestCount
这种获取指标的方式非常灵活,可通过调整检索条件和 SQL 语句随时获取新的指标或更改指标计算规则,但其依赖原始日志完整存储于日志主题 标准存储 中,如果需要查询最近60天的指标变化趋势,则原始日志至少需存储60天,带来较大的数据存储成本。
当指标比较固定时,可将原始日志转换为指标进行存储,降低原始日志存储天数(也可以使用 日志沉降投递到 COS 来低成本保存历史日志),进而降低整体成本。除此之外,由于转换后指标的数据条数一般远小于原始日志条数,指标主题也针对时序类型的数据查询进行了专门的优化,对转换后的指标进行查询时性能往往更好,可以更快的查询指标、绘制仪表盘。

转换逻辑

日志服务通过 定时 SQL 分析 将原始日志转换为指标,例如某一分钟有10条日志,通过 定时 SQL 分析 将这10条日志转换为指标。
原始日志:
{"requestTime":"2020/12/30 15:35:46","method":"POST","handler":"/messages","timeCost":"45","status":"200"}
{"requestTime":"2020/12/30 15:35:46","method":"POST","handler":"/users","timeCost":"23","status":"200"}
{"requestTime":"2020/12/30 15:35:47","method":"POST","handler":"/messages","timeCost":"57","status":"200"}
{"requestTime":"2020/12/30 15:35:47","method":"POST","handler":"/users","timeCost":"25","status":"200"}
{"requestTime":"2020/12/30 15:35:47","method":"POST","handler":"/users","timeCost":"689","status":"200"}
{"requestTime":"2020/12/30 15:35:48","method":"POST","handler":"/users","timeCost":"87","status":"200"}
{"requestTime":"2020/12/30 15:35:48","method":"POST","handler":"/users","timeCost":"34","status":"200"}
{"requestTime":"2020/12/30 15:35:48","method":"POST","handler":"/users","timeCost":"698","status":"200"}
{"requestTime":"2020/12/30 15:35:48","method":"POST","handler":"/messages","timeCost":"25","status":"200"}
{"requestTime":"2020/12/30 15:35:48","method":"POST","handler":"/messages","timeCost":"78","status":"200"}
定时SQL:
* | select count(*) as requests_total,method,handler group by method,handler order by requests_total desc limit 10000
转换为如下指标:
requests_total{method="POST", handler="/messages"} 4
requests_total{method="POST", handler="/users"} 6
定时 SQL 任务可周期性执行,例如每分钟执行一次,每次对最近一分钟的原始日志进行转换,即可自动的将原始日志转换为分钟粒度的指标。

前提条件

已上报日志至日志主题,且采用标准存储,低频存储因为不支持 SQL 所以无法转换为指标。
该日志主题已 配置索引

操作步骤

步骤1:添加定时 SQL 分析

2. 在左侧导航栏中,选择定时 SQL 分析,单击新建,新建任务。
3. 在页面中填写配置,主要信息如下:
配置项
说明
源日志主题
定时 SQL 任务的输入,即需要转换为指标的原始日志所在的日志主题。
写入目标
定时 SQL 任务的输出,选择指标主题,将转换后的指标存储在指定的指标主题中。如当前没有指标主题,可 创建指标主题
执行语句
使用 SQL 语句 对原始日志进行统计以获取指标,例如:
* | select count(*) as requests_total,method,handler group by method,handler order by requests_total desc limit 10000
指标名称
从 SQL 语句结果中选择需要作为指标名称的字段,例如上面的例中requests_total为指标名称,其值为指标值。
指标维度
从 SQL 语句结果中选择需要作为指标维度的字段,例如上面的例中methodhandler为指标维度。
调度范围
查询日志的时间范围,例如需要查询2023年1月1日 00:00:00-2023年3月31日00:00:00的日志数据,结束时间为空意为任务将持续运行。
推荐使用将结束时间设为空,持续将新采集的日志转换为指标。
调度周期
周期性查询,取值范围1-1440分钟,意为每 X 分钟会查询一次日志。
推荐每1分钟执行一次,更加及时的将日志转化为指标。
查询时间范围
指定查询语句的时间窗口。
推荐使用【@m-1m ~ @m】,即最近1分钟,结合调度周期的【1分钟】,相当于每分钟将这一分钟的日志转化为指标。
高级设置
查询延迟的时间,在控制台【高级设置】中,取值范围60-120秒。日志生成索引一般会有延迟,在索引生成之前,不可查询,因此设置60秒延迟查询,此时索引已生成(99.9%的索引数据将在5秒内生成)。
4. 单击确定,保存配置。

步骤2:查询生成的指标

1. 在左侧导航栏中,选择检索分析,在顶部选择指标主题所在的地域,主题类型选择“指标主题”,然后选择需要的指标主题。
2. 在输入框中输入指标名称查询指标。