取消
显示结果 
搜索替代 
您的意思是: 
cancel
1518
查看次数
0
有帮助
2
评论
julianchen
Spotlight
Spotlight
引言:在文中,无论你使用什么工具来部署软件,为了确保流畅进行,让我们来一起看看用于监控的八个方面。
作为软件开发人员,我们的最终目标是让自己的辛勤工作能顺利部署到生产环境中。如今凭借敏捷开发、DevOps、和连续部署工具,我们已经能够让此过程变得比以往更快速了!但是,我们需要记住的是:软件部署更是一个过程,而非单一的事件。因此,作为该过程的一部分,你需要监视生产环境中的各种服务器和应用程序,以确保每一步都能够平稳运行。
在本文中,我们将和你一起讨论在软件部署过程中应该监控的八个关键方面。

1.了解你的错误率
程序错误是识别应用程序问题的第一道防线。因此,所有在监控范围内的服务器上,开发者需要收集出现的全部错误。这些错误将有助于准确定位那些在部署新的软件应用时出现的问题。
当然,在部署过程中,它们还会产生大量的“噪声”。比如:在部署的环节中,应用程序中途被重新启动是很常见的情况。因此,这些都可能会导致大量的,诸如:SQL连接问题、线程中止异常、以及其他类型的短暂错误。
提示:在部署之前,掌握自己应用程序的标准错误率是非常重要的。这样你就可以判断出在部署之后,各种问题是成上升趋势,还是仍然保持着正常的错误率。
提示:寻找那些你从未见过的、新的应用程序错误。有趣的是,那些新产生的、空的引用异常,SQL的超时,或其他出现的错误,都会随着新的部署而浮出水面。所以你需要迅速找到它们,并为修复它们做好准备。
注意:请重点关注那些通过你的代码本身所记录下来的、由应用程序异常所产生的HTTP 4XX5XX的错误。

2.比较Web流量和页面加载时间
你的应用消耗了多少流量?其普通页面加载时间是多少?这些都是你应该部署之前和之后需要监测的关键指标。如果你突然碰到了大量的流入或流出数据,那么肯定是某处出了问题。
一般情况下,这种高额流量的涌入会意味着:用户碰到了错误,而且无法在你的应用程序中跳转到其他页面。这同样会降低你的网站的总体用户体验。
有时候你甚至还没有开始进行部署,这类问题就已经在应用程序自我显现了。例如:如果你的应用程序使用了微服务的架构,或是用到了很多内部HTTPWeb服务调用,那么在新的部署中,对于其他应用程序的下行流量则会有明显的变化。因此,请留心观察它们的流量水平,以确保不会发生显著的变化。

3.追踪你的应用性能指标或是客户满意度评分
监测你的应用程序性能指标或客户满意度评分,是掌握其运行状况的一种非常好的“号脉”方式。Stackify公司的Retrace产品就可以实现对客户满意度得分的自动跟踪。
这些评分是基于各种Web请求的响应效率,即有多少是快速、停滞、缓慢、以及失败得出的。通过简单的数学公式,它可以帮助你了解到软件的整体性能。可见,请求跟踪是业内的普遍实践模式。
使用Stackify,我们的目标是要使评分达到99%。通过那些需要持续监视的指标,你可能会发现在部署的过程中分数会略有下降。这并没关系,只要你能保证在部署之后,分数能够恢复到正常水平便可。

4.服务器的数量、负载、和CPU使用率
就算部署到云端,CPU使用率和整体的服务器负载仍然不可忽视因素。有时候,略微的代码变更就会导致CPU使用率和整体性能上的巨大差异。这种现象在那些能够横跨多台服务器,以进行扩展的应用程序上尤为明显。比如说:我们对于某处一些代码的调整,就会直接导致在另一处整体服务器数量的减少。
因此,留意你所需要运行应用程序的服务器数量,以及各台服务器上的CPU负载和它们使用率是非常重要的。

5.数据库和SQL查询的性能
如果应用程序用到了SQL数据库,那么你的每一次部署就需要考虑到所用SQL数据库的各种变更因素了。其中包括有:新增的SQL查询,和现有查询的修改等方面。
你应该持续跟踪那些被频繁使用的SQL查询,和在数据库服务器上对应使用量偏大的资源。记住:有时候,就算是对SQL查询的略微修改,也有可能会导致出现性能上的重要瓶颈!

6.各种与应用依赖性有关的性能
如今各种应用程序之间都有着广泛的相互依赖性,包括:SQLNoSQL数据库、缓存、队列、存储、以及HTTPweb服务等。因此,密切关注所有这些依赖性的性能状态是非常重要的。与此有关的常见服务包括:RedisElasticsearch、以及MongoDB等。
同样地,就算是对应用代码的略微修改,也可能会导致在你的生产环境中,诸如RedisHTTP Web服务的显著性能变化。因此,在有重大变更发生的时候,请你留意部署前后的性能差异。

7.内部通信(Slack
软件部署成功的一个关键因素就是通信。如果使用Stackify,我们会在很大程度上依赖Slack作为公司内部的各种通信的中枢,当然也包括所以进行的部署。
我们会有一个#deploymentsSlack通道,任何人都可以籍此监控部署前、部署中和部署后的准确状况。同时,我们也可以在部署的过程中使用Bamboo的自动化Slack警告提醒功能。
众所周知,软件部署并非简单的一键推送。举例而言,如果使用Stackify进行部署的话,我们必须首先将各种SQL的更改脚本推送到超过1000个数据表中。之后,我们还必须在自己的架构内对10台不同的web和后台服务的应用程序进行部署。可见,这是一个相当耗时的过程。
因此,在Slack的各个通道上进行有效的通信,将有助于项目组的每个人保持同步。任何人只要想监控的某个进展,就都可以进行随时追踪。

8.回归测试
在完成了新代码的推送之后,我们进行一些最后的回归测试是很有必要的。它们既可以是自动化的综合测试,也可以是我们自己进行的快速测试。对我自己而言,即使用到了像Retrace这样的工具来全程监控自己的应用程序,我也会自己登录进去,在一些关键页面上四处点击一下,以求心理安慰和技术确认。
当然,许多组织也有自己的一整套流程去验证发布,并进行回归测试。他们一般会在QA阶段反复进行多轮测试。同时,在告知客户进行各种补丁的部署之前,他们通常也会针对各种bug的修复效果进行重复性的测试。
如果你已经有了自动化的测试,那么对于它们的监视正好适用于本文所涉及的内容。如果没有的话,请务必通过Slack的监视,来顺利完成各种最终的回归测试与验证。

总结
软件部署是我们努力工作的一次成果检验。但是其错误代码的所包含的潜在风险也会让我们倍感压力。因此,我们持续对软件进行全程监控是非常有必要的。通过使用Retrace这样的解决方案,我们将能够快速定位新出现的问题,并能量化出错率、性能等方面的异常。
【原标题】 8 Things to Monitor During a Software Deployment (作者: Matt Watson )
原文链接: https://dzone.com/articles/8-things-to-monitor-during-a-software-deployment
评论
sxsure001
Spotlight
Spotlight
感谢分享!!!!!1lollol
likuo
Spotlight
Spotlight
应该这样做。
入门指南

使用上面的搜索栏输入关键字、短语或问题,搜索问题的答案。

我们希望您在这里的旅程尽可能顺利,因此这里有一些链接可以帮助您快速熟悉思科社区:









快捷链接