如何监控业务的响应速度?Cloud Insight SDK 实践分享

一直在说 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

简单列几个有意思的 SDK 监控应用:

参考文档:

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

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

本文转自 OneAPM 官方博客

相关文章
相关标签/搜索