如何監控業務的響應速度?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 官方博客

相關文章
相關標籤/搜索