好的,先说一点背景故事,
我们有一个 Tomcat 实例,它作为一种“网关”连接到多个服务提供商。如果此 Tomcat 实例无法连接到给定的提供程序,它将生成错误。这些错误存储在日志文件中。
问题是我们需要监控文件的不仅仅是一个给定的字符串,我们需要使用几个正则表达式来过滤所有无意义的东西,这样我们就不会因为用户忘记密码而在凌晨 3 点醒来。;)
我已经尝试创建一个位于 Zabbix 和 Tomcat 之间的 python 脚本,但是对于超过 200MB 的日志文件(每天轮换),它过于占用 CPU(15 秒以上为 100%)。我尝试添加一个“sleep(0.000005)”来减慢它的速度,但现在它需要很长时间(> 1 分钟)并且仍然使用 25% 的 CPU ...
总而言之,解决方案掩盖了问题,我想与你们联系,看看你们是否知道更好的解决方案,或者其他可能有帮助的方法。
(1)Zabbix可以自己处理正则表达式。您可以使用带有 zabbix 代理的正则表达式来监视日志。
https://www.zabbix.com/documentation/1.8/manual/log_file_monitoring
(2)使用'nice'命令可以降低脚本的CPU使用优先级。
http://linux.die.net/man/1/nice
除此之外,还需要更详细的信息。* 机器规格(CPU、内存、存储设备等) * python 脚本的来源
好吧,最后我们使用了一个过于复杂的 Python 脚本来完成这项工作,直到出现更可行的东西。
只是为了让您了解这个“脚本”有多复杂,这里是它必须存在的最小文件/文件夹才能工作:
我真的不希望成为这个水力压裂创可贴的唯一维护者。
以下内容值得一看:
上面的命令将在日志文件中搜索任何包含“tomcat 错误”的行。从它找到的行中,它将删除包含以下内容的所有行:
以上只是在一个日志文件中搜索定义的条目。如果您想在多个日志文件中搜索条目会怎样?
你可以尝试这样的事情:
我可能有点偏离所以你应该检查这些网站之一以获得确切的用法: