如何在实时/生产环境中监视和维护我的grails应用程序?

如何在实时/生产环境中监视和维护我的grails应用程序?,grails,amazon-ec2,production-environment,grails-plugin,cloud-foundry,Grails,Amazon Ec2,Production Environment,Grails Plugin,Cloud Foundry,这是我第一次启动live网站(使用Amazon EC2平台下的Grails web framework和Cloud Foundry),我很快意识到我还没有准备好在生产模式下正确监控和维护我的应用程序(幸运的是,该网站可供数量非常有限的用户访问) 到目前为止,我面临的问题是: 不能改变我的观点。我需要重新部署我的应用程序 我没有监控。我不知道谁已连接,他们何时登录/注销 重新部署我的应用程序(上载WAR+部署)至少需要30分钟 我不知道如何在不通过CloudFoundry重新部署的情况下重新启动

这是我第一次启动live网站(使用Amazon EC2平台下的Grails web framework和Cloud Foundry),我很快意识到我还没有准备好在生产模式下正确监控和维护我的应用程序(幸运的是,该网站可供数量非常有限的用户访问)

到目前为止,我面临的问题是:

  • 不能改变我的观点。我需要重新部署我的应用程序
  • 我没有监控。我不知道谁已连接,他们何时登录/注销
  • 重新部署我的应用程序(上载WAR+部署)至少需要30分钟
  • 我不知道如何在不通过CloudFoundry重新部署的情况下重新启动我的Tomcat服务器
所以,我的问题很简单:


有什么工具(包括grails插件)和方法你能推荐我,让我摆脱目前的失明状态吗?

我在Cloud Foundry早期尝试过,发现有点粗糙。对于30分钟以上的部署和无法重新启动tomcat服务器,听起来情况仍然如此。如果您只创建自己的EC2实例,安装tomcat并管理自己的部署,那么您的一半问题都可以解决。这将允许您通过shell访问跳转tomcat:

sudo /etc/init.d/tomcat6 restart
并重新部署你的应用程序

sudo /etc/init.d/tomcat6/stop
cp my.war /to/tomcat/dir 
sudo /etc/init.d/tomcat6 start
或者你也可以通过tomcat管理控制台来完成,但我发现它很脆弱

关于监控,有几种方法可以做到这一点。最简单的方法是将监视添加到系统中。这将使您更深入地了解应用程序的性能


有关谁连接到你的应用程序的更详细监控,我建议查看或。如果您需要超越这一点(通过每个用户的监控),您可能需要自己进行日志记录/跟踪,以满足您的需求。还有其他付费软件包可以与Google Analytics和Mint集成,但我不能说什么最适合您的需要。

对于部署系统的实际监控,您也可以使用。这是一个来自Spring Source的监控解决方案,Spring Source也是Grails框架的所有者

它可以根据您的情况管理:

  • tomcat服务器
  • 数据库
  • linux
  • 网络
  • 顺便说一句,重新部署带有更改的应用程序是可以的。在生产服务器上修改正在运行的应用程序是一种非常糟糕的做法。

    我不确定这会有多大帮助,但是我使用JavaMelody Grails插件()在关闭服务之前,我使用它来查看站点是否正在使用


    希望这能有所帮助。

    我不知道JMX和JConsole是否能提供帮助,但这可能是了解启用JMX的POJO的状态的一个好方法。春天使这很容易做到

  • 是的,当你更改应用程序中的内容时,你需要重新部署应用程序,这是没有办法的
  • 如果使用grails插件(顺便问一下,您使用的插件的版本是什么?),部署/重新部署时间最近已经显著缩短。在某些情况下,上载时间短至15秒。为Amazon增加2-3分钟的时间来加速实例,部署时间仍然是可以管理的。对于重新部署,实例不必启动,因此甚至比这还要少
  • 要重新启动Tomcat登录到您的CloudFoundry帐户,请单击部署详细信息,单击运行您的Tomcat的实例,将出现一个按钮“重新启动服务”,该按钮将执行此操作-重新启动Tomcat服务
  • 为了获得shell访问权,您不必启动自己的EC2实例。从DeploymentDetails复制实例的公共DNS名称,并使用注册Cloudfoundry时输入的私钥将SSH复制到其中。例如:

    ssh-i/path/to/gsg-keypair.pemroot@your_instance_DNS_name