MaxCompute作业日常监控与运维实践
簡介: MaxCompute作業(yè)日常監(jiān)控與運(yùn)維實(shí)踐
監(jiān)控項(xiàng)目作業(yè)超時(shí)運(yùn)行
案例一
專用于業(yè)務(wù)團(tuán)隊(duì)取數(shù)的project_A ,基本都是手動(dòng)跑SQL查詢,每個(gè)作業(yè)執(zhí)行基本不會(huì)很長時(shí)間,由于目前使用的是包年包月計(jì)算資源,為了防止單個(gè)作業(yè)長期占用資源,需要對作業(yè)進(jìn)行超時(shí)監(jiān)控。假設(shè)對于project_A的SQL作業(yè),只要某個(gè)作業(yè)運(yùn)行時(shí)長(等待時(shí)間+真正運(yùn)行時(shí)間)超過15分鐘,則視為異常用時(shí)作業(yè),需介入檢查。
?
- 監(jiān)控配置
1. 登錄[云監(jiān)控控制臺(tái)](https://cloudmonitor.console.aliyun.com/)。
2. 在左側(cè)導(dǎo)航欄,單擊報(bào)警服務(wù) > 報(bào)警規(guī)則。
3. 在報(bào)警規(guī)則頁面的閾值報(bào)警頁簽,單擊創(chuàng)建報(bào)警規(guī)則。
4. 單擊創(chuàng)建報(bào)警規(guī)則。
5. 在創(chuàng)建報(bào)警規(guī)則頁面,基于場景配置報(bào)警規(guī)則相關(guān)信息,詳細(xì)參數(shù)配置請參見[創(chuàng)建閾值報(bào)警規(guī)則](https://help.aliyun.com/document_detail/103072.html)。配置報(bào)警聯(lián)系人詳情請參見[創(chuàng)建報(bào)警聯(lián)系人或報(bào)警聯(lián)系組](https://help.aliyun.com/document_detail/104004.html)。
?
- 資源范圍:選擇項(xiàng)目名稱,并在下方"項(xiàng)目名稱"中指定需要監(jiān)控的項(xiàng)目project_A 。
- 規(guī)則描述:即選擇監(jiān)控指標(biāo),如此案例我們針對項(xiàng)目下所有作業(yè) 監(jiān)控,則選擇作業(yè)運(yùn)行時(shí)長類型。最大值大于等于15*60=900秒,即配置作業(yè)運(yùn)行時(shí)長超過15分鐘則觸發(fā)告警,注意單位為'秒'。
- 通知方式:可以選擇短信+郵件+釘釘機(jī)器人 (Warning),以便快速從各個(gè)通道獲取告警,另外告警接收人要注意一定要配置好具體人員,避免接收的人員不是負(fù)責(zé)此業(yè)務(wù)的人員。
?
- 告警處理
-
- 收到單個(gè)job的超時(shí)告警,考慮是否單個(gè)作業(yè)本身問題,可以通過[MaxCompute管家的作業(yè)運(yùn)維管理](https://help.aliyun.com/document_detail/198711.html?spm=a2c4g.11186623.6.1026.25656a2coeGp9Z)-高級(jí)查詢單獨(dú)搜索這個(gè)instance id:
? ? ?
在結(jié)果列表里,可以看到作業(yè)的基本信息,可以點(diǎn)擊'Logview'查看詳情,如是否是長尾、是否是作業(yè)查詢量本身就非常大等,經(jīng)過判斷后,可以考慮是否讓job繼續(xù)運(yùn)行,若不能繼續(xù)運(yùn)行則kill掉。若一直是等待資源狀態(tài),那么可以到“作業(yè)快照”中查看當(dāng)前時(shí)刻,對應(yīng)資源組的作業(yè)負(fù)載情況,是否是有其他項(xiàng)目作業(yè)占滿長期占滿資源等。
?
-
- 收到多個(gè)job超時(shí)告警,或者持續(xù)單個(gè)不同的job超時(shí)告警,可以考慮是否是資源不足,大量作業(yè)在等待資源,可以在MaxCompute管家作業(yè)快照里查看對應(yīng)資源組此刻正在運(yùn)行作業(yè)負(fù)載情況,人工介入,該kill作業(yè)的kull作業(yè),該擴(kuò)容的擴(kuò)容等。
案例二
生產(chǎn)項(xiàng)目project_B ,有跑MaxCompute的SQL、spark等類型任務(wù),所有生產(chǎn)任務(wù)都比較重要,正常情況下再大的任務(wù)執(zhí)行時(shí)間(等待時(shí)間+真正運(yùn)行時(shí)間)不會(huì)超過1個(gè)小時(shí),考慮到spark有流式作業(yè)存在,一個(gè)job拉起會(huì)很長時(shí)間也是正常現(xiàn)象,因此對于本生產(chǎn)項(xiàng)目,可以對SQL類型作業(yè)進(jìn)行監(jiān)控超時(shí)情況,以便盡快介入檢查。
- 監(jiān)控配置
1. 登錄[云監(jiān)控控制臺(tái)](https://cloudmonitor.console.aliyun.com/)。
2. 在左側(cè)導(dǎo)航欄,單擊報(bào)警服務(wù) > 報(bào)警規(guī)則。
3. 在報(bào)警規(guī)則頁面的閾值報(bào)警頁簽,單擊創(chuàng)建報(bào)警規(guī)則。
4. 單擊創(chuàng)建報(bào)警規(guī)則。
5. 在創(chuàng)建報(bào)警規(guī)則頁面,基于場景配置報(bào)警規(guī)則相關(guān)信息,詳細(xì)參數(shù)配置請參見[創(chuàng)建閾值報(bào)警規(guī)則](https://help.aliyun.com/document_detail/103072.html)。配置報(bào)警聯(lián)系人詳情請參見[創(chuàng)建報(bào)警聯(lián)系人或報(bào)警聯(lián)系組](https://help.aliyun.com/document_detail/104004.html)。
- 資源范圍:選擇項(xiàng)目名稱,并在下方"項(xiàng)目名稱"中指定需要監(jiān)控的項(xiàng)目project_B 。
- 規(guī)則描述:即選擇監(jiān)控指標(biāo),如此案例我們針對項(xiàng)目下所有作業(yè) 監(jiān)控,則選擇作業(yè)運(yùn)行時(shí)長類型。最大值大于等于60*60=3600秒,即配置作業(yè)運(yùn)行時(shí)長超過1個(gè)小時(shí)則觸發(fā)告警,注意單位為'秒'。
- 通知方式:可以選擇短信+郵件+釘釘機(jī)器人 (Warning),以便快速從各個(gè)通道獲取告警,另外告警接收人要注意一定要配置好具體人員,避免接收的人員不是負(fù)責(zé)此業(yè)務(wù)的人員。
?
- 告警處理
- 收到告警后,您可以通過[MaxCompute管家的作業(yè)運(yùn)維管理](https://help.aliyun.com/document_detail/198711.html?spm=a2c4g.11186623.6.1026.25656a2coeGp9Z)-高級(jí)查詢單獨(dú)搜索對應(yīng)的job,在結(jié)果列表中可先判斷是否還是等待資源狀態(tài),若是,則可以通過作業(yè)快照查看此刻對應(yīng)資源組作業(yè)運(yùn)行情況是否資源緊張;若不是,可以點(diǎn)擊Logview查看詳細(xì)信息,是否長尾等。判斷作業(yè)的合理性,決定是否繼續(xù)運(yùn)行或者kill掉。
?
若您是通過DataWorks使用MaxCompute,也可以通過DataWorks的[智能監(jiān)控](https://help.aliyun.com/document_detail/138162.html?spm=a2c4g.11186623.6.1074.f4352d21zjMF73)配置自定義監(jiān)控規(guī)則進(jìn)行作業(yè)超時(shí)監(jiān)控。DataWorks上還可以針對具體調(diào)度節(jié)點(diǎn)進(jìn)行監(jiān)控,監(jiān)控的指標(biāo)也更加豐富。
?
需要注意的是,如果作業(yè)一直為運(yùn)行狀態(tài),觸發(fā)告警的job如果一直處在running狀態(tài),那么只要滿足告警周期規(guī)則,會(huì)持續(xù)發(fā)出告警,直到j(luò)ob運(yùn)行完成(成功或失敗)。如果遇到需要放行繼續(xù)運(yùn)行的job,告警周期又短,可能會(huì)頻繁收到告警,因此在配置規(guī)則時(shí)告警周期需要合理配置。
?
查看某時(shí)段發(fā)起的作業(yè)執(zhí)行情況
日常數(shù)據(jù)開發(fā)過程中,需要對自己負(fù)責(zé)的作業(yè)進(jìn)行運(yùn)維管理,如查看當(dāng)天發(fā)起的作業(yè)執(zhí)行情況,有哪些作業(yè)失敗要查看失敗原因等。
通過[MaxCompute管家的作業(yè)運(yùn)維管理](https://help.aliyun.com/document_detail/198711.html?spm=a2c4g.11186623.6.1026.25656a2coeGp9Z),可以查看,如下圖:
選擇需要查看具體發(fā)起作業(yè)的時(shí)間段,選擇狀態(tài),cancelled即為失敗狀態(tài),點(diǎn)開高級(jí)查詢,輸入提交人(目前只支持精準(zhǔn)匹配,需要帶上`ALIYUN$`或`RAM$`前綴),進(jìn)行搜索。在結(jié)果列表里可以快速獲取一些基礎(chǔ)信息,但是要查看具體失敗原因,還需要點(diǎn)擊Logview,通過Logview日志查看詳情,包括查看對應(yīng)跑的什么腳本、返回的失敗信息等。
?
需要注意的是,如果是通過DataWorks發(fā)起的作業(yè),且項(xiàng)目的“MaxCompute訪問者身份”選擇的是阿里云主賬號(hào)的話,那么項(xiàng)目的所有提交人都會(huì)是主賬號(hào),因此就不適合通過“提交人”進(jìn)行過濾,只能按其他粒度進(jìn)行過濾。
?
查看某時(shí)刻包年包月資源組作業(yè)負(fù)載
作業(yè)資源運(yùn)維人員,管理計(jì)算資源的分配,如收到開發(fā)人員反饋當(dāng)前大量作業(yè)等待資源,通過MaxCompute管家概覽頁的“CU資源使用趨勢”查看對應(yīng)資源組的負(fù)載線圖,點(diǎn)擊具體時(shí)間點(diǎn)查看對應(yīng)時(shí)刻作業(yè)快照:
- 如果對應(yīng)資源組是完全獨(dú)享型(所有自定義配額組預(yù)留CU都是最大值=最小值),選擇具體的資源組進(jìn)行查看,這樣更有針對性。點(diǎn)擊曲線圖上對應(yīng)時(shí)刻,進(jìn)入此刻的作業(yè)快照列表,查看當(dāng)前運(yùn)行的作業(yè)資源占用情況。在結(jié)果列表中,再對CUP使用占比進(jìn)行從高到低排序,看是否是某個(gè)或某幾個(gè)作業(yè)長時(shí)間占用大量資源,針對性對這些作業(yè)進(jìn)行處理。
- 如果資源組是共享型(自定義配額組預(yù)留CU最大值>最小值),那么可以直接默認(rèn)查看所有資源組的CU資源使用趨勢,這樣進(jìn)入快照列表中看所有資源的作業(yè)列表,對CUP使用占比進(jìn)行從高到低排序,可以看到具體哪些作業(yè)在哪個(gè)資源組搶占了大量資源,進(jìn)而針對性的處理作業(yè),或者調(diào)整資源組,比如業(yè)務(wù)優(yōu)先級(jí)低的項(xiàng)目所在資源組最大值可以分配小一些,以免搶占高優(yōu)先級(jí)項(xiàng)目所屬資源組的資源。
?
針對資源組的分配,可以參考[包年包月資源隔離](https://help.aliyun.com/document_detail/197810.html?spm=a2c4g.11186623.6.1153.11fe32c0myBda4)、[包年包月資源分時(shí)配額](https://help.aliyun.com/document_detail/194065.html?spm=a2c4g.11186623.6.1152.542b274biJDwSm)。
?
查看某作業(yè)執(zhí)行相關(guān)信息
在做費(fèi)用審計(jì)、資源審計(jì)等,獲取到了某個(gè)job的instance id,需要找到提交人或者查看具體是執(zhí)行了什么腳本等。
?
案例:如使用按量計(jì)費(fèi)資源,對SQL進(jìn)行費(fèi)用審計(jì),發(fā)現(xiàn)有某個(gè)或某幾個(gè)作業(yè)費(fèi)用異常,需要知道是誰執(zhí)行的,執(zhí)行的sql是什么。
1. 通過[MaxCompute管家的作業(yè)運(yùn)維管理](https://help.aliyun.com/document_detail/198711.html?spm=a2c4g.11186623.6.1026.25656a2coeGp9Z)-高級(jí)查詢單獨(dú)搜索對應(yīng)的job,因?yàn)槭荢QL消費(fèi)審計(jì),作業(yè)一定是成功狀態(tài),所以選擇terminated狀態(tài)。
2. 在結(jié)果列表中,查看信息:
- ?若提交人為子賬號(hào),則可直接找對應(yīng)子賬號(hào)負(fù)責(zé)人進(jìn)行自檢。
- 若提交人為主賬號(hào)且有DataWorks節(jié)點(diǎn)ID非空,則大概可以判斷是通過DataWorks調(diào)度發(fā)起的生產(chǎn)節(jié)點(diǎn),可以到DataWorks 運(yùn)維中心[查看周期任務(wù)](https://help.aliyun.com/document_detail/137787.html?spm=a2c4g.11174283.6.1064.1be52b65CcPWWn)搜索節(jié)點(diǎn),找到對應(yīng)“責(zé)任人”,讓責(zé)任人自檢。
- 若提交人為主賬號(hào),且DataWorks節(jié)點(diǎn)ID為空,此類比較難以判斷責(zé)任人,可以通過點(diǎn)擊查看Logview,獲取具體的query,線下尋找跑過此query的提交人。需要注意的是,Logview一般保留時(shí)長為7天,超過7天,可以嘗試通過[information schema->TASKS_HISTORY](https://help.aliyun.com/document_detail/135433.html?spm=a2c4g.11186623.6.1032.7ea65856ZU3E4x#title-r2c-tak-zfi)獲取作業(yè)信息。
- 若作業(yè)是最近7天運(yùn)行的,作業(yè)責(zé)任人自檢時(shí),也可以直接在結(jié)果列表里訪問Logview進(jìn)行查看。
原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的MaxCompute作业日常监控与运维实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一种通用整形数组压缩方法
- 下一篇: 好代码实践:基于Redis的轻量级分布式