帮你快速理解、总结文档立即下载

日志过滤

最近更新时间:2026-10-09 19:13:31
我的收藏

场景描述1

用户将工具的日志采集到了 CLS,现需要将 cmdb 日志中操作方法为 PUT 和 POST 的日志过滤出来。

原始日志

[
{
"path": "/eks/pod/running",
"clientIP": "1.*.*.123",
"method": "POST"
},
{
"path": "/cmdb/login",
"clientIP": "1.*.*.123",
"method": "PUT"
},
{
"path": "/cmdb/start",
"clientIP": "1.*.*.123",
"method": "GET"
}
]

加工语句

//path中包含有cmdb字符,保留该日志,其余日志过滤掉
log_keep(regex_match(v("path"),regex="cmdb",full=False))
//method中包含POST或者PUT字符,保留该日志
log_keep(regex_match(v("method"),regex="POST|PUT",full=False))

加工结果

{
"clientIP":"1.*.*.123",
"method":"PUT",
"path":"/cmdb/login"
}

场景描述2

用户希望从海量业务日志中按比例随机抽取少量日志用于离线分析,减少后续存储和计算成本。此场景下不关心具体字段,仅需要按比例随机采样,例如1%的采样率。

原始日志

[
{ "requestId": "req-1", "userId": "u-1001", "status": 200 },
{ "requestId": "req-2", "userId": "u-1002", "status": 200 },
{ "requestId": "req-3", "userId": "u-1003", "status": 500 }
]

加工语句

//从1-100中随机取一个整数,等于5时保留该日志,其余过滤掉,实现1%的随机采样
log_keep(op_eq(random(1, 100), 5))

加工结果

{
"requestId": "req-2",
"userId": "u-1002",
"status": 200
}
说明:
random(1, 100) 返回区间 [1, 100] 内的随机整数,op_eq(a, b) 判断两值是否相等。调整 op_eq 右侧的数值或 random 的区间,可灵活控制采样率(如1/100为1%采样,1/1000为0.1%采样)。