做为 Zabbix 骨灰级粉丝,一直以来对第三方监控(APM)都是拒绝的。一来以为收费,二来担忧数据被人所知,三来以为 Zabbix 牛逼到无可取代。可是,随着 APM 市场的火爆,我决定「放下身段」试用一次,而且会总结出它与开源监控之间差异在哪里。php
虽然都在不一样的公司,作着不一样的业务,可是大多运维总会经历相同的故事,以及背着相似的黑锅。运维们大多有以下经历:html
网站或者业务访问不了,服务器问题,运维的责任前端
昨天还好好的,今天就出现的问题,运维的责任mysql
部分地区用户反馈网站/App 没法试用,运维查查服务器。并且这种问题大多出如今过后。linux
各类程序都须要监控,常见的 MongoDB 、 Redis 、 Nginx ,还会出现各类不常见的应用。任何一种软件都要熟悉,运维老是在不停的学习,待遇缺一直比不上研发!nginx
服务器出现问题,老板找运维、领导找运维、开发也找运维,运维并不知道代码逻辑,看日志,各类排错。面试
OneAPM 是一家为企业和开发者提供 APM 解决方案的服务商,支持 Java、.NET、PHP、Ruby、Python、Node.js、HTML五、iOS、Android 等语言和操做系统。redis
既然试用 APM ,我以为颇有必要给你们解释一下这个名词。应用性能管理(Application Performance Management)主要指对企业的关键业务应用进行监测、优化,提升企业应用的可靠性和质量,保证用户获得良好的服务,下降IT总拥有成本 (TCO) 。使用全业务链的敏捷 APM 监控,可以使一个企业的关键业务应用的性能更强大,能够提升竞争力,并取得商业成功,所以,增强应用性能管理(APM)能够产生巨大商业利益。国内外的 APM 有 Compuware 、 iMaster 、听云、New Relic、OneAPM 、AppDynamics 等。
解释比较干,若是仍是不了解什么是 APM ,那么请随我全面试用 OneAPM 的过程来了解什么是 APM 。sql
分别从两个层面考量,分别为运维层面与代码层面docker
运维层面
团队规模小,大多数团队由于成本问题,都由开发人员兼职,形成了没有专业运维的一个局面,致使没法作更多的运维层面监控。
代码层面
运维能监控到众多系统层面甚至业务级别监控,可是代码级别、终端用户层面没法监控到。部分 App /程序上线初期由于用户量较少服务器可以顶住,可是一旦用户上来,将会变成乱成一团,最终致使用户流失。
共有六项功能,接下来我一一使用,并对它和传统的开源监控来作比较
可监控 Java、.NET、Node.js、Python、PHP、Ruby 性能,经过探针的方式监控,能够监控到代码层面的性能,例如代码响应时间、吞吐量等等,研发人员经过它能够快速的定位性能低效代码
经过Ai方式注入或者流量器中增长js ,js 收集浏览网页用户的信息,并提交到OneAPM服务器。因而,咱们可以了解到真实用户对网站的浏览状况。例如:白屏时间、首屏时间、脚本错误、网页加载就绪时间、各类浏览器的访问状况,甚至能了解不一样浏览器、运营商、地区用户的访问情况。
Ai、Bi 都比较偏向于开发,Ci则偏向于运维,Ci提供对系统、开源程序(例如:Nginx、PHP、Apache、MySQL、redis 等等)的性能指标管理,并且也提供系统层面的基本监控,例如 CPU 、内存、硬盘,可是功能相对比 Server 模块弱一点。
与Ai相相似,惟一不一样的是它属于用户层面软件管理,真实反馈用户是用状况,并定位到代码问题。目前支持 iOS、 Android ,Windows Phone 用户量毕竟太少
服务器系统级别监控,主要监控CPU、内存、网络、硬盘等基本信息
OneAlert 的前身是 110 monitor ,偏向于运维,它是监控中最终的一环。 OneAlert 是一个中心,任何告警信息发送至 OneAlert,你能够设置各类规则,例如什么时间点发告警给谁,经过什么发送发送,例如短信、邮箱、微信、app等等。此功能相对独立,不依托前面几个产品。支持多种插件,例如zabbix、NAGIOS、阿里云,甚至竞争对手监控宝。不知道监控宝该高兴呢仍是不高兴呢!
由于运维生存时间是 LNMP 环境,因此接下来的内容以 LNMP 为主,固然尽可能试用更多的业务
其实就是安装一个 PHP 扩展,并且官方已经列出了傻瓜式的文档,因此能够知道安装到底有多简单了。极力推荐官方改为一键安装方式。
安装OneAPM PHP Agent
#wget https://user.oneapm.com/account/7e42e138b703a72ae6950531c9ad958a/agent/php/OneAPM_php_Agent_latest.tar.gz tar -xzf OneAPM_php_Agent_latest.tar.gz cd oneapm-php5-linux-install-script ./oneapm-install
在提示输入「License Key」时,输入「License Key」
BwQCBwAPDAd5724VHAhDXw9NW04886BbXhgGCAkDTb0f6wBfGwNRTQcE3ca5BgcZBAAVBls=
等待安装脚本执行。若出现如下信息,则安装成功。
OneAPM is now installed on your system. Congratulations!
重启php-fpm
service php-fpm restart
或者你是 Apache ,那么重启 Apache 就好了,等候几分钟,从新进入后台,即可以看到数据。
Ai 总览
默认显示最近30分钟数据。一一看下都有哪些功能及其做用
平均响应时间
分为4个事物, Web 事务、后台任务、数据库、外部服务,着重了解 Web 与数据库。
Web 事务响应时间为从接收到请求到放回之间的时间,最高平均值为870多毫秒,这个值能够容忍。好在运维生存时间时间有使用 CDN ,不然绝对都是没法容忍的。
数据库最大平均响应时间为3.08ms,执行次数16,316次,总时间50.22毫秒。看到这些数据,内心有底了。
Apdex (性能指数)
先来了解下什么是 Apdex 。 Apdex 是一个国际通用标准,是对用户体验满意度的量化值。
服务端 Apdex :当前服务端设定的 Apdex T 值为0.5秒。这意味着响应时间小于0.5秒时,为满意状态,介于0.5秒到2秒之间为可容忍状态,2秒以上为不满意状态。
浏览器 Apdex :当前浏览器设定的 Apdex T值为2秒。 这意味着浏览器加载时间在2秒内是满意状态,介于2秒到8秒之间为可容忍状态,8秒以上为不满意状态。
吞吐量
每分钟平均请求量
目前这边每分钟平均27.17个请求,上图图层显示的数据为14:50到14:52两分钟内平均响应时间328.76ms,执行次数66次。若是吞吐量小,响应时间长,那应该引发足够的重视,将问题消灭在萌芽期。
Web 事务
一个 http/https 请求从发起到收到响应这个过程,咱们称之为 Web 事务。
有时候网站慢,有时候有正常,运维没法排查到问题。OneAPM 的慢事务追踪完美解决了这个问题。来找出运维生存时间网站隐藏的问题。
由此,我找到 Uri/wp-login.php 在整个过程相对耗时间,这是一个较少用到的页面,从上图能够发现2分钟内只执行了2次,平均响应时间却达到995.78毫秒。
点击如上链接,进入追踪
在最慢组件中,咱们发现函数 file_get_contents 调用了一次,却执行了9秒时间。咱们看看追踪详情,来探探究竟。
运维生存时间时间启用了酷炫的登录页面,后台图片为 bing 的背景。这个文章居然是经过 file_get_contents 抓取的,得不偿失呀!
Web 事务追中不只仅包含了代码级别追踪,其中还有请求参数,SQL 语句。功能酷的不能在库了。究竟是 SQL 有问题仍是代码有问题,OneAPM 都给你展现出来了。
错误信息
程序执行过程当中可能会少许出现错误,由于几率的关系,咱们可能没法遇到,有些错误致命,有些错误无关大小,OneAPM 也就能抓住他们,等着开发人员去消灭。
以上错误,在近6小时出现1326次,庆幸它是一个 warning 。为此功能点赞!
试用Ai以后,即便它是商业化产品,可是崇拜之心油然而生,毕竟这些功能 Zabbix 、NAGIOS 没法实现。
Bi , 浏览器应用管理,适合门户、论坛等站点,数据均来自真实用户,可以最直接的了解到站点性能,以及用户端出现的错误。
有三种部署方式
复制/黏贴 js 纯文本
输入应用名称后,复制生成的代码,将其粘贴在 <head>
中。
注意:须要将代码粘贴在 <meta>
后面,全部 <script>
前面。
优点:避免加载 js 探针第一个脚本引发的网络耗时和减小白屏时间。
复制/黏贴 js 连接
输入应用名称后,复制生成的代码,将其粘贴在 <head>
中。
注意:须要将代码粘贴在 <meta>
后面,全部 <script>
前面。
优点:操做简单,部署方便。
Ai 自动注入 Bi 探针
由 Ai 探针自动向前端页面注入 js 代码,只需简单配置,无需修改代码。
优点:和 Ai 无缝集成,可监控 Web 应用程序在不一样区域、不一样设备下响应时间,更新 js 探针方便
部署 Bi
使用 js 纯文本方式部署,输入应用名「运维生存时间 WEB」,保存便可获取到 js ,获取到的代码放到网站共用 head 之间。
若是不知道怎么放到 head ,联系对应的开发人员,他会告诉你。
在测试的前一周,咱们已经部署了一个未上 CDN 的小流量站点,先用这个站点看看。
Bi 基本功能
功能分为:受访页面、Ajax、脚本错误、浏览器、地理、运营商。
这部分数据对前端工程师很是重要,白屏时间、首屏时间、网页就绪时间,OneAPM 统计了每个 URL 的这些指数的平均时间,从中找出最耗时间的 URL ,对代码响应的改良。
Apdex 性能指数
此处能很是清晰的表现出当前站点的用户体验情况。若是大于2,那说明网站状况很是糟糕。如上截图,平均性能指标 Apdex 在0.28,能够容忍,看到这个指数内心相对放心,咱的站点用户体验不差。
脚本兼容性之脚本错误
公司有个前端工程师安装了各类浏览器,不知道的人还觉得他爱好普遍呢,实际上他仅仅是为了在每种浏览器上作兼容性测试。浏览器有多家,每一家都有多个版本, Firefox 都以及42.0了^_^。脚本错误在所不免, js 错误进一步致使网站部分功能没法使用。 OneAPM 记录了用户脚本错误信息,简直就是一个专业用户自动反馈(以往靠热心的用户的反馈,还提供测试,远程测试那得多消磨时间,并且其余未反馈的用户就别遗忘了,被遗忘几乎等于流失)。
如上信息能够知道哪一个页面出现了哪些脚本错误,而且给出了用户信息、浏览器、错误信息、堆栈信息等。我想,前端工程师从这里能够解决至关多问题!
页面跟踪
某些页面慢,到底慢在哪里,和 Ai 的 Web 事务同样,提供了慢事务追踪。
点击须要 Trace 的页面,找到满加载追踪,资源为支持的能够 Trace
时间都在DOM
只列出了部分资源时序,底下还有更多,相似 firebug 的「网络」,显示各个资源加载所消耗的时间。可是功能略显不足,未显示每一个资源 DNS 解析、创建链接、接收数据分别消耗的时间,可是它能为咱们提供必定的参考。这边或许能够作得更好。
Ci 平台监控,具体干吗的,我上一张图你就明白了。
用户只需在服务器安装 OneAPM Ci Agent,配置须要监控应用的配置文件便可。
部署OneAPM Ci Agent
点击设置添加平台,以下图
复制 shell 命令,在 Linux 中运行便可。
平台添加完毕以后,过几分钟就能看到信息
刚配置完毕,平台服务列只有 System 。 System 为服务器基本信息,例如 CPU、内存、硬盘、网络等。以下图
效果与刚安装完 Zabbix 同样,可是安装更简单,UI 更漂亮。
添加平台服务
有各类各样的程序须要作性能管理,例如 Nginx 、 MySQL 、 PHP 、tomcat 等
LNMP 环境部署
全部的配置文件均在 /etc/oneapm-ci-agent/conf.d/ ,支持被监控的软件都有配置文件 sample
配置文件以下
ll /etc/oneapm-ci-agent/conf.d/ -rw-r--r-- 1 oneapm-ci-agent root 2630 Sep 6 22:41 activemq_58.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 2619 Sep 6 22:41 activemq.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 232 Sep 6 22:41 apache.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 2372 Sep 6 22:41 cassandra.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 250 Sep 6 22:41 couchbase.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 916 Sep 6 22:41 couch.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 2408 Sep 6 22:41 docker.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 2385 Sep 6 22:41 elastic.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 1550 Sep 6 22:41 jmx.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 338 Sep 6 22:41 kafka_consumer.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 5957 Sep 6 22:41 kafka.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 245 Sep 6 22:41 mcache.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 872 Sep 6 22:41 mongo.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 917 Sep 6 22:41 mysql.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 627 Sep 6 22:41 nginx.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 952 Sep 6 22:41 php_fpm.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 1787 Sep 6 22:41 postgres.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 1645 Sep 6 22:41 rabbitmq.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 1116 Sep 6 22:41 redisdb.yaml.example -rw-r--r-- 1 oneapm-ci-agent root 2760 Sep 6 22:41 tomcat.yaml.example
部署 nginx
部署 nginx status
请看以前的文章:http://www.ttlsa.com/nginx/nginx-status-detail/
status地址:http://localhost/status
编辑 nginx 配置
# cat nginx.yaml init_config: instances:
nginx_status_url: http://localhost/ngx_status
tags:
tag_key:tag_value`
重启OneAPM-C
# /etc/init.d/oneapm-ci-agent restart Stopping OneAPM CI Agent (using killproc on supervisord): [ OK ] Starting OneAPM CI Agent (using supervisord): [ OK ]
验证 php-fpm运行状态
# /etc/init.d/oneapm-ci-agent info
若是看到以下信息,说明 php-fpm 监控配置成功,登录 OneAPM,等候几分钟,Ci中会有数据展现
Checks ====== php_fpm -------
instance #0 [OK]
Collected 7 metrics, 0 events & 2 service checks`
Nginx 性能数据
修改配置文件,重启 Agent 便可获取到 nginx,很是简答!
部署 MySQL
部署方法基本类型,只须要修改 mysql.yaml 便可
# cat mysql.yaml instances:
server: localhost
user: oneapm
pass: '123456'`
配置数据权限
# mysql -e "CREATE USER 'oneapm'@'localhost' IDENTIFIED BY 123456;" # mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'oneapm'@'localhost' WITH MAX_USER_CONNECTIONS 5;"
重启 Agent
# /etc/init.d/oneapm-ci-agent restart`
验证配置
# /etc/init.d/oneapm-ci-agent restart Checks ====== [...] mysql -----
instance #0 [OK]
Collected 8 metrics & 0 events`
备注:密码若是是数字,必定记得加上单引号,不然会出现错误。这算一个小 BUG,但愿 OneAPM 能将它先转为字符串。
MySQL 性能数据
固然,这边只显示部分12个性能指标,你能够点击“加载更多”显示更多,或者前往 MySQL 仪表盘。
Nginx 部署
配置方法都同样,只是配置文件不一样,我列出个人配置文件以及监控图
配置文件 nginx.yaml
# cat nginx.yaml init_config: instances:
nginx_status_url: http://localhost/ngx_status
tags:
-tag_key:tag_value`
性能数据
到这里咱们能够发现 Ci 监控与 Zabbix 部分功能是同样的
OneAPM 有以下优点
部署简单,没有太多复杂配置
Ui 美观大方
图片数据能更详细的显示,而 Zabbix 仅仅是一张图
Zabbix 优点
开源免费
自定义功能强
功能与 Ai 相似,可实现代码级别管理
Server 监控与平台监控中的平台服务「system」部分重叠,若是你不想监控太多关于系统层面的数据(cpu、内存、io之类),那么安装OneAPM Ci Agent便可。反之,装OneAPM Servers吧!
部署 OneAPM Servers
# wget https://user.oneapm.com/account/7e42e138b703a72ae6950531c9ad958a/agent/server/OneAPM_server_Age nt_latest.tar.gz # tar –xzvf OneAPM_server_Agent_latest.tar.gz # cd oneapm-sysmond-linux-install-script/ # ./oasysmond-install OneAPM Server Monitor Installation (interactive mode) ============================================ Please select from one of the following options: 1) Install OneAPM Server Monitor 2) Uninstall OneAPM Server Monitor 3) Upgrade OneAPM Server Monitor 0) Exit Enter choice (1-3, 0 to exit): 1
根据提示,输入你的 key 便可。
运行 OneAPM Servers
# oasysmond
数据展现
启动以后,登录 OneAPM 后台,进入 Server 监控,稍等几分钟即可以查看数据。我添加了两台服务器,数据以下
一个服务器列表,显示了最基础的 CPU\ 内存、内存、磁盘信息。点击主机名,查看更多数据。咱们能够看到四个菜单:总览、磁盘、网络、进程。
相比其余功能, Server 监控没有给我太大的惊喜,毕竟功能和 zabbix 相相似。不过站在非专业运维角度出发,这绝对是个被须要产品。分别列出一些性能指数
千万不要小看这些基本数据,他能给服务器是否须要扩容升级提供一个依据,历史数据也更容易协助解决一些存在故障!
它是告警 ALL IN ONE,Zabbix 、API、NAGIOS、阿里云、腾讯云、监控宝等等发出的告警信息接入 OneAlert 数据中心。 OneAlert 根据定义好的规则,将经过定义好的告警方式(多是邮件、多是短信、多是电话)将告警消息传给指定的人,规则各类灵活配置。
经过全面的试用 OneAPM ,我以为没有必要拿 OneAPM 与传统开源监控 Zabbix 作个比较。由于各自侧重点不一样,互相不可取代。OneAPM 偏重于性能管理, Zabbix 偏重于业务监控。
文章写这么多,不是立马让你掏钱去买 OneAPM 服务,这并非个人初衷。我想让你们全面的了解什么 APM,APM 能作什么? APM 能解决什么问题?若是你以为它对大家有说帮助,请绝不犹豫的使用它。若是以为 Zabbix 就够了。那也没那个必要。
感谢 OneAPM 提供试用功能,让我更全面的了解了 OneAPM 性能管理。固然, zabbix 毫无疑问是一个伟大的产品,我是它的铁杆粉丝(我用 Zabbix 110篇系列文章这个行动证实了),了解到它的强大之处,也了解到了它的不足之处,这个不足恰巧是 APM 的机会!
做者:凉白开 网站:运维生存时间 网址:http://www.ttlsa.com/
若是你也想体验 OneAPM 强悍的应用性能管理功能,欢迎访问 OneAPM 官方网站进行体验试用。想阅读更多技术文章,请访问 OneAPM 官方博客。