【编者按】本文参考技术分享 ,由 OneAPM 工程师补充整理,并且已经征得原作者的同意。

为什么选择 OneAPM ?

在性能监控领域,业界比较有名的是 New Relic 还有 Appdynamic,不过这两家公司都在在国外,在国内访问速度很慢暂且不提,毕竟,国外的东西说不定啥时候就被那个啥了(你懂的),所以笔者一直在等待中国也有类似的产品出来。在国内的话,首先访问会比较快,而且只有中国人才最懂中国人,做出来的产品也会符合中国用户的审美和需求。如果这个产品稳定、口碑好、不出问题,那就是很不错的选择,国内最早开始深耕应用性能管理行业的 OneAPM 应该就是一个典型的代表。另外,OneAPM 使用起来很简单,官网有一些教程,按照那教程,只需花费几分钟的时间,操作几个步骤就可以搞定了,笔者使用了 Ruby Insight,装一个 gem 就能搞定,然后页面性能监控(Bi)甚至自动起来了,完全避免了手动部署的麻烦。

使用 OneAPM 监控 Ruby 应用

登录 OneAPM 官网,注册账号,进入主页面,选择「应用监控」,添加一个应用,选择「Ruby」那个 tab,里面列出了5个步骤,按照这些步骤就可以设置成功:

  • 第一步是把授权编号复制,这个是要用到的。

  • 第二步是复制 oneapm.yml 文件存放到 config 目录下。这个是主要的配置文件。刚才复制的授权编号也是要放到这个文件中的。

  • 第三步是把那个 gem 添加到 Gemfile 文件,并进行 bundle install 就好了。

现在主要的问题是第二步,那个配置文件里面的项目名和你建立的应用的项目名的对应。

License_key 就是授权编号,一段字符串,为了保密,笔者是存到配置文件中的。其他的内容都基本没改,唯一有改的地方就是 app_name,这个名字就是要跟你建立的 OneAPM 应用的名字一致才行。

笔者在线上就有一个 OneAPM 应用就叫 Rails365,把里面的 app_name 替换成 Rails365 就好了。

按照官方教程说的,重新启动并部署你的项目,试着访问几个页面,稍等片刻,就能很快在 OneAPM 的监控页面上看到数据了。

或许用 Rails 的 Notifications 结合 Hightcharts 图表显示也能实现类似 OneAPM 的效果,至少能得到每个页面的访问时间,数据库语句的执行时间,但是现在有更方便的 OneAPM,我们就可以尝试去用它。如果要进一步,还可以去研究那个 gem 的源码,知道它是如何实现的。

OneAPM for Ruby

来简单说说 Ai Ruby 探针的功能:

安装好 OneAPM Ruby Agent 之后进入总览页面,能够对 Web 事务响应时间,Apdex 值(满意度),吞吐量,Web 慢事务,错误率,服务器信息,告警事件有个总体了解。

比较中意 Web 事务的功能,可以点进具体事务进行分析。如图,点进 Web 事务功能后,可以看到响应时间占比最高的事务。

为了分析慢事务原因,点进 articles/index 这个较慢的事务,通过 Breakdown Table 可以看到事务的细分内容。

对数据库,外部服务也可以进行监控,能监控到 SQL 语句。对 RubyVM 的监控也是有的。

错误信息功能也比较有用,不仅可以看到错误发生的时间、次数、类型、请求地址,还能看到详细的堆栈信息,显示代码行数。


关于应用监控的各种配置,可以在「应用设置」中自行修改,这一点还是比较灵活易用的。

OneAPM 的网站监控平台(Browser Insight)

在网站开发完成并且上线之后,随着业务的完善与增多,访问网站的人也越来越多,这个时候你就需要维护网站了。不仅仅是业务上的维护,还包括运维,监控等。你可能会监控每天的访问量有多少,增长了没,这个时候可以用常用的 Google Analyse,百度统计,站长工具等来完成。不过,这些工具主要统计浏览量,来源分析等,进而帮助公司运营人员的决策,营销推广,可是,网站的访问量上来之后,必定会遇到性能瓶颈。这个时候就需要找出那些低性能代码或影响页面加载等问题的来源,页面性能监控软件就变得尤为重要了。通过观察每个页面的访问时间来查看哪些页面甚至哪些代码是有问题或者可以优化的,OneAPM 的 Browser Insight(Bi)就是解决这个事情的。它能帮助网站进行性能监控,包括页面的响应时间、AJAX 错误、脚本错误等。

(一)总览页面

下图是总览页面,由于屏幅的问题没有截取全。在 Bi 的总览页面我们可以看到该功能的大概显示,包括响应时间、Web 事务、页面 Trace 以及分地域的页面加载时间等,让研发或者运维对监控的页面有一个大概的了解。

从左边的功能列表可以看到, OneAPM 的 Bi 主要是从受访页面、AJAX、脚本错误、浏览器、地理和运营商这几个维度来监控分析前端页面的。

(二)受访页面

下图是受访页面的功能页面,可以看到,不但从 5 个维度分解了加载时间,而且还有加载时间的排序,甚至有慢加载追踪,可以比较详细的定位到各种资源加载。

还有一个值得说下的是受访页面的这几个加载时间的维度的区分,OneAPM 做的比较有自己的特点,在总览页面有对于几个时间的具体分析注释。

(三)AJAX、页面错误

这两个维度分别从 AJAX 和 HTTPS 角度来分析监控页面的错误或者时间缓慢的调用页面,虽然维度不一样但是界面比较相似,就不给大家一一列举了,简单看一下界面就好了。


(四)浏览器、运营商、地理

这三个功能应该算是 OneAPM 的 Bi 的另外一个核心功能点了,浏览器可以按照将访问页面的浏览器一一识别出来,方便研发或者运维人员有针对性的优化页面。


