OneAPM试用
我们(handka.com)的研发团队是个5人小团队.其中3人前端,2人后端,没有专职的运维,我们在服务监控上较为薄弱.虽然我们之前在服务器上服务器上安装了ganglia来监控基本的CPU,磁盘IO和网络流量.而我们采用了Play1的技术栈,JVM和API,SQL层的监控上一直是空白.
最近业务量的上涨带来了服务器Load Average的增加,为了进一步了解Play Server的内部的运行情况.我们希望使用更为详尽的监控系统.
寻找合适的监控系统
我在选择监控系统的时有两个出发点:
1. 监控指标准确
2. 集成与开发难度小
3. 监控系统资源占用少
由于我们的系统使用了非Servelt标准的Play1做为Web Server,而现有的开源JVM监控平台不能方便的集成进我们系统.所以我们只能放弃开源JVM监控系统.
后来我们试用了商业的NewRelic,虽然它能支持Play1,但因为要向NewRelic国外的服务器发送监控数据,所以经常导致监控系统数据刷新不及时.我们不得不放弃NewRelic.
再后来我们发现了OneAPM.
OneAPM的集成步骤
虽然在OneAPM的网站上没有描述Play1集成的文档.但集成OneAPM的步骤仍然相当简单方便.
1. 进入OneAPM添加服务应用的引导界面
2. 选择编程语言为Java,
3. 点击生成授权编号按钮,将授权编号拷贝出来,在第4步使用
4. 将下载OneAPM的zip包解压,并将文件夹OneAPM上传到服务器的play应用目录
5. 进入OneAPM修改./OneAPM/oneapm.yml的license_key的值为之前的授权编号.
6. 将之前的Play实例的启动脚本从play run 改为
play run -javaagent:./OneAPM/oneapm.jar
7. 重启Play实例:
1. Play stop 2. play run -javaagent:./OneAPM/oneapm.jar
8. 进入OneAPM页面,就能看到Play应用了.
OneAPM的优点
试用了几天后,发现OneAPM的优点相当明显
1. 页面响应速度快,相对于国外的监控服务,OneAPM地理上的优势不言而喻.
2. OneAPM的优势也带来了它相当稳定的服务.在集成进OneAPM后, 服务器的LoadAverage曲线和之前一样.说明它占用的资源完全可以忽略.
3. 如果只是监控http,sql和JVM的状态,OneAPM完全够用,免去了使用Java的Metric类库手动编码和集成的复杂.
下面是几张监控界面的截图:
总之,OneAPM真的很棒,虽然也有不足的地方,但它一定会越来越好.