日志是很重要的东西,我们可以分析日志得出很多规律和结论。而cacti又是很强大的画图工具,可以通过它把数据以图表的方式表现出来。
下面我要做的事情,就是用脚本对日志做实时分析,把结果输出到文本中,然后自定义OID,获取其中的值,而cacti通过自定义图表,用snmp取值,用rrdtool画图。
关键在于对日志做实时分析,这个说出来其实很简单,使用一个tail -f 读日志文件,通过管道,调用自己写的脚本来分析。
将24小时分成5分钟一段,每条日志的三个数据(结束时间,耗时,字节数)读出来,根据结束时间(注意日志里的时间是结束时间,不是开始时间)计算出开始时间,然后看这个时间落在哪几个5分钟的段里面,将它的字节大小乘以1.07, 按秒平均后放进去。这样就可以算出之前的流量。
乘以1.07是国外通行的做法,因为网络开销比这个日志里的字节数要大(包头啊等等)。
由于在实时计算的时候,可能某些请求还没有结束(一个请求完成后才会写进日志),因此在20分钟内,可能算出来的流量图会变化,基本上20分钟后出来的流量数据就准确了。
然后自定义OID,cacti利用snmp取值,用rrdtool画图,就可以得到图了