DataX新增告警功能

2021-10-06 09:34:17 字數 1585 閱讀 7619

公司的datax已經用了2年多了,效能以及基本功能上沒有太大問題。但是有乙個問題一直困擾著我,就是datax的錯誤告警。datax的日誌問題,一直令人頭疼。隨著job的逐漸增多,乙個排程程式或者指令碼列印出來的日誌實在太多,假如中途有哪個job執行報錯,根本無法排查,雖然datax自身會記錄每個job執行的日誌,在log目錄下,命名規則:指令碼名稱+執行時間,但是檔案數目過多排查起來還是挺困難的。

有了需求,就可以開始設計,給datax新增告警功能有兩種辦法,修改原始碼捕獲日誌,當時為了不侵入原始碼,採用了捕獲日誌的方式。

修改datax啟動類,即bin/datax.py,將datax.py列印出來的日誌放入pipe(管道)快取中,根據最後執行返回的code判斷任務成功還是失敗,失敗則需要呼叫告警功能。具體修改後的**如下:

if __name__ ==

"__main__":)

parser = getoptionparser(

) options, args = parser.parse_args(sys.ar**[1:

])if options.reader is

notnone

and options.writer is

notnone

: generatejobconfigtemplate(options.reader,options.writer)

sys.exit(ret_state[

'ok'])

iflen

(args)!=1

: parser.print_help(

) sys.exit(ret_state[

'fail'])

startcommand = buildstartcommand(options, args)

# print startcommand

child_process = subprocess.popen(startcommand, shell=

true

,stdout=subprocess.pipe,stderr=subprocess.pipe)

register_signal(

) start=time.time(

) errmsg=

while child_process.poll()==

none

: line=child_process.stdout.readline(

)print

(line)

,# 使用,是為了使列印出來的日誌不換行

if time.time(

)- start >=

1800

:# 超時時間30分鐘

# 可以新增一些超時的資訊

break

if child_process.returncode !=0:

# 執行具體的告警操作,可以從啟動引數中獲取到具體的指令碼名稱

# 解析errmsg或者直接輸出

sys.exit(child_process.returncode)

更新日誌 BugHD 新增郵件告警功能

最近 bughd 又新增了一些功能,包括郵件告警 issue 分享 issue 備註等,同時也做了效能優化。希望能夠幫助你更高效地收集解決應用崩潰。除了 webhook 設定 之外,我們在 專案設定 訊息設定 頁面增加了郵件設定,你可以設定崩潰時間 崩潰次數。當崩潰問題超過設定的數值時,會自動向你的...

資料遷移工具Sqoop和DataX功能比較

最近由於專案需要,對apache sqoop和taobao datax工具進行了調研,這裡是對二者功能的初步梳理,不會涉及技術細節和使用方法,留作日後選型參考。sqoop是apache下的頂級專案,用來將hadoop和關係型資料庫中的資料相互轉移,可以將乙個關係型資料庫 例如 mysql,oracl...

iContact AE 新增功能

還是春節前翻譯了一下配置介面,後來想改一下聯絡人列表,一直沒時間改。上週出差一周都有點兒咳嗽,回來之後也更嚴重了,所以過節也沒想出差去玩,明天晚上多吃了點兒藥,今天上午好點兒了,沒事兒幹就把 整出來好好看了看,改了一下,加了個配置項來支援。原來 號碼放在聯絡人姓名的下邊,佔一空行,而後面空著很大空間...