管理資料映射異常

在IBM Cloud Logs中,當透過優先洞察資料管道攝取的資料偵測到不同日誌傳送的相同欄位時,您可能會遇到數據映射異常不同類型的記錄。

例如,在從應用程式汲取的日誌中,您會看到類型為字串的欄位,而在不同應用程式所產生的另一個日誌中,相同欄位會插入為數字或不同類型。 這會導致對映異常狀況。

如果新日誌欄位的欄位名稱先前由IBM Cloud Logs提取,但具有不同的值類型,則可能會發生對應異常。 當IBM Cloud Logs為攝取的資料建立索引時,它會嘗試將欄位對應到下列類型之一:

  • String
  • Numeric
  • Object
  • Array

例如,如果欄位 user 已被攝取,並且第一個接收到的值為“username”,IBM Cloud Logs將為欄位 user 建立類型為 string 的索引:

"user": “username”`

如果稍後攝取新日誌,其中也有一個名為「user」的字段,其格式如下:

"user": {
  “email”: “username@yourcompany.com”,
  ”login”: “username”`
}

在IBM Cloud Logs中建立映射異常。 任何 優先洞察 尋找名為 user 欄位的搜尋,都會預期有 string 值,這是基於第一個擷取 user 欄位的日誌。

由於映射異常,任何 優先洞察 搜尋 userarray 類型 (user.emailuser.login) 將不會傳回任何結果。

檢查對映異常狀況的數目

若要檢查對映異常狀況的數目,請在導覽列中按一下 使用情形 圖示 「使用情形」圖示 > 對映統計資料。 您可以在 對映異常狀況-今天的計數 區段中取得每日對映異常狀況總數。

識別具有對映異常狀況的欄位

若要識別導致對映異常狀況的欄位,您可以執行下列查詢:

_exists_:"coralogix.failed_reason"

搜尋包含映射異常的數據

當您在優先洞察中搜尋時,包含映射異常的日誌記錄只能使用自由文字查詢進行搜尋。

如果您有與實例關聯的資料桶,您可以透過所有日誌搜尋日誌。 您可以使用自由文字查詢或使用鍵:值對進行搜尋。

警示

警報不受資料映射異常的影響,並將繼續正常觸發。

修正具有對映異常狀況的欄位

如果要修正對映異常狀況,請識別報告對映異常狀況的欄位,以及傳送相同欄位且具有不同類型的應用程式。 然後,嘗試在來源修正問題。

若要識別映射異常,請完成以下步驟:

  1. 檢查IBM Cloud Logs UI 中日誌計數旁邊的圖示:

    映射例外圖示
    映射例外圖示

    將滑鼠停留在該圖示上將顯示所選時間範圍內查詢結果中存在映射異常的日誌數量。

  2. 若要識別未正確索引的特定日誌,請啟用 Show Mapping errors 選項:

    選擇如何顯示映射錯誤。 按一下“設定”,然後按一下“顯示對應錯誤”。
    選擇如何顯示映射錯誤

  3. 啟用此選項後,刷新瀏覽器。

    存在映射異常且未編制索引的欄位上將顯示感嘆號。

    標記具有映射異常的欄位
    標記具有映射異常的欄位

    快速識別哪些欄位存在映射異常的另一種方法是執行查詢:_exists_: coralogix.failed_reason

    查詢以顯示映射異常
    查詢以顯示映射異常。

    此查詢將僅傳回在選定時間範圍內具有對應異常的日誌行。

有兩種方法可以解決映射異常:

  • 選項 1:不建立索引進行搜尋。

    如果由於映射異常導致查詢時沒有找到某個字段,可以用 All Logs 代替 Priority Insights 進行搜尋。 在 All Logs 中搜尋時,搜尋會繞過索引和映射異常。

  • 選項 2:修復攝取時的日誌記錄。

    您可以修復使用相同欄位名稱但資料類型不同的新日誌記錄。

    1. 建立 RegEx表達式 以用適當的後綴替換欄位名稱。 例如:

      field_obj
      如果IBM Cloud Logs需要一個字串,但找到一個物件:
      • 正規表示式: ("field"\s*:\s*{)
      • 取代為: "field_obj":{
      field_arr
      如果IBM Cloud Logs需要一個字串,但找到一個陣列:
      • 正規表示式: ("field"\s*:\s*[)
      • 取代為: "field_arr":[
      field_str
      如果IBM Cloud Logs需要一個對象,但找到一個字串:
      • 正規表示式: ("field"\s*:\s*")
      • 取代為: "field_str":"
    2. 使用RegEx建立解析 替換規則 來修復新日誌。