一直在说 Cloud Insight 是数据聚合平台,能够用 SDK 和 API 实现业务监控,现在不拿出点实践人们恐怕是不能信服。那今天本文就先简单介绍一下 SDK 能够应用在哪些方面,再举个真实用户场景来让你们看看。php
首先说一点,经过 SDK 你能够把你想看的任何数据都接在 Cloud Insight 平台上,例如运营能够把涉及到的用户数据放上去,让开发,运维,boss 随时均可以看到本身产品的用户,若是涉及到多个层次的指标数据(日活,增加,转化,留存。。。)都有相应的简单操做;开发能够把本身 build 代码的次数,提交的次数放上去;销售也能够把用户签单数,签单额放上去(若是容许的话啊);运维就更不用说了,全部服务器监控指标均可以放上来。html
下面介绍一个业务场景的监控,本实例来自真实用户场景。python
监控可用性和响应速度,运营的需求要求每次接口响应控制在0.1-0.5s内。若是超出这个时间就要找到问题,进行优化。nginx
在后端添加 serverId 和处理时间并放到 http header 中,经过 curl 去得到后端信息和处理时间,采样后生成报表。git
后来改为经过 nginx 记录 upstream 的 response time,采样生成可视化数据。但因为 nginx 日志分布于不一样的机器中,收集数据相对来说仍是比较麻烦的。github
经过 Cloud Insight SDK 采集数据,经过探针发送这些数据到后端服务器,后端服务器对数据进行处理,进行展现。web
真正操做起来很简单,安装 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 的响应状况,即便是多个不一样服务器中的 nginx 消息也均可以放在一张图表上,效果以下图:后端
这样仪表盘是配置完了,其实还能够设置报警策略,在一些指标超出范围时触发报警。api
依照平时使用习惯,进入监控界面,首先第一眼就是各个平台概览,看看是否是都在正常运行,正常状况下图标都应该是绿色的,若是变成红色了就点进去看看,上面会有相应报错。
上述平台若是没有问题,就进入仪表盘页面,首先左面是自定义仪表盘,在这就能够查看以前配置的 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 监控应用:
参考文档:
Cloud Insight 集监控、管理、计算、协做、可视化于一身,帮助全部 IT 公司,减小在系统监控上的人力和时间成本投入,让运维工做更加高效、简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客