分享 OneAPM 简单体验及建议

qingxp9 · 2015年09月23日 · 最后由 twairball 回复于 2016年01月08日 · 4110 次阅读

看到 oneapm 在论坛里的推广活动,在最近一个项目中也的确遇到了一些需要可视化的查看性能的工具, 之前并没有相关的性能监控工具的使用经验,而这个活动的奖品还挺丰盛的,所以试用一下。

部署

部署比较简单,在 config 中 wget 一个 oneapm.yml 文件,填入 key,再添加 gem 重启一下服务器就好了。

后台监控页面

通过 Web 操作一下,过了一会在后台就能看见各种统计了

包括:web 事务、吞吐量、apdex、错误率

建议

页面的展示和使用体验应该其他用户展示得够多了,所以我重点写一下第一次使用这个系统所遇到的一些关于用户体验相关的东西吧。 (有些比较主观,不保证提的建议一定有道理)

  1. 因为应用是开发模式,提示了在隐藏应用列表。 但我不知道从哪可以打开这个隐藏应用列表,四处点了半天才发现在这个页面的下部。 推荐在 “隐藏应用列表” 这加个超级链接,因为用户的注意力会集中在警告这里,我第一反应就是去点这里,以为会有个超链能直接跳过去。

  2. 部署时候最好提示一下在.gitignore 里面忽略这个 oneapm.yml 文件。 虽然不太清楚泄露 key 会有什么危害,不过还是不要泄露的好。

  3. 新用户第一次点开应用监控的时候,可否做一些浏览导航提示的东西。 因为监控这些东西最终的目的是为了帮助用户去改进程序,那如果我作为一个新手,我就不太清楚如何利用所看到的这些数据去改进程序。 希望这方面能有一些比较基础的指导文档。

  4. 安全方面 这东西是一个探针,可以获取我系统信息,所以我很想知道做了哪些安全方面的考虑。

第一,会不会有可被利用为远程代码执行等的安全风险。 第二,像我这个测试应用是搭在企业内网中,探针可能就会获取到我请求的 ip 或者其他等比较敏感的东西,是否可以提供一个 “安全模式” 来避免抓取到敏感信息造成泄露风险。


这是我简单试用的一些感受,可以看到除了功能外,我十分很看中安全。我觉得在宣传文案上面除了对功能的描述,加上一些在安全方面的保障会更吸引用户来使用这款产品。

  1. 感谢关于使用体验的建议。
  2. 我们从如下几方面确保安全
  • 过滤 URL 中的敏感信息:通过配置关键字进行过滤,如 password、credit,对于需要过滤的内容可以自行增加关键字;
  • 过滤 SQL 语句中的参数:默认是用 “?" 号代替,如果定位问题需要可以打开此项配置即可;
  • 探针与 Server 端使用 https 加密传输数据,杜绝被抓包分析;
  • 提供审计模式:打开审计模式可以看到所有传出数据;

另外,这个放到.gitignore 里,对你们部署可能不是很方便。如果有比较好的部署工具例如 capistrano 到时可以把这个 oneapm.yml 做一个脚本动态写入。你觉得这样如何?

#1 楼 @oneapm 1.key 做到提醒别上传可以了,具体的用户行为也控制不了嘛 2.安全,我担心的是是否会有 server 向探针发送执行命令这样的接口(比如用于调试)。最好是只能客户端这边只能发出不能接收,如果因为实现的原因有这样的接口,是否考虑了 Web 用户管理界面相关接口,以及官方管理员人员对其的安全防护考虑. 简单的说,有没有不小心变成了 webshell 的可能

#3 楼 @qingxp9 “希望这方面能有一些比较基础的指导文档” 这个问题,是希望在页面中有新手提示么?我们的产品文档在这里:https://oneapm.kf5.com

#3 楼 @qingxp9

  1. key 的提醒功能,我们会考虑添加这个功能
    1. 安全性我们是有认证的。

目前在用 newrelic

曾经试过在已经装了 newrelic 的项目中再装个 oneapm,结果启动服务器时警告 constant initialized ,呃,呵呵。

Newrelic 和 OneAPM 都在用,朋友说听云也要出 APM,打算发布后三个一起用试试。

#7 楼 @martin91 可以注释掉 newrelic 试试看 oneapm 的使用体验更好

#6 楼 @zoker 可以试试 oneapm 更快更及时 功能更全面

有两个问题请教 #11 楼 @oneapm , OneAPM 装上后 1、是否会影响到产品性能?特别是并发性。 2、OneAPM 是通过何种方式发送信息到 OneAPM 的服务器的?多久发一次?

@gazeldx

  1. 我们对性能的影响控制在 2% 以下。
  2. 是通过探针抓取数据,默认 1 分钟 1 次。

#13 楼 @oneapm 抓取到了数据,如何发送到 OneAPM 的服务器?

@gazeldx 加密回传的

#15 楼 @oneapm 向您汇报一个 bug,在引用了 OneAPM 后,贵公司会在每个页面的 header 加入

<script type="text/javascript">window.BWEUM||(BWEUM={});BWEUM.info={"beacon":"bi-collector.oneapm.com/beacon/rum/ruby","errorBeacon":"bi-collector.oneapm.com/beacon/error/ruby","licenseKey":"ZBbaN~yjaiyJnAij","applicationID":2272758,"transactionName":"DwkkDDMWLzYlBBAPCzZDJz8kGTVqJwgKFQs0CWkxLxMkPQ==","queueTime":0,"applicationTime":209,"agent":"//bi-collector.oneapm.com/static/js/bw-send-411.4.5.js"}</script>
<script type="text/javascript" src="//bi-collector.oneapm.com/static/js/bw-loader-411.4.5.js"></script>

今天收到公司客服报障,说一个页面报错了,经过排查,我发现是我写的一个 javascript function today()被贵公司的这段 header 中加入的代码替换掉了,这段代码中也有 today 对象,但不是 function。我希望你们可以注意一下,不要用了 OneAPM 的包后导致客户产品出现故障。

谢谢。

#16 楼 @gazeldx 重名了… 现在正在改。

This is excellent... 我个人很喜欢 skylight.io 的简约风格,但是多次环境、火墙、deployment 等等的头痛后,今天最后找寻国内的 APM. 找到了 oneapm, 从注册到安装到 deploy 上服务器整整花了 5 分钟不到。 值得推荐!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号