Cloud Insight SDK 实践分享,如何监控业务的响应速度?
《Cloud Insight SDK 实践分享,如何监控业务的响应速度?》要点: 一直在说 Cloud Insight 是数据聚合平台,可以用 SDK 和 API 实现业务监控,如今不拿出点实践人们恐怕是不能信服.那今天本文就先简单介绍一下 SDK 可以应用在哪些方面,再举个真实用户场景来让大家看看. 首先说一点,通过 SDK 你可以把你想看的任何数据都接在 Cloud Insight 平台上,例如运营可以把涉及到的用户数据放上去,让开发,运维,boss 随时都可以看到自己产品的用户,如果涉及到多个层次的指标数据(日活,增长,转化,留存...)都有相应的简单操作;开发可以把自己 build 代码的次数,提交的次数放上去;销售也可以把用户签单数,签单额放上去(如果允许的话啊);运维就更不用说了,所有服务器监控指标都可以放上来. 下面介绍一个业务场景的监控,本实例来自真实用户场景. 用户需求监控可用性和响应速度,运营的需求要求每次接口响应控制在0.1-0.5s内.如果超出这个时间就要找到问题,进行优化. 以前的做法在后端添加 serverId 和处理时间并放到 http header 中,通过 curl 去获得后端信息和处理时间,采样后生成报表. 后来改成通过 nginx 记录 upstream 的 response time,采样生成可视化数据.但由于 nginx 日志分布于不同的机器中,收集数据相对来讲还是比较麻烦的. 现在的监控手段配置通过 Cloud Insight SDK 采集数据,通过探针发送这些数据到后端服务器,后端服务器对数据进行处理,进行展示. 真正操作起来很简单,安装 Ci 探针,安装 Python SDK,编辑代码,调用系统命令,获取 nginx,php 的响应时间,从几个响应时间中取最大值传到 Cloud Insight 服务器,探针默认 30s 抓取一次数据,但我们又想每秒统计三次响应最慢的请求,所以写一个定时执行这个命令的脚本. #!/usr/bin/env python # -*- coding:utf8 -*- import commands import socket from oneapm_ci_sdk import statsd hostname = socket.gethostname() error,result = commands.getstatusoutput(""" tail /opt/dataroot/nginx/access.log |grep "download" | awk -F '" "' '{print $7}' """) if ( error == 0 ): code = result.split("\n") statsd.gauge('php_response_time.download.%s' % hostname,float( max(code) ) ) print 'php_response_time.%s : %04f' % ( hostname,float(max(code)) ) #获取Nginx Upstream response time * * * * * for i in $(seq 3); do sleep 15; python /opt/ci_check_php_response_time.py; done
这样仪表盘是配置完了,其实还可以设置报警策略,在一些指标超出范围时触发报警. 查看依照平时使用习惯,进入监控界面,首先第一眼就是各个平台概览,看看是不是都在正常运行,正常情况下图标都应该是绿色的,如果变成红色了就点进去看看,上面会有相应报错. 上述平台如果没有问题,就进入仪表盘页面,首先左面是自定义仪表盘,在这就可以查看之前配置的 php 的响应情况,右面是平台仪表盘,一般你系统监控上什么就会自动出现相应的组件信息. 点击查看业务数据的仪表盘,发现了一个 PHP 响应时间达到 5s 的异常纪录,查看Ai(Application Insight) 的 web 事务(web 事务默认会抓取响应超过 2s 的事务),果然发现一个异常缓慢的事务,通过分析(代码级监控)确认问题,解决问题. 延伸SDK 是 Cloud Insight 团队根据 StatsD 进行了修改,方便用户上传自定义指标,目前支持的数据格式有 Counters Gauges 2种,支持的语言有 Python Ruby Nodejs 3 种,其他的 Java PHP 还在开发中.目前使用 SDK 的前提条件为需要安装 Cloud Insight Agent.Agent 的采集周期为 30 s,数据发送周期为 15 s. 我们还将提供 Cloud Insight API,它拥有更加强大的功能,通过它可以不受任何约束的发送符合 Cloud Insight 数据格式标准的任意数据,无论本机是否安装了 Cloud Insight Agent,目前在开发中. 总结
简单列几个有意思的 SDK 监控应用:
参考文档: 使用OneApm CI SDK实现业务响应速度监控 Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单. 素材来自尘缘的博客 (编辑:ASP站长网) |