如何监控业务的响应速度?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 的响应情况,即使是多个不同服务器中的 nginx 消息也都可以放在一张图表上,效果如下图:
这样仪表盘是配置完了,其实还可以设置报警策略,在一些指标超出范围时触发报警。
查看
依照平时使用习惯,进入监控界面,首先第一眼就是各个平台概览,看看是不是都在正常运行,正常情况下图标都应该是绿色的,如果变成红色了就点进去看看,上面会有相应报错。
上述平台如果没有问题,就进入仪表盘页面,首先左面是自定义仪表盘,在这就可以查看之前配置的 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
简单列几个有意思的 SDK 监控应用:
- 监控北京空气质量 监控不同地区 PM2.5
- 监控闭路电视的硬盘空间 github 上有项目
- 使用 Cloud Insight SDK 实现 Druid 监控 实现大数据监控
参考文档:
Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
如何监控业务的响应速度?Cloud Insight SDK 实践分享的更多相关文章
- 如何使用 Cloud Insight SDK 实现 Druid 监控?
Druid 简介与用途 首先说明,这里所说的 Druid 并不是阿里巴巴的数据库连接池项目,而是 Eric Tschetter 创立的一个开源的分布式实时处理系统,希望为烧钱的大数据处理,提供一种更廉 ...
- 使用 Cloud Insight SDK 监控北京空气质量!
现在越来越多的 App 都开始有广告了.特别是空气质量监测,和天气类的 App,广告还是蛮多的,眼花缭乱,真是够了. 最近刚好在用一款系统监控工具 Cloud Insight,它提供的 SDK 可以把 ...
- 微服务性能分析|Pyroscope 集合 Spring Cloud Pig 的实践分享
随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...
- Docker 监控- Prometheus VS Cloud Insight
如今,越来越多的公司开始使用 Docker 了,2 / 3 的公司在尝试了 Docker 后最终使用了它.为了能够更精确的分配每个容器能使用的资源,我们想要实时获取容器运行时使用资源的情况,怎样对 D ...
- Cloud Insight 和 BearyChat 第一次合体,好紧张!
说到 ChatOps 我们可能立刻想到是 Slack(啥?没听过?哦!),但是由于国内网络和语言的问题你可能无法拥有很好的体验了.那就把目光转回国内吧,国内的话就不得不提到 BearyChat 等 C ...
- Cloud Insight 客户案例-晨芯时代科技有限公司
在不断迭代的过程中,Cloud Insight 也很重视客户对产品的使用体验,这次我们拜访了晨芯时代,了解到他们在使用 Cloud Insight 过程中对产品的一些想法. 客户背景 晨芯时代是一家开 ...
- Cloud Insight 仪表盘上线 | 全面监控 Redis
OneAPM 作为应用性能领域的新兴领军企业,近期发布了重量级新产品-- Cloud Insight 数据管理平台,用它能够监控所有基础组件,并通过 tag 标签对数据进行管理. 近日,Cloud I ...
- 极客范:如何使用 Cloud Insight 来监控闭路电视?
最近新上线支持 Windows 系统及其组件 监控功能的 Cloud Insight,在系统监控领域基本囊括了对所有主流和部分非主流平台的支持.但是这还不够,Cloud Insight 可不仅仅是一个 ...
- 用 OneAPM Cloud Insight 监控 Docker 性能
Docker 是构建和部署软件的一个新兴的轻量级的平台,也是一个减轻替代虚拟机的容器.Docker 通过给开发者提供兼容不同环境的镜像,成为解决现代基础设施的持续交付的一个流行的解决方案. 和虚拟机一 ...
随机推荐
- 进程通信---FIFO
管道没有名字,所以只能在具有血缘关系的进程间使用,而在无名管道发展出来的有名管道FIFO,则有路径名与之相关联,以一种特殊设备文件形式存在于文件系统中,从而允许无亲缘关系的进程访问FIFO,下面看FI ...
- insertorupdate
MERGE INTO 运用的心得 最近完成一个功能,就是往表里插入数据,以party_id 和prod_id为联合主键,存在的更新,不存在的插入, ORACLE 10g 后可以试用MERGE INT ...
- 批处理cmd背景颜色
Pause Echo 其他提示语 & pause > nul pause暂停 COLOR 设置默认的控制台前景和背景颜色. COLOR [attr] attr 指定控制台输出的 ...
- MotionEvent中getX()和getRawX()的区别
http://blog.csdn.net/ztp800201/article/details/17218067 public class Res extends Activity implements ...
- Mongodb Java Driver 参数配置解析
要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...
- RUP(Rational Unified Process)统一软件过程概述
RUP是Rational公司三位杰出的软件工程大师Grady Booch,Ivar Jacobson,James Rumbaugh提出的一个软件工程过程方法.软件开发过程是将一个用户需求转化为软件系统 ...
- android 线程
android线程: 通用多个线程通信管理框架: 1.Handler监听者框架:子线程是事件源,主线程是监听者. Handler作为子线程的监听器出现:主线程中生成Handler的子类, ...
- iis 下的 selfssl
当然,如果你想省掉所有这些麻烦也行,最简单的在IIS启动SSL的方法只要3步: 1. 下载 IIS 6.0 Resource Kit Tools: http://www.microsoft.com/d ...
- C#中泛型和单链表
泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类 ...
- 感知器算法PLA
for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g ...