日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

打通钉钉+WebHook:日志服务告警升级

發(fā)布時(shí)間:2024/8/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 打通钉钉+WebHook:日志服务告警升级 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要: 用一個(gè)最最常用的案例(Nginx日志分析)來(lái)說(shuō)明當(dāng)前使用場(chǎng)景,告警要解決的3個(gè)問題:是否有錯(cuò)誤;是否有性能問題;是否有流量急跌或暴漲

阿里云日志服務(wù)是針對(duì)實(shí)時(shí)數(shù)據(jù)一站式服務(wù),用戶只需要將精力集中在分析上,過(guò)程中數(shù)據(jù)采集、對(duì)接各種存儲(chǔ)計(jì)算、數(shù)據(jù)索引和查詢等瑣碎工作等都可以交給日志服務(wù)完成。

9月日志服務(wù)升級(jí)實(shí)時(shí)分析功能(LogSearch/Analytics),可以使用查詢+SQL92語(yǔ)法對(duì)日志進(jìn)行實(shí)時(shí)分析,并在結(jié)果分析可視化上,支持自帶Dashboard、DataV、Grafana、Tableua(通過(guò)JDBC)、QuickBI等可視化方式。

在監(jiān)控場(chǎng)景中光有可視化是不夠的,日志服務(wù)提供告警與通知功能如下:

將查詢(SavedSearch)保存下來(lái)
對(duì)查詢?cè)O(shè)置觸發(fā)周期(間隔),并對(duì)執(zhí)行結(jié)果設(shè)定判斷條件并且告警
設(shè)置告警動(dòng)作(如何通知),目前支持通知方式有3種:

通知中心:在阿里云通知中心可以設(shè)置多個(gè)聯(lián)系人,通知會(huì)通過(guò)郵件和短信方式發(fā)送
WebHook:包括釘釘機(jī)器人,及自定義WebHook等
(即將支持)寫回日志服務(wù)(logstore):可以通過(guò)流計(jì)算,函數(shù)服務(wù)進(jìn)行事件訂閱;也可以對(duì)告警生成視圖和報(bào)表
告警功能配置與使用可以參見告警文檔。

告警設(shè)置案例(Nginx日志為例)
我們用一個(gè)最最常用的案例(Nginx日志分析)來(lái)說(shuō)明當(dāng)前使用場(chǎng)景,告警要解決的3個(gè)問題:

是否有錯(cuò)誤
是否有性能問題
是否有流量急跌或暴漲
準(zhǔn)備工作(Nginx日志接入)
日志數(shù)據(jù)采集。詳細(xì)步驟請(qǐng)參考5分鐘快速入門 或 直接在Logstore頁(yè)面 數(shù)據(jù)源接入向?qū)?中設(shè)置。
索引設(shè)置,詳細(xì)步驟請(qǐng)參考索引設(shè)置與可視化或最佳實(shí)踐網(wǎng)站日志分析案例。
對(duì)關(guān)鍵指標(biāo)設(shè)置視圖 + 告警。
(在做完1、2步驟后,在查詢頁(yè)面可以看到原始日志)


Sample視圖(例子):

1. 是否有錯(cuò)誤
錯(cuò)誤一般有這樣幾類:404(請(qǐng)求無(wú)法找到地址)/502/500(服務(wù)端錯(cuò)誤),我們一般只需關(guān)心500(服務(wù)端錯(cuò)誤),將這個(gè)query保存下來(lái),統(tǒng)計(jì)單位時(shí)間內(nèi)錯(cuò)誤數(shù)c。告警可以設(shè)定一個(gè)規(guī)則c > 0 則產(chǎn)生告警:

status:500 | select count(1) as c

這種方式比較簡(jiǎn)單,但往往過(guò)于敏感,對(duì)于一些業(yè)務(wù)壓力較大的服務(wù)而言有零星幾個(gè)500是正常的。為了應(yīng)對(duì)這種情況,我們可以在告警條件中設(shè)置觸發(fā)次數(shù)為2次:只有連續(xù)2次檢查都符合條件后再發(fā)告警。

2. 是否有性能問題
服務(wù)器運(yùn)行過(guò)程中雖然沒有錯(cuò)誤,但有可能會(huì)出現(xiàn)延遲(Latency)增大情況,因此我們可以針對(duì)延遲進(jìn)行告警。

例如我們可以通過(guò)以下方式計(jì)算某個(gè)接口(“/adduser”)所有寫請(qǐng)求(”Post“)延時(shí)。告警規(guī)則設(shè)置為 l > 300000 (當(dāng)平均值超過(guò)300ms后告警)。

Method:Post and URL:"/adduser" | select avg(Latency) as l

利用平均值來(lái)報(bào)警簡(jiǎn)單而直接,但這種方法往往會(huì)使得一些個(gè)體請(qǐng)求延時(shí)被平均掉,反饋不出問題。例如我們對(duì)該時(shí)間段的Latency可以計(jì)算一個(gè)數(shù)學(xué)上的分布(劃分20個(gè)區(qū)間,計(jì)算每個(gè)區(qū)間內(nèi)的數(shù)目),從分布圖上可以看到大部分請(qǐng)求延時(shí)非常低(<20ms),但最高的延時(shí)有2.5S。

