一直在说 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 监控应用:

参考文档:

使用OneApm CI SDK实现业务响应速度监控

Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

如何监控业务的响应速度?Cloud Insight SDK 实践分享的更多相关文章

  1. 如何使用 Cloud Insight SDK 实现 Druid 监控?

    Druid 简介与用途 首先说明,这里所说的 Druid 并不是阿里巴巴的数据库连接池项目,而是 Eric Tschetter 创立的一个开源的分布式实时处理系统,希望为烧钱的大数据处理,提供一种更廉 ...

  2. 使用 Cloud Insight SDK 监控北京空气质量!

    现在越来越多的 App 都开始有广告了.特别是空气质量监测,和天气类的 App,广告还是蛮多的,眼花缭乱,真是够了. 最近刚好在用一款系统监控工具 Cloud Insight,它提供的 SDK 可以把 ...

  3. 微服务性能分析|Pyroscope 集合 Spring Cloud Pig 的实践分享

    随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...

  4. Docker 监控- Prometheus VS Cloud Insight

    如今,越来越多的公司开始使用 Docker 了,2 / 3 的公司在尝试了 Docker 后最终使用了它.为了能够更精确的分配每个容器能使用的资源,我们想要实时获取容器运行时使用资源的情况,怎样对 D ...

  5. Cloud Insight 和 BearyChat 第一次合体,好紧张!

    说到 ChatOps 我们可能立刻想到是 Slack(啥?没听过?哦!),但是由于国内网络和语言的问题你可能无法拥有很好的体验了.那就把目光转回国内吧,国内的话就不得不提到 BearyChat 等 C ...

  6. Cloud Insight 客户案例-晨芯时代科技有限公司

    在不断迭代的过程中,Cloud Insight 也很重视客户对产品的使用体验,这次我们拜访了晨芯时代,了解到他们在使用 Cloud Insight 过程中对产品的一些想法. 客户背景 晨芯时代是一家开 ...

  7. Cloud Insight 仪表盘上线 | 全面监控 Redis

    OneAPM 作为应用性能领域的新兴领军企业,近期发布了重量级新产品-- Cloud Insight 数据管理平台,用它能够监控所有基础组件,并通过 tag 标签对数据进行管理. 近日,Cloud I ...

  8. 极客范:如何使用 Cloud Insight 来监控闭路电视?

    最近新上线支持 Windows 系统及其组件 监控功能的 Cloud Insight,在系统监控领域基本囊括了对所有主流和部分非主流平台的支持.但是这还不够,Cloud Insight 可不仅仅是一个 ...

  9. 用 OneAPM Cloud Insight 监控 Docker 性能

    Docker 是构建和部署软件的一个新兴的轻量级的平台,也是一个减轻替代虚拟机的容器.Docker 通过给开发者提供兼容不同环境的镜像,成为解决现代基础设施的持续交付的一个流行的解决方案. 和虚拟机一 ...

随机推荐

  1. 进程通信---FIFO

    管道没有名字,所以只能在具有血缘关系的进程间使用,而在无名管道发展出来的有名管道FIFO,则有路径名与之相关联,以一种特殊设备文件形式存在于文件系统中,从而允许无亲缘关系的进程访问FIFO,下面看FI ...

  2. insertorupdate

    MERGE INTO  运用的心得 最近完成一个功能,就是往表里插入数据,以party_id 和prod_id为联合主键,存在的更新,不存在的插入, ORACLE 10g 后可以试用MERGE INT ...

  3. 批处理cmd背景颜色

    Pause  Echo 其他提示语 & pause > nul     pause暂停 COLOR 设置默认的控制台前景和背景颜色. COLOR [attr] attr 指定控制台输出的 ...

  4. MotionEvent中getX()和getRawX()的区别

    http://blog.csdn.net/ztp800201/article/details/17218067 public class Res extends Activity implements ...

  5. Mongodb Java Driver 参数配置解析

    要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...

  6. RUP(Rational Unified Process)统一软件过程概述

    RUP是Rational公司三位杰出的软件工程大师Grady Booch,Ivar Jacobson,James Rumbaugh提出的一个软件工程过程方法.软件开发过程是将一个用户需求转化为软件系统 ...

  7. android 线程

    android线程: 通用多个线程通信管理框架: 1.Handler监听者框架:子线程是事件源,主线程是监听者.        Handler作为子线程的监听器出现:主线程中生成Handler的子类, ...

  8. iis 下的 selfssl

    当然,如果你想省掉所有这些麻烦也行,最简单的在IIS启动SSL的方法只要3步: 1. 下载 IIS 6.0 Resource Kit Tools: http://www.microsoft.com/d ...

  9. C#中泛型和单链表

      泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类 ...

  10. 感知器算法PLA

    for batch&supervised binary classfication,g≈f <=> Eout(g)≥0 achieved through Eout(g)≈Ein(g ...