如何监控业务的响应速度?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 通过给开发者提供兼容不同环境的镜像,成为解决现代基础设施的持续交付的一个流行的解决方案. 和虚拟机一 ...
随机推荐
- 多文件上传artDialog+plupload
一.效果展示 包括文件上传面板以及文件上传列表 二.介绍 长话短说,采用spring springMVC mybatis maven mysql,实现多文件上传功能,下载使用的是流的形式. 其中涉及的 ...
- 《asp.net mvc实战》笔记
对于大部分复杂的项目来说,可能不会在Models文件夹中放置你的模型.一般来说,最好的方法是将你的领域模型放在独立的项目中.这样其他应用程序可以在使用该项目而不必依赖于你的MVC应用程序.我们建议你只 ...
- HDU 5024 Wang Xifeng's Little Plot(枚举)
题意:求一个图中只有一个90°拐点的路的最大长度. 分析:枚举每一个为'.'的点,求出以该点为拐点的八种路中的最大长度,再比较所有点,得出最大长度即可. 如上样例,这样是个90°的角... 注意:最多 ...
- MySQL 密码增强插件
200 ? "200px" : this.width)!important;} --> 介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但 ...
- ubuntu 14.04 下 安装samba 及SSH 服务端的方法
之前说了 FTP服务器的搭建:http://www.cnblogs.com/bcsflilong/p/4200139.html 今天说一下samba 和ssh服务器的搭建. 先说samba 吧. 在u ...
- JavaScript ==和===
== : 值等 === :恒等(引用等) ref: http://blog.csdn.net/wang171838/article/details/8554305 JavaScript支持“=”.“ ...
- 11g RAC r2 的启停命令概述1
目标: 熟悉主要进程的启停顺序 了解独占模式 -excl crsctl start crs与crsctl start cluster 区别 1.熟悉主要进程的启停顺序 1.1 启动节点rac1: [r ...
- openerp学习笔记 自定义小数精度(小数位数)
小数位数标识定义: lx_purchase/data/lx_purchase_data.xml <?xml version="1.0" encoding="utf- ...
- Python操作列表的常用方法
下面列出列表常用的方法操作列表以及小例子: 1. Append 在列表末尾添加元素,需在列表末尾添加元素,需要注意几个点: A. append中添加的参数是作为一个整体 & ...
- LeapMotion(2):追踪五指
上一篇文章,我们实现了Leap Motion的简单测试.追踪其中一个手指并用红色圆形表示其在空间的位置. 这篇文章,我们来实现五指的追踪. 其实,能够实现一指的追踪,那么五指的追踪自然不成问题.但是, ...