精华 Node.js + OneAPM 试用体验
发布于 9 年前 作者 alsotang 9235 次浏览 最后一次编辑是 8 年前 来自 分享

今天心血来潮,把原本的 newrelic 应用监控换成了 oneapm 的。感觉还不错。

官网是:http://www.oneapm.com/

总览

大致的界面长这个样子

untitled1.png

上图中, 1 的部分是指平均响应时间 50+ms。折线图可以根据你选择的时间窗口,来查看应用在特定时间内的 response time 变化情况。

2 的部分算是一个类似打分的东西,满分一分。在 newrelic 中,100ms 以内才是 0.9 分。而在 oneapm 中,500ms 就算是 0.9 分了。有点忽悠人的感觉。因为一般的应用,都不可能去追求响应时间 < 500ms 这个阈值,这时间太久了。这个地方可以自己调一下。

3 的部分是吞吐量。由于 oneapm 是注入我们的 node 代码进行性能监控的,所以这个是 controller 所处理的吞吐量,如果静态资源由 cdn 或者 nginx 处理的话,则不计入。我总感觉这个地方其实不准,大了一倍的样子,当然,newrelic 也不准。这跟他们对于【究竟怎么样算是一次web事务】的判断原理有关。

4 的部分是是对于【web事务组】的统计。 比如路径 /topic/:tid 是一个事务组,/about 是一个,/user/:username 是一个。有可能我们的程序整体响应速度不高,但其实在查看用户首页的时候,由于代码写得不好而时间比较久,这时候 /user/:username 就会出现比整站平均大很多的时间。可以进行针对性优化。 untitled2.png 这张图是 cnode 社区响应时间比较久的事务组统计。

5 的部分是错误统计。原理不明。不过也是有详情页可以查看的 untitled3.png

其他还有一些关于数据库,关于外部服务的图表,都可以一个个看一遍,把应用的性能都直观感受一下。 untitled4.png 其实去年9月的时候,就有 oneapm 的同学让我试用服务,不过当时我觉得他们成立时间太短了,就怕整天需要升级或者影响社区的稳定性。一年后再来看,他们已经成熟到可以从 newrelic 迁移过来了。

安装过程

安装过程特别简单,跟 newrelic 一样。只要在代码的入口 require('oneapm'),然后在配置文件里面配置一个 key。重启程序。就可以得到性能统计了。他们做了很多的代码注入。

当然有一点不得不说的是,从 v2ex 的讨论结果来看,他们借鉴了很多 newrelic 的代码。而 newrelic 的 node 客户端代码是直接在 github 开源的:https://github.com/newrelic/node-newrelic 。这也难免…

与 Google Analytics 的异同

ga 对于我们的程序来说,不管拿到的数据再多,后端对于它来说始终是黑盒的。但是 apm 的这种监控方式,可以让我们更清楚地看到性能瓶颈和优化点所在。ga 最多就看个访客数,来访省份和时间之类的。感觉对于运营的作用大于对于性能优化的。

server 监控

之前我的 server 监控也是使用 newrelic 的,不过这块已经是相当成熟的领域了,所以我也迁移到了 oneapm 上面。 untitled5.png 其实就等于是用更美化的方式显示了 top 命令。而且还带历史记录功能。

Cloud Insight 服务

用了 server 监控之后,就有提示框出来让我试用一下 Cloud Insight 这个服务。我也去试用了一下 untitled6.png 嗯,可点的选项比起上面简单的 server 监控多了很多。不过我都看不懂。感觉这个要运维知识更多的人才看得懂。我们应用开发的人,配个 server 监控就好了。

mongodb 监控

其实大多数时候,应用的性能都出在数据库请求的优化上。所以我想配置一下 mongodb 的监控。

从 【平台服务监控】那个tab进去之后,我照着配置了一下,发现无效。

Cloud Insight 也声称自己可以监控 mongodb。我看了看文档,觉得下图所示部分还挺粗糙的,就直接放弃使用了。 untitled7.png

前两个月我有测了一下社区的 mongodb 瓶颈。方法是把 mongodb 的慢查询时间设为 10ms,然后观察一段时间,看看哪个查询的耗时比较久。然后找到相应的代码去优化查询。

这个地方,如果能用上图形化工具,相信一定也方便很多。

免费版与收费版的区别

目前的话,我使用起来觉得二者没区别,除了历史日志的保留时间。免费版是3天,专业版是30天,企业版更长。 剩下的区别,就在于以下这些高级特性, untitled8.png …感觉我也用不上。


总得来说,还是很推荐各位把应用迁上 oneapm 的。

19 回复

看情况吧,我这边如果全部业务run起来,500ms就很满足了,毕竟不是demo

浓浓的广告味。。

这广告给85分。。= =

只支持express? 自豪地采用 CNodeJS ionic

@fengmk2 这个应该看 newrelic 的节奏。newrelic 能支持的,他们马上就能跟上。

@alsotang 看来KOA还有一段时间啊。不过感觉是挺赞的。

你要了 哪一本书 ,嘎嘎

@dingyong666 我们是清白的 (;´༎ຶД༎ຶ`)|

之前 @OneAPMOfficial 一直没出直接通过官方 npm 安装的方式,需要各种 hack 我就放弃了。

这次回过头来看,终于把那个包的所属权给抢回来了,姑且再试试看吧。

@xadillax 之前也不算 hack,就是需要下载个 tar 包。这种安装方式也是我迟迟不用的原因之一,因为我觉得不走 npm 的话,那很可能他们的 node 开发人员不专业。

@alsotang 对的,就是这个原因,感觉不专业不敢用。我以前都是下了 tar 包之后 package.json 里面填 tar 包的路径的。

@xadillax 虽然现在也不一定专业吧。不过我感觉,有 newrelic 的开源代码摆在那里,再怎么不专业也还是有个底线的…既然目前他们的 web 后端图表做的还不错,我就迁过来了。

难道只有我一个人觉得oneapm的dashboard曝丑吗。。

@alsotang 不过貌似速度有点慢,是因为我的网速吗?

我赶脚目前对我来说最大的收益在于优化事务中数据的查询的次数~

这个最烦人的地方是,注册尝试使用后,客服打了好几次的电话向我推销购买产品

@kenshinhu 我也比较烦。

@alsotang 稍微解释下,之前不走npm是因为一些不太想说的原因不想敲npm publish这个命令,而且那个tar包也是用npm pack打包出来的

回到顶部