Method:Post and URL:"/adduser" | select numeric_histogram(20, Latency)

為應(yīng)對(duì)這種情況,我們可以用數(shù)學(xué)上的百分?jǐn)?shù)(99%最大延時(shí))來(lái)作為報(bào)警條件,這樣既可以排除偶發(fā)的延時(shí)高引起誤報(bào),也能對(duì)整體的演示更有代表性。以下的語(yǔ)句計(jì)算了99%分位的延時(shí)大小 approx_percentile(Latency, 0.99) ,同樣我們也可以修改第二個(gè)參數(shù)進(jìn)行其他分位的劃分,例如中位數(shù)的請(qǐng)求延時(shí) approx_percentile(Latency, 0.5)

Method:Post and URL:"/adduser" | select approx_percentile(Latency, 0.99) as p99

在監(jiān)控的場(chǎng)景中,我們也可以在一個(gè)圖上繪出平均延時(shí),50%分位延時(shí),以及90%分位延時(shí)。以下是按一天的窗口(1440分鐘)統(tǒng)計(jì)各分鐘內(nèi)延時(shí)的圖:

* | select avg(Latency) as l, approx_percentile(Latency, 0.5) as p50, approx_percentile(Latency, 0.99) as p99, date_trunc('minute', time) as t group by t order by t desc limit 1440

3. 是否有流量急跌或暴漲?
服務(wù)器端自然流量一般符合概率上的分布,會(huì)有一個(gè)緩慢上漲或下降過(guò)程。流量急跌或暴漲(短時(shí)間內(nèi)變化非常大)一般都是不正常的現(xiàn)象,需要留意。

(例如下圖的監(jiān)控中,在2分鐘時(shí)間內(nèi)流量大小下跌30%以上,在2分鐘內(nèi)后又迅速恢復(fù))

急跌和暴漲一般會(huì)有如下參考系:

上一個(gè)時(shí)間窗口:環(huán)比上一個(gè)時(shí)間段
上一天該時(shí)間段的窗口:環(huán)比昨天
上一周該時(shí)間段的窗口:環(huán)比上周
我們這里以第一種情況來(lái)作為case討論,計(jì)算流量infow數(shù)據(jù)的變動(dòng)率(也可以換成QPS等流量)。

3.1 首先定義一個(gè)計(jì)算窗口
例如我們定一個(gè)1分鐘的窗口,統(tǒng)計(jì)該分鐘內(nèi)的流量大小,以下是一個(gè)5分鐘區(qū)間統(tǒng)計(jì):

* | select sum(inflow)/(max(__time__)-min(__time__)) as inflow , __time__-__time__%60 as window_time from log group by window_time order by window_time limit 15

從結(jié)果分布上看,每個(gè)窗口內(nèi)的平均流量 sum(inflow)/(max(time)-min(time)) 應(yīng)該是均勻的:

3.2 計(jì)算窗口內(nèi)的差異值(最大值變化率)
這里我們會(huì)用到子查詢,我們寫一個(gè)查詢,從上述結(jié)果中計(jì)算最大值 或 最小值 與平均值的變化率(這里的max_ratio),例如如下計(jì)算結(jié)果max_ratio 為 1.02。我們可以定義一個(gè)告警規(guī)則,如果max_ratio > 1.5 (變化率超過(guò)50%)就告警。

* | select max(inflow)/avg(inflow) as max_ratio from (select sum(inflow)/(max(__time__)-min(__time__)) as inflow , __time__-__time__%60 as window_time from log group by window_time order by window_time limit 15)

3.3 計(jì)算窗口內(nèi)的差異值(最近值變化率)
在一些場(chǎng)景中我們更關(guān)注最新的數(shù)值是否有波動(dòng)(是否已經(jīng)恢復(fù)),那可以通過(guò)max_by方法獲取最大windows_time中的流量來(lái)進(jìn)行判斷,這里計(jì)算的最近值為lastest_ratio=0.97。

注意:

這里的max_by函數(shù)計(jì)算結(jié)果為字符類型,我們需要強(qiáng)轉(zhuǎn)成數(shù)字類型
如果要計(jì)算變化相對(duì)率,可以用(1.0-max_by(inflow, window_time)/1.0/avg(inflow)) as lastest_ratio 代替

* | select max_by(inflow, window_time)/1.0/avg(inflow) as lastest_ratio from (select sum(inflow)/(max(__time__)-min(__time__)) as inflow , __time__-__time__%60 as window_time from log group by window_time order by window_time limit 15)

總結(jié)
日志服務(wù)查詢分析能力是完整SQL92,支持各種數(shù)理統(tǒng)計(jì)與計(jì)算等,只要會(huì)用SQL都能進(jìn)行快速分析,歡迎嘗試!

總結(jié)

以上是生活随笔為你收集整理的打通钉钉+WebHook:日志服务告警升级的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。