针对java / tomcat / linux环境的部署和监视工具

我是一个多年的开发者,但是没有很多经验,所以如果这是一个新的问题,请道歉。

在我的公司,我们运行一个以Java编写的Web服务,主要基于Tomcat Web服务器。 我们有两个数据中心,每个数据中心大约有10个主机。 主机有几种types:Dababase,Tomcats,一些脱机java进程,memcached服务器。 所有主机都是Linux CentOS

直到现在,当发布一个新版本到生产版本时,我们一直在使用一套内部shell脚本来复制战争/战争,并重新启动tomcats。

公司规模越来越大,从事开发,QA,升级到生产等各个环节的工作越来越困难。 一个典型的发行很多时候涉及到人为错误,这使我们的宝贵的正常运行时间。 有时我们需要恢复到最后一个已知的好处,这是不容易的…

我们正在寻找一个工具,一个框架,一个解决scheme,将提供以下内容:

  • 支持给定的技术列表(java,tomcat,linux等)
  • 通过不同的阶段提供简单的部署,包括质量保证和生产
  • 提供configurationpipe理。 例如,设置服务器属性(每个主机的连接URL等),server.xml或上下文configuration等
  • 监测。 如果我们可以在同一个软件包中进行监控,那会很好。 如果没有,那么我们可以使用另一个工具来监视我们的服务器。
  • 最好是有大量文档的开源代码;)

谁能分享他们的经验? build议一些工具?

谢谢!

免责声明,我是Zenoss社区经理。

除了configurationpipe理之外, Zenoss还涵盖了所有要点,但是您可以将其与其他系统结合使用。

  • 支持给定的技术列表(java,tomcat,linux等)
    • ZenJMX ZenPack绝对可以添加可用于Tomcat或任何其他支持JMX的应用程序的JMX监视。
  • 通过不同的阶段提供简单的部署,包括质量保证和生产
    • Zenoss拥有多种生产状态,因此您可以确定要如何监控设备,无论您是在“testing”,“生产”,“预生产”,“维护”还是“退役”。
  • 提供configurationpipe理。 例如,设置服务器属性(每个主机的连接URL等),server.xml或上下文configuration等
    • 你可以和Puppet,Cfengine等一起使用Zenoss。
  • 监测。 如果我们可以在同一个软件包中进行监控,那会很好。 如果没有,那么我们可以使用另一个工具来监视我们的服务器。
    • 这就是Zenoss的用途。
  • 最好是有大量文档的开源软件;)
    • GPLv2和大量的文档 。

我肯定会推荐从SpringSource尝试TC服务器 。 它使得pipe理和诊断企业中的Tomcat实例变得轻而易举,并且可以从参与Tomcat项目的人员那里得到很大的支持。 这一切都带有价格标签,虽然.. 🙁

那么,至less有一部分,你可以使用Java自己的jVisualVM。

它包含在每个JDK java安装中

只要看看lib文件夹,就在那里。

我听说Hyperic适合Java应用程序。

没有个人经验,对不起。

Splunk + Nagios + Nagios JMX插件或Log4j可能是一个很好的select

此外,结帐MuleSoft Tcat服务器 ,为Tomcat提供了一个易于使用的部署,configurationpipe理,可靠的重新启动和诊断。

免责声明:我为MuleSoft工作。

对于configurationpipe理, Chef是一个很好的工具,可以在不同types的Linux服务器上configuration各个方面,也可以用来pipe理应用程序的configuration和可能的部署。 我强烈build议使用厨师或类似的东西(木偶等)来pipe理你的服务器。

也可以考虑Hudson之类的东西,你可以用它来进行持续集成(每次有人对源代码进行修改时都可以构build和运行自动化testing),也可以用来将应用程序的构build部署到服务器上(开发,舞台,等等。)。 它需要与脚本(Ant,Maven,shell等)结合使用来实际部署软件,但这是一个难题。

我感兴趣的东西,但还没有挖掘到自己是云工具 ,这是一个自动化应用程序部署到Tomcat / MySQL堆栈的工具集。 它旨在用于IaaS云(例如Amazon EC2),但也应该可以在普通服务器上使用,也可以使用一点点的润滑脂。 主要的潜在缺点是,目前似乎还没有很积极的发展。

为了在单个tomcat上进行监控和部署, psi探针是一个可行的解决scheme。 这是Lambda探针的一个分支。

为了监控漏洞基础设施,我同意Nagios的答案。

jVisualVM的替代品是jconsole,也是JDK的一部分。

为了pipe理漏洞基础设施,我认为无论是用bash,perl,ant,puppet manifest还是其他的东西写的自定义脚本都是没有办法的。 但你可以隐藏他们的复杂背后的工具,如已经提到的哈德森,木偶,cfengine,厨师,…