使用Zabbix监视Tomcat实例

好吧,先来一个小故事,

我们有一个Tomcat实例作为一种“网关”连接到多个服务提供者。 如果Tomcat实例无法连接到给定的提供程序,则会生成错误。 这些错误存储在日志文件中。

问题是我们需要监视的文件不仅仅是一个给定的string,我们需要使用几个正则expression式来过滤所有无意义的东西,以便我们不会在凌晨3点醒来,因为用户忘记了他的密码。 ;)

我已经尝试创build一个坐在Zabbix和Tomcat之间的python脚本,但是日志文件(每天轮换)超过200MB,这太CPU密集(100%15秒以上)。 我试图添加一个“睡眠(0.000005)”来减慢它的速度,但现在需要很长时间(> 1分钟),仍然使用25%的CPU …

总而言之,这个解决scheme掩盖了这个问题,我想和你们联系,看看你们是否知道更好的解决scheme,或者其他什么可能有用的方法。

(1)Zabbix可以自己处理正则expression式。 您可以使用正则expression式与zabbix代理监视日志。

https://www.zabbix.com/documentation/1.8/manual/log_file_monitoring

(2)使用'nice'命令可以降低脚本的CPU使用率优先级。

http://linux.die.net/man/1/nice

除此之外,需要更详细的信息。 *机器规格(CPU,MEM,存储设备等)* python脚本的来源

那么最后,我们用一个过于复杂的Python脚本去完成这个工作,直到有更可行的东西出现。

为了给你一个这个“脚本”有多复杂的概念,下面是它必须存在的MINIMUM文件/文件夹:

/usr/local/bin/tomcat_log_alert.py (755) /usr/local/bin/tomcat_ack_errors.py (755) /etc/${COMPANY}/tomcat-log-alert.conf (644) /etc/cron.d/tomcat-log-alert (644) /var/log/${COMPANY}/tomcat_errors/ (755) /var/log/${COMPANY}/tomcat_errors_ack/ (755) /etc/zabbix/zabbix_agentd.d/tomcat-log-alert.conf (644) 

我真的不希望成为这个压裂创可贴的唯一维护者。

以下值得一看:

 logrobot autonda /prod/tomcat/error.log 60m 'tomcat errors' 'password forgotten|failed login' 1 2 -show 

上面的命令将在日志文件中search任何包含“tomcat错误”的行。 从它find的行中,它将删除所有包含以下内容的行:

  • 忘记密码
  • login失败

以上只是search一个日志文件的定义条目。 如果要search多个日志文件以查找条目,会发生什么情况?

你可以尝试这样的事情:

 logrobot automul /prod/tomcat/error.log_MULTIPLE 60m 'tomcat errors' 'password forgotten|failed login' 1 2 -show 

我可能会稍微rest一下,所以你应该检查这些网站中的任何一个以获得确切的用法:

  • Nagios日志监视器
  • 或者logrobot工具的主页