Clickvisual Agent 设计思路
设计方法
- 因为日志是时序数据,有很好的时间顺序,在最上面的日志时间都是比较小的,在最下面的日志时间都是比较大的,利用该特性可以很好的缩小日志检索范围
根据数据匹配,获得后面的时间数据,"ts":"(.*)",拿到$1数据后,按照预设的时间格式解析
- 可以通过二分法,将时间快速缩小查询范围
- 例如日志有7天数据 2023-09-15 00:00:00 ~ 2023-09-22 00:00:00,我们只需要查询两天 2023-09-17 12:00:00 ~ 2023-09-19 09:00:00
结合文本内容,有个start position,end position坐标,初始为startPos=0,结束为endPos=文件大小
- 我们先找 startPos
- 二分取 pos = (startPos + endPos)/2 这一行的日志
- 如果这个日志时间大于 2023-09-17 12:00:00 , 时间符合要求,那就还需要继续往上面找内容
- 如果这个日志时间小于 2023-09-17 12:00:00 , 时间符合要求,那就还需要继续往下面找内容
- 最终会产生一个from 和 to的交叉点,找到最终位置
- 同理 endPos
设计原则
- 支持并发多个文件查询
- 支持按时间来缩小范围
- 支持各种 and 查询
- 支持 offset,limit 条数
- 因为过多的日志内容输出无意义
- 目前命令行只支持limit
- 如果是浏览器,可以记录offset状态
- 支持按照时间顺序,逆序