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