如何在实时/生产环境中监控和维护我的 Grails 应用程序?
Posted
技术标签:
【中文标题】如何在实时/生产环境中监控和维护我的 Grails 应用程序?【英文标题】:How to monitor and maintain my grails application in live/production environment? 【发布时间】:2011-01-16 03:23:00 【问题描述】:这是我第一次实时发布网站(在 Amazon EC2 平台和 Cloud Foundry 下使用 Grails Web 框架),我很快意识到我还没有准备好在生产模式下正确监控和维护我的应用程序(幸运的是网站可供非常有限数量的用户访问)。
目前我遇到的问题是:
无法改变我的观点。我需要重新部署我的应用程序 我没有监控。我不知道谁在连接,他们什么时候登录/退出... 重新部署我的应用程序(上传 WAR + 部署)至少需要 30 分钟。 如果不通过 Cloud Foundry 重新部署,我不知道如何重新启动我的 Tomcat 服务器! ...所以,我的问题很简单:
您可以推荐哪些工具(包括grails插件)和方法来帮助我摆脱目前的失明?
【问题讨论】:
【参考方案1】:我不确定多少这会有所帮助,但是我使用 JavaMelody Grails 插件 (http://www.grails.org/plugin/grails-melody) 在我关闭服务之前使用它来查看网站是否正在使用。
希望对您有所帮助。
【讨论】:
【参考方案2】:我在早期尝试过 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 管理控制台来完成,但我发现它很不稳定。
关于监控,有几种方法可以做到这一点。最简单的方法是将CloudWatch 监控添加到您的系统中。这将使您更深入地了解应用程序的性能。
要更详细地监控谁连接到您的应用,我建议查看Google Analytics 或Mint。如果您需要超越这一点(通过每个用户监控),您可能必须滚动自己的日志记录/跟踪以满足您的需求。除了 Google Analytics 和 Mint 之外,您还可以集成其他付费软件包,但我不能说最适合您的需求。
【讨论】:
【参考方案3】:对于已部署系统的实际监控,您还可以使用Hiperic HQ。这是来自 Spring Source 的监控解决方案,他们也是 Grails 框架的所有者。
根据您的情况,它可以管理:
-
tomcat 服务器
数据库
Linux
网络
等
顺便说一句,重新部署应用程序并进行更改是可以的。在生产服务器上修改正在运行的应用程序是一种非常糟糕的做法。
【讨论】:
【参考方案4】:我不知道 JMX 和 JConsole 是否可以提供帮助,但这可能是了解启用 JMX 的 POJO 状态的好方法。 Spring 让这一切变得容易。
【讨论】:
【参考方案5】:-
是的,当您更改应用程序中的内容时,您需要重新部署应用程序,这是没有办法的。
如果使用 grails 插件,最近部署/重新部署时间已大大缩短(顺便说一句,您使用的是什么版本的插件?)在某些情况下,上传时间短至 15 秒。为 Amazon 增加 2-3 分钟来启动实例,部署时间仍然很容易管理。对于重新部署,不必启动实例,因此甚至更少。
要重新启动 Tomcat,请登录您的 CloudFoundry 帐户,单击部署详细信息,单击正在运行您的 Tomcat 的实例,然后会出现一个“重新启动服务”按钮,它会执行此操作 - 重新启动 Tomcat 服务。
您无需启动自己的 EC2 实例即可获得 shell 访问权限。从 DeploymentDetails 中复制实例的公共 DNS 名称,并使用您在注册 Cloudfoundry 时输入的私钥通过 SSH 将其复制到其中。示例:
ssh -i /path/to/gsg-keypair.pem root@your_instance_DNS_name
【讨论】:
以上是关于如何在实时/生产环境中监控和维护我的 Grails 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章