地理界面可以从国内还有国外两个维度查看访问被监控页面的响应时间等,国内的还可以深入到地级市的使用加载情况。


运营商界面是针对于网络运营商的监控,可以看到各个运营商所提供的网速的情况,而且还可以区分网络制式,做的确实很精细了。

总结

或许通过其他工具例如 Rails 的 Notifications 结合 Hightcharts 图表也能有类似的效果,但是 OneAPM 确实很方便实用的达到了性能监控分析的这一目的。从国内来讲,OneAPM 确实是性能监控方面比较靠得住的厂家,大家可以免费注册试用一下。

OneAPM for Ruby 能够深入到所有 Ruby 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。想技术文章,请访问 OneAPM 官方博客。

从后端到页面:如何全方位监控 Ruby 应用?相关推荐

  1. Kubernetes使用Prometheus全方位监控(李作强)

    Kubernetes使用Prometheus全方位监控K8S: K8S监控指标及实现思路 在K8S平台部署Prometheus 基于K8S服务发现的配置解析 在K8S平台部署Grafana 监控K8S ...

  2. 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案

    无所不在的时序数据 时间带走一切,长年累月会把你的名字.外貌.性格.命运都改变. ---柏拉图 随着时间的推移,万事万物都在不停的变化,而我们也会用各种数字去衡量这些变化信息,比如年龄.重量.速度.温 ...

  3. Django个人博客搭建教程---用Vue写你的第一个前后端分离页面

    一.构建Vue.js前端项目 npm install vue-cli -g npm install webpack -g 在项目根目录下(和你的app目录平级) vue init webpack my ...

  4. 小而美的个人博客——后端——管理页面

    我们要做出如下图的两个页面,这个是非常中要的,这两个页面后和数据和后端代码紧密相连 要做的简洁美观. blogs页面 中间的内容虽然看起来很上,但是时间上还真有点复杂 看第一个部分 附上代码: < ...

  5. 后端返回页面ajax的处理

    业务逻辑:前端ajax发送用户名密码的post请求,请求格式为json.后端收到数据并作校验(如查数据库)后,如果失败返回json格式的响应体,如果成功则返回一个页面. 结果:ajax请求只可用来传数 ...

  6. thymeleaf 获取yml中的值_Thymeleaf前后端传值 页面取值与js取值

    目的: 后端通过Model传值到前端 页面通过Model取值显示 js通过Model取值作为变量使用 1.后台Controller @GetMapping("/message") ...

  7. 服务器监控页面html_Nmon实时监控并生成HTML监控报告

    之前的文章介绍了服务端监控工具:Nmon使用方法,最近在github找到了一个nmon自动监控并生成HTML格式报告的工具:easyNmon,使用体验蛮不错的,这里介绍下它的安装及使用方法. 一.关于 ...

  8. Thymeleaf前后端传值 页面取值与js取值

    目的:    后端通过Model传值到前端    页面通过Model取值显示    js通过Model取值作为变量使用 1.后台Controller @GetMapping("/messag ...

  9. 分布式系统关注点——360°的全方位监控

    这里是Z哥的个人公众号 每周五早8点 按时送达 当然了,也会时不时加个餐- 我的第「74」篇原创敬上 今天端午节,估计这篇文章送达的时候你还在睡觉:D,Z哥先祝你度过个愉快的小假期. 这篇是「分布式系 ...

  10. SSE实现后端向前页面推送实时数据,是长链接不是连接一次就断开

    新接触sse,从网上找了好多资料都是在后端retuen数据给页面,这样导致了页面的长链接就断开了,然后我就改了下它,如果有其他更简便的方式,请大佬们告诉我 直接上代码 后端接口: 后端我是集成了swa ...

最新文章

  1. Android屏幕信息获取
  2. CTF-杂项与密码学之工具使用汇总(三)
  3. hibernate防止sql语句注入
  4. shell脚本工具之控制结构
  5. MongoDB 定位 oplog 必须全表扫描吗?
  6. 基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现
  7. MVVM和MVC有什么区别
  8. 多线程-threading和进程VS线程(python 版)
  9. 广告深度预估技术在美团到店场景下的突破与畅想
  10. CentOS7安装Portainer实现docker可视化操作
  11. 汉诺塔c 语言程序代码,汉诺塔 (C语言代码)
  12. 电视家3.0怎么安装到电视上?常用三种方法介绍
  13. Android仿支付宝提现
  14. NVIDIA_CUDA和AMD_AMD APP
  15. Python 以练促学之 List 篇
  16. 2018-2019中国开发者调查报告简报(一文了解全貌)
  17. DBN深度信念网络算法
  18. Vue一个案例引发「内容分发slot」的最全总结
  19. 期末复习----习题
  20. Base64加密算法原理、具体例子及Java代码

热门文章

  1. Cross-Lingual NER Using Parallel Corpus: A New Approach Using XLM-RoBERTa Alignment
  2. 硬盘分区被格式化了如何恢复
  3. 微吼直播 html5,微吼直播jssdk接入指引.pdf
  4. html 标签置底,学习笔记:让元素永久置底的几种方案(css only)
  5. 计算机任务管理器恢复默认,我的电脑中的任务管理器怎么打不开了,总是提示的“任务管理器已被系统管理员停用”,请问如何才能使任务管理器恢复正常。...
  6. 计算机怎么设置ie连接网络连接不上去,有网络连接,但浏览器不能上网怎么办?电脑高手教你怎么解决...
  7. ECCV 2020 论文大盘点-语义分割篇
  8. 【数据恢复案例】.[decrypt20@firemail.cc].eking新型变种勒索病毒
  9. java小球下落_java基础-小球下落问题
  10. lzg_ad:XPE系统管理工具组件