如果加工規則中涉及其他Logstore資源的加載,則有可能會產生資源的加載或刷新錯誤。本文檔主要介紹從其他Logstore獲取數據的常見錯誤以及排查處理方法。
在成功讀取源Logstore數據后,加工引擎開始對源Logstore的日志事件進行加工。如果加工規則中涉及OSS、RDS、Logstore等外聯資源的加載,則也有可能會產生資源的加載或刷新錯誤。
錯誤影響:
在日志事件加工階段,與加工規則沖突的日志事件會引發報錯,并被丟棄,加工后的輸出結果中將不包含這些日志事件。
加工任務會丟棄與加工規則沖突的日志事件,并繼續加工其他的日志事件,不會重試。
如果多條事件分裂自同一條事件,只要其中有一條事件出錯被丟棄,所有和該事件分裂自同一條源事件的其他事件也都會被丟棄。
說明在輸出之前,這些事件都是以樹結構互相關聯,并不是互相獨立。
缺少必填的參數
加工規則
e_table_map(res_log_logstore_pull(endpoint="cn-shenzhen.log.aliyuncs.com",ak_id="xxx", ak_secret="xxx",project="etl-test-shenzhen", fields=["__source__"]),field="processid",output_fields=["__source__"])
錯誤日志
error when calling : res_log_logstore_pull\nDetail: res_log_logstore_pull() missing 1 required positional argument: 'logstore'", "requestId": "
排查方法
缺少了必要的參數
logstore
,出現missing 1 required positional argument
錯誤信息的時候,表示缺少了必要的參數,請排查是否出現參數未填寫的報錯。解決方案
重新配置編排語法,配置缺少的參數。
設置主鍵維護但未設置delete_data參數
加工規則
e_table_map(res_log_logstore_pull(endpoint="xx",ak_id="xxx", ak_secret="xxx",project="etl-test-shenzhen",logstore="rds-mysql-test", fields=["__source__"],primary_keys="cid"),field="processid",output_fields=["__source__"])
錯誤日志
when setting parameter primart_keys,need set delete_data\nDetail: None
排查方法
出現這個錯誤是因為當設置主鍵維護參數
primary_keys
的時候,delete_data
參數沒有設置。primary_keys
參數和delete_data
參數必須同時進行配置。解決方案
primary_keys和delete_data參數都要進行配置,配置后重新啟動數據加工服務。
目標Logstore不存在
加工規則
e_table_map(res_log_logstore_pull(endpoint="xx",ak_id="xxx", ak_secret="xxx",project="etl-test-shenzhen",logstore="pull_logstore_test9900881", fields=["__source__"],primary_keys="cid"),field="processid",output_fields=["__source__"])
錯誤日志
message: fetch data get errors:{"errorCode": "LogStoreNotExist", "errorMessage": "logstore pull_logstore_test9900881 does not exist", "requestId": "5D7227AA269948500404B777"},retrytimes=2
排查方法
當配置的目標Logstore不存在的時候就會出現上述錯誤日志。
解決方案
檢查目標Logstore 是否存在,重新配置編排語法,填入正確的Logstore的名稱。
Ak配置錯誤
加工規則
e_table_map(res_log_logstore_pull( endpoint="cn-hangzhou.log.aliyuncs.com", ak_id="xx", ak_secret="xx", project="sls-test", logstore="pull_logstore_test", fields=[("id", "new_id"), "name", "status"], from_time="begin"), "name", "new_id")
錯誤日志
message: fetch data get errors:{"errorCode": "SignatureNotMatch", "errorMessage": "signature gdaL/nWSRtve5FOB+QqHO/sBdnA= not match", "requestId": "5D760261ED35D40AA4AB1953"},retrytimes=1
message: fetch data get errors:{"errorCode": "Unauthorized", "errorMessage": "AccessKeyId not found: xx", "requestId": "5D7602A01808F9EAA6EB0E2B"},retrytimes=3
排查方法
出現上述的錯誤時,請檢查編排語法中ak參數是否正確,如果ak_secret和ak_id值不匹配,或者ak_id不存在就會報上面的錯誤。
解決方案
重新配置正確的ak參數并且重新啟動數據加工任務。
Ak權限不足
加工規則
e_table_map(res_log_logstore_pull( endpoint="cn-hangzhou.log.aliyuncs.com", ak_id="xx", ak_secret="xx", project="sls-test", logstore="pull_logstore_test", fields=[("id", "new_id"), "name", "status"], from_time="begin"), "name", "new_id")
錯誤日志
message: fetch data get errors:{"errorCode": "Unauthorized", "errorMessage": "denied by sts or ram, action: log:ListShards, resource: acs:log:cn-hangzhou:1654218965343050:...}
排查方法
出現
Unauthorized
的錯誤信息一般情況是權限不足,可以檢查一下配置的ak是否具有目標Logstore的讀寫權限。解決方案
檢查ak權限,如果權限不足,請開通所需要的權限。
Endpoint填寫錯誤
加工規則
e_table_map(res_log_logstore_pull( endpoint="xxx", ak_id="xx", ak_secret="xx", project="sls-test", logstore="pull_logstore_test", fields=[("id", "new_id"), "name", "status"], from_time="begin"), "name", "new_id")
錯誤日志
message: fetch data get errors:{"errorCode": "ProjectNotExist", "errorMessage": "The Project does not exist : ali-sls-etl-regression-test", "requestId": "5D760AB12ECD0722AA1DD681"}
message: fetch data get errors:{"errorCode": "LogRequestError", "errorMessage": "HTTPConnectionPool(host='ali-sls-etl-regression-test.xx', port=80): Max retries exceeded with url: /logstores/pull_logstore_test/shards (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f968a298ef0>: Failed to establish a new connection: [Errno -2] Name or service not known))
排查方法
出現
ProjectNotExist
或者LogRequestError
錯誤,一般情況下是Endpoint填寫錯誤,導致鏈接錯誤,或者鏈接上了但是發現Endpoint下沒有需要的Project 。解決方案
Endpoint配置正確的服務入口。請參見服務入口。