《Cloud Insight SDK 實(shí)踐分享,如何監(jiān)控業(yè)務(wù)的響應(yīng)速度?》要點(diǎn):
本文介紹了Cloud Insight SDK 實(shí)踐分享,如何監(jiān)控業(yè)務(wù)的響應(yīng)速度?,希望對您有用。如果有疑問,可以聯(lián)系我們。
一直在說 Cloud Insight 是數(shù)據(jù)聚合平臺,可以用 SDK 和 API 實(shí)現(xiàn)業(yè)務(wù)監(jiān)控,如今不拿出點(diǎn)實(shí)踐人們恐怕是不能信服.那今天本文就先簡單介紹一下 SDK 可以應(yīng)用在哪些方面,再舉個真實(shí)用戶場景來讓大家看看.
首先說一點(diǎn),通過 SDK 你可以把你想看的任何數(shù)據(jù)都接在 Cloud Insight 平臺上,例如運(yùn)營可以把涉及到的用戶數(shù)據(jù)放上去,讓開發(fā),運(yùn)維,boss 隨時都可以看到自己產(chǎn)品的用戶,如果涉及到多個層次的指標(biāo)數(shù)據(jù)(日活,增長,轉(zhuǎn)化,留存...)都有相應(yīng)的簡單操作;開發(fā)可以把自己 build 代碼的次數(shù),提交的次數(shù)放上去;銷售也可以把用戶簽單數(shù),簽單額放上去(如果允許的話啊);運(yùn)維就更不用說了,所有服務(wù)器監(jiān)控指標(biāo)都可以放上來.
下面介紹一個業(yè)務(wù)場景的監(jiān)控,本實(shí)例來自真實(shí)用戶場景.
監(jiān)控可用性和響應(yīng)速度,運(yùn)營的需求要求每次接口響應(yīng)控制在0.1-0.5s內(nèi).如果超出這個時間就要找到問題,進(jìn)行優(yōu)化.
在后端添加 serverId 和處理時間并放到 http header 中,通過 curl 去獲得后端信息和處理時間,采樣后生成報表.
后來改成通過 nginx 記錄 upstream 的 response time,采樣生成可視化數(shù)據(jù).但由于 nginx 日志分布于不同的機(jī)器中,收集數(shù)據(jù)相對來講還是比較麻煩的.
通過 Cloud Insight SDK 采集數(shù)據(jù),通過探針發(fā)送這些數(shù)據(jù)到后端服務(wù)器,后端服務(wù)器對數(shù)據(jù)進(jìn)行處理,進(jìn)行展示.
真正操作起來很簡單,安裝 Ci 探針,安裝 Python SDK,編輯代碼,調(diào)用系統(tǒng)命令,獲取 nginx,php 的響應(yīng)時間,從幾個響應(yīng)時間中取最大值傳到 Cloud Insight 服務(wù)器,探針默認(rèn) 30s 抓取一次數(shù)據(jù),但我們又想每秒統(tǒng)計三次響應(yīng)最慢的請求,所以寫一個定時執(zhí)行這個命令的腳本.
#!/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
部署好后,可以在自定義數(shù)據(jù)儀表盤上看到應(yīng)用數(shù)據(jù).把這些自定義數(shù)據(jù)放在一張儀表盤上,后期可以直接打開這個自定義儀表盤來查看 php 的響應(yīng)情況,即使是多個不同服務(wù)器中的 nginx 消息也都可以放在一張圖表上,效果如下圖:
這樣儀表盤是配置完了,其實(shí)還可以設(shè)置報警策略,在一些指標(biāo)超出范圍時觸發(fā)報警.
依照平時使用習(xí)慣,進(jìn)入監(jiān)控界面,首先第一眼就是各個平臺概覽,看看是不是都在正常運(yùn)行,正常情況下圖標(biāo)都應(yīng)該是綠色的,如果變成紅色了就點(diǎn)進(jìn)去看看,上面會有相應(yīng)報錯.
上述平臺如果沒有問題,就進(jìn)入儀表盤頁面,首先左面是自定義儀表盤,在這就可以查看之前配置的 php 的響應(yīng)情況,右面是平臺儀表盤,一般你系統(tǒng)監(jiān)控上什么就會自動出現(xiàn)相應(yīng)的組件信息.
點(diǎn)擊查看業(yè)務(wù)數(shù)據(jù)的儀表盤,發(fā)現(xiàn)了一個 PHP 響應(yīng)時間達(dá)到 5s 的異常紀(jì)錄,查看Ai(Application Insight) 的 web 事務(wù)(web 事務(wù)默認(rèn)會抓取響應(yīng)超過 2s 的事務(wù)),果然發(fā)現(xiàn)一個異常緩慢的事務(wù),通過分析(代碼級監(jiān)控)確認(rèn)問題,解決問題.
SDK 是 Cloud Insight 團(tuán)隊根據(jù) StatsD 進(jìn)行了修改,方便用戶上傳自定義指標(biāo),目前支持的數(shù)據(jù)格式有 Counters Gauges 2種,支持的語言有 Python Ruby Nodejs 3 種,其他的 Java PHP 還在開發(fā)中.目前使用 SDK 的前提條件為需要安裝 Cloud Insight Agent.Agent 的采集周期為 30 s,數(shù)據(jù)發(fā)送周期為 15 s.
我們還將提供 Cloud Insight API,它擁有更加強(qiáng)大的功能,通過它可以不受任何約束的發(fā)送符合 Cloud Insight 數(shù)據(jù)格式標(biāo)準(zhǔn)的任意數(shù)據(jù),無論本機(jī)是否安裝了 Cloud Insight Agent,目前在開發(fā)中.
簡單列幾個有意思的 SDK 監(jiān)控應(yīng)用:
參考文檔:
使用OneApm CI SDK實(shí)現(xiàn)業(yè)務(wù)響應(yīng)速度監(jiān)控
Cloud Insight 集監(jiān)控、管理、計算、協(xié)作、可視化于一身,幫助所有 IT 公司,減少在系統(tǒng)監(jiān)控上的人力和時間成本投入,讓運(yùn)維工作更加高效、簡單.
素材來自塵緣的博客
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4548.html