一、原始日志
[ { "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%采样)。