目標(biāo)Logstore輸出錯(cuò)誤的原因和排查方法
本文檔為您介紹數(shù)據(jù)加工服務(wù)進(jìn)行數(shù)據(jù)加工后,將加工結(jié)果寫入目標(biāo)Logstore產(chǎn)生錯(cuò)誤的常見(jiàn)原因和排查處理方法。
工作原理
日志事件被加工完之后,會(huì)被輸出到預(yù)先配置好的目標(biāo)Logstore中。LOG DSL引擎每次讀取一個(gè)批次的源日志(從1條到近萬(wàn)條不等),數(shù)據(jù)加工后,并不是加工一條日志就輸出一條,而是會(huì)先將加工好的數(shù)據(jù)存放在一個(gè)緩存池中,等源數(shù)據(jù)批次處理完,再一起輸出。
該環(huán)節(jié)產(chǎn)生錯(cuò)誤主要是由于對(duì)目標(biāo)Logstore的訪問(wèn)異常。可能的異常原因?yàn)椋?
目標(biāo)Logstore信息配置錯(cuò)誤。
目標(biāo)Logstore信息發(fā)生變化。
網(wǎng)絡(luò)錯(cuò)誤。
錯(cuò)誤影響:
在輸出到目標(biāo)Logstore產(chǎn)生錯(cuò)誤時(shí),加工任務(wù)會(huì)一直重試,直到重試成功或被手動(dòng)停止。如果重試成功,加工任務(wù)會(huì)繼續(xù)正常工作,不會(huì)產(chǎn)生日志的丟失和冗余。
如果已經(jīng)輸出了部分?jǐn)?shù)據(jù)后才報(bào)錯(cuò),例如配置了兩個(gè)輸出目標(biāo),一個(gè)目標(biāo)成功,另外一個(gè)目標(biāo)失敗。會(huì)保存斷點(diǎn)并一直重試,重試成功后,不會(huì)有數(shù)據(jù)的丟失與冗余。如果這時(shí)停止加工任務(wù)再重新啟動(dòng)時(shí),會(huì)從斷點(diǎn)繼續(xù),不會(huì)有數(shù)據(jù)丟失,但可能會(huì)有冗余的數(shù)據(jù)。
常見(jiàn)錯(cuò)誤排查
目標(biāo)Logstore配置了非法的AccessKey。
非法的AccessKey主要分為兩種:非法的AccessKeyId和非法的AccessKeySecret。
錯(cuò)誤日志:
#非法的AccessKeyId { "errorCode": "Unauthorized", "errorMessage": "AccessKeyId not found: LTAIL3gUus8A****" } #非法的AccessKeySecret { "errorCode": "SignatureNotMatch", "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWt****= not match" }
排查方法:
檢查任務(wù)配置項(xiàng),查看對(duì)應(yīng)的目標(biāo)Logstore的AccessKeyID和AccessKeySecret是否存在且正確。
目標(biāo)Project不存在
錯(cuò)誤日志:
{ "errorCode": "ProjectNotExist", "errorMessage": "The Project does not exist : your_project_name" }
原因分析:
錯(cuò)誤日志提示
Project does not exist
有三種可能的原因:任務(wù)配置項(xiàng)中的目標(biāo)Project名稱輸入錯(cuò)誤。
目標(biāo)Project名稱輸入正確,但是在加工任務(wù)過(guò)程中,對(duì)應(yīng)的Project被刪除。
排查方法:
檢查任務(wù)配置項(xiàng)中的目標(biāo)Project名稱是否輸入有誤。
檢查目標(biāo)Project是否被刪除。
輸出目標(biāo)不存在。
加工規(guī)則樣例:
e_coutput("target1")
錯(cuò)誤日志:
{ "errorMessage": "transform_data: output target target1 is not found in configurations" }
原因分析:
上述LOG DSL規(guī)則將日志事件輸出到
target1
中,而錯(cuò)誤日志提示target1 is not found in configurations
,說(shuō)明該加工規(guī)則的配置中并沒(méi)有定義和target1
關(guān)聯(lián)的目標(biāo)Project和Logstore。排查方法:
檢查L(zhǎng)OG DSL規(guī)則的配置項(xiàng),確保配置項(xiàng)中定義了加工規(guī)則中涉及到的所有存儲(chǔ)目標(biāo)。
目標(biāo)Logstore信息發(fā)生變化
原因分析:
用戶配置了正確的目標(biāo)Logstore信息,可能也已經(jīng)進(jìn)行了部分加工任務(wù)。但是在數(shù)據(jù)加工的過(guò)程中,目標(biāo)Logstore信息發(fā)生了變化,導(dǎo)致原有的配置信息無(wú)法訪問(wèn)目標(biāo)Logstore。
錯(cuò)誤日志:
目標(biāo)Logstore信息發(fā)生變化有主要是如下兩種情況:
目標(biāo)Logstore被刪除。
{ "errorMessage": "Logstore [logstore_name] does not exist." }
目標(biāo)Logstore的AccessKey信息發(fā)生變化。
#非法的AccessKeyId { "errorCode": "Unauthorized", "errorMessage": "AccessKeyId not found: LTAIL3gUus8A****" } #非法的AccessKeySecret { "errorCode": "SignatureNotMatch", "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWt****= not match" }
排查方法:
檢查目標(biāo)Logstore是否被刪除。
檢查目標(biāo)Logstore的AccessKey信息是否發(fā)生改變。
網(wǎng)絡(luò)錯(cuò)誤。
錯(cuò)誤日志:
{ "errorCode": "LogRequestError", "errorMessage": "HTTPConnectionPool(host='your_host', port=80): Max retries exceeded with url: your_url (Caused by NewConnectionError: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'" }
排查方法:
檢查網(wǎng)絡(luò)連接是否正常。