编程技术分享平台

网站首页 > 技术教程 正文

用groovry做简单的nginx日志实时监控脚本

xnh888 2024-09-11 11:01:17 技术教程 34 ℃ 0 评论

在实际工作中,如果你公司有运维部门,那么这种监控功能其实是运维做的。

往往可能你公司就那么几个开发,所以运维还是得自己来。

如果你们的系统比较大,做了分布式,访问量也很大,建议你使用ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台。

说出来也比较高大上,如果是小型的就直接写个脚本监控得了。

这边我们用Groovy来写脚本,Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。

先简单的介绍下实现原理,我们这边的nginx日志量也不算特别大,每天大概3G左右,如果每次用文件流去读一遍,然后判断里面的内容是否有异常,然后发邮件或者短信,这样是行不通的,刚开始还可以,文件越来越大,读一次把所有行都遍历一遍都要几十分钟了,还在怎么实时监控呀。

还有呢就是可以用日志收集器,实时将日志收集存到数据库里面,然后用脚本去数据库中读取数据做分析监控。

我这边用的是直接读取脚本,然后把有异常信息的内容存到数据库,正常的就不存了。

那么我如何能够实时的读取这些大文件的内容呢?

我的做法是这样的。

用linux的sed命令来读取文件的n行到n行之间的内容,速度很快。

程序记住之前分析的最后一行的行数,然后下次分析的时候跳过前面的行。

由于这是公司的程序,代码我只贴一部分,具体的大家可以根据我提供的思路去实现。

check方法是你判断日志是否异常的具体实现。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表