使用 Zabbix 监控 Tomcat 实例

使用 Zabbix 监控 Tomcat 实例

好的,首先介绍一下背景,

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

问题是我们需要监视文件中的不仅仅是给定的字符串,我们需要使用几个正则表达式来过滤所有无意义的东西,这样我们就不会因为用户忘记密码而在凌晨 3 点醒来。;)

我已经尝试创建一个位于 Zabbix 和 Tomcat 之间的 Python 脚本,但是日志文件(每天轮换)超过 200MB,这太耗 CPU(100% 持续 15 秒以上)。我尝试添加“sleep(0.000005)”来稍微减慢速度,但现在它花费的时间太长(> 1 分钟),并且仍然使用 25% 的 CPU...

总而言之,解决方案掩盖了问题,我想与你们联系,看看你们是否知道更好的解决方案,或者其他可能有帮助的东西。

答案1

(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 脚本的来源

答案2

好吧,最后我们采用过于复杂的 Python 脚本来完成这项工作,直到出现更可行的方法。

只是为了让您了解这个“脚本”有多复杂,这里列出了必须存在的最少文件/文件夹才能使其正常工作:

/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)

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

答案3

以下内容值得一看:

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

上述命令将在日志文件中搜索包含“tomcat 错误”的任何行。并从找到的行中删除包含以下内容的任何行:

  • 忘记密码
  • 登录失败

以上内容仅在一个日志文件中搜索定义的条目。如果您想在多个日志文件中搜索条目,会发生什么情况?

您可以尝试这样的操作:

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

我可能有点偏离,所以你应该检查以下任一网站以了解确切的用法:

相关内容