点击标题下「蓝色微信名」可快速关注
预计阅读时间:7分钟
由于Oracle没有MySQL或EDB慢日志这种机制,因此最近有一个运维的需求,需要解析应用的日志,进行SQL语句执行时间的统计,进而进行监控。
每个应用集群中的节点,会生成自己的处理日志,日志采用循环复写的机制,单个文件512MB,一天最多产生10个,日志文件中待检索的格式,模拟如下,
第一行:时间戳(yyyymmdd-hh24miss.sss-唯一交易ID
第二行:备注信息
第三行:SQL语句原文/SQL参数/开始/结束标识
虽然某一时刻,最多可能有10个日志,但由于选择5-10分钟采集一次,考虑到系统并发的业务需求,因此这段时间内产生多个新日志的可能性并不是很高,所以打算采用抽样的方法,每次到达采集的时间点,只选择解析最新的一个日志,同时,为了降低对应用节点,正常业务的影响,采用分布处理的方法,应用节点上会扫描日志,生成中间日志,管理节点定期采集中间日志,在管理节点上,进行统计和分析,思路如下:
这里先考虑第一步操作,即如何生成中间日志。
下面是一个原始日志的例子:
2