全部產品
Search
文件中心

Simple Log Service:目標Logstore輸出錯誤的原因和排查方法

更新時間:Jun 30, 2024

本文檔為您介紹資料加工服務進行資料加工後,將加工結果寫入目標Logstore產生錯誤的常見原因和排查處理方法。

工作原理

日誌事件被加工完之後,會被輸出到預先配置好的目標Logstore中。LOG DSL引擎每次讀取一個批次的源日誌(從1條到近萬條不等),資料加工後,並不是加工一條日誌就輸出一條,而是會先將加工好的資料存放在一個緩衝池中,等來源資料批次處理完,再一起輸出。目標Logstore輸出錯誤

該環節產生錯誤主要是由於對目標Logstore的訪問異常。可能的異常原因為:

  • 目標Logstore資訊配置錯誤。

  • 目標Logstore資訊發生變化。

  • 網路錯誤。

錯誤影響:

  • 在輸出到目標Logstore產生錯誤時,加工任務會一直重試,直到重試成功或被手動停止。如果重試成功,加工任務會繼續正常工作,不會產生日誌的丟失和冗餘。

  • 如果已經輸出了部分資料後才報錯,例如配置了兩個輸出目標,一個目標成功,另外一個目標失敗。會儲存斷點並一直重試,重試成功後,不會有資料的丟失與冗餘。如果這時停止加工任務再重新啟動時,會從斷點繼續,不會有資料丟失,但可能會有冗餘的資料。

常見錯誤排查

目標Logstore配置了非法的AccessKey。

非法的AccessKey主要分為兩種:非法的AccessKeyId和非法的AccessKeySecret。

  • 錯誤記錄檔:

    #非法的AccessKeyId
    {
      "errorCode": "Unauthorized", 
      "errorMessage": "AccessKeyId not found: LTAIL3gUus8A****"
    }
    #非法的AccessKeySecret
    { 
      "errorCode": "SignatureNotMatch", 
      "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWt****= not match"
    }
  • 排查方法:

    檢查任務配置項,查看對應的目標Logstore的AccessKeyID和AccessKeySecret是否存在且正確。

目標Project不存在

  • 錯誤記錄檔:

    {
      "errorCode": "ProjectNotExist", 
      "errorMessage": "The Project does not exist : your_project_name"
    }
  • 原因分析:

    錯誤記錄檔提示Project does not exist有三種可能的原因:

    • 任務配置項中的目標Project名稱輸入錯誤。

    • 目標Project名稱輸入正確,但是在加工任務過程中,對應的Project被刪除。

  • 排查方法:

    • 檢查任務配置項中的目標Project名稱是否輸入有誤。

    • 檢查目標Project是否被刪除。

  • 輸出目標不存在。

    加工規則範例:

    e_coutput("target1")
    • 錯誤記錄檔:

      {
        "errorMessage": "transform_data: output target target1 is not found in configurations"
      }
    • 原因分析:

      上述LOG DSL規則將日誌事件輸出到target1中,而錯誤記錄檔提示target1 is not found in configurations,說明該加工規則的配置中並沒有定義和target1關聯的目標Project和Logstore。

    • 排查方法:

      檢查LOG DSL規則的配置項,確保配置項中定義了加工規則中涉及到的所有儲存目標。

目標Logstore資訊發生變化

  • 原因分析:

    使用者配置了正確的目標Logstore資訊,可能也已經進行了部分加工任務。但是在資料加工的過程中,目標Logstore資訊發生了變化,導致原有的配置資訊無法訪問目標Logstore。

  • 錯誤記錄檔:

    目標Logstore資訊發生變化有主要是如下兩種情況:

    • 目標Logstore被刪除。

      {
        "errorMessage": "Logstore [logstore_name] does not exist."
      }
    • 目標Logstore的AccessKey資訊發生變化。

      #非法的AccessKeyId
      {
        "errorCode": "Unauthorized", 
        "errorMessage": "AccessKeyId not found: LTAIL3gUus8A****"
      }
      #非法的AccessKeySecret
      { 
        "errorCode": "SignatureNotMatch", 
        "errorMessage": "signature uJfAJbc0ji04gb+cXhh0qWt****= not match"
      }
  • 排查方法:

    • 檢查目標Logstore是否被刪除。

    • 檢查目標Logstore的AccessKey資訊是否發生改變。

  • 網路錯誤。

    • 錯誤記錄檔:

      {
        "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'"
      }
    • 排查方法:

      檢查網路連接是否正常。