在实际工作中,如果你公司有运维部门,那么这种监控功能其实是运维做的。
往往可能你公司就那么几个开发,所以运维还是得自己来。
如果你们的系统比较大,做了分布式,访问量也很大,建议你使用ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台。
说出来也比较高大上,如果是小型的就直接写个脚本监控得了。
这边我们用Groovy来写脚本,Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。
先简单的介绍下实现原理,我们这边的nginx日志量也不算特别大,每天大概3G左右,如果每次用文件流去读一遍,然后判断里面的内容是否有异常,然后发邮件或者短信,这样是行不通的,刚开始还可以,文件越来越大,读一次把所有行都遍历一遍都要几十分钟了,还在怎么实时监控呀。
还有呢就是可以用日志收集器,实时将日志收集存到数据库里面,然后用脚本去数据库中读取数据做分析监控。
我这边用的是直接读取脚本,然后把有异常信息的内容