優先順位の洞察 の検索結果が表示されないのはなぜですか?

優先順位の洞察 を使って IBM® Cloud Logs で検索すると、期待した結果が返ってこない。 ログで検索しているフィールドが存在することは分かっているが、 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 というフィールドを探す 優先順位の洞察 検索は、 user フィールドを持つ最初のログを取り込むことから、 string 値を持つことが予想される。

array 型(user.email または user.login )を持つ user を探す 優先順位の洞察 検索は、マッピング例外のため結果を返しません。

IBM Cloud LogsUIを使用して、マッピング例外があるかどうかを判断できます。

マッピングの例外を特定するには、以下の手順を実行します:

  1. IBM Cloud LogsのUIで、ログ数の横にアイコンがあるか確認してください:

    マッピング例外アイコン
    マッピング例外アイコン

    アイコンにカーソルを合わせると、選択した時間枠内のクエリ結果内のマッピング例外を含むログの数が表示されます。

  2. 適切にインデックスされなかった特定のログを特定するには、Show Mapping errors オプションを有効にします:

    ![マッピングエラーの表示方法を選択します。 設定]をクリックし、[マッピングエラーを表示]をクリックします。](../images/me_02a.png)

  3. このオプションを有効にしたら、ブラウザを更新してください。

    マッピング例外があり、インデックスが作成されなかったフィールドには感嘆符が表示されます。

    マッピング例外のあるフィールドのフラグ
    マッピング例外のあるフィールドのフラグ

    どのフィールドにマッピング例外があるかを素早く特定するもう一つの方法は、クエリを実行することです:_exists_: coralogix.failed_reason

    マッピングの例外を表示するクエリ
    マッピングの例外を表示するクエリ。

    このクエリは、選択した時間枠にマッピング例外があるログ行のみを返します。

マッピングの例外を解決する方法は2つある:

  • オプション1:インデックスを作成せずに検索する。

    マッピングの例外のためにフィールドが見つからない場合は、Priority Insights の代わりに All Logs で検索することができます。 All Logs で検索する場合、インデックスとマッピングの例外は検索によってバイパスされます。

  • オプション2:取り込み時にログレコードを修正する。

    同じフィールド名でデータ型が異なる新しいログレコードが取り込まれるのを修正することができます。

    1. RegEx 式 を作成し、フィールド名を適切なsufixに置き換える。 以下に例を示します。

      field_obj
      IBM Cloud Logsが文字列を期待していたのにオブジェクトが見つかった場合:
      • 正規表現:("field"\s*:\s*{)
      • 置換する文字列(R): "field_obj":{
      field_arr
      IBM Cloud Logsが文字列を期待していたのに配列が見つかった場合:
      • 正規表現:("field"\s*:\s*[)
      • 置換する文字列(R): "field_arr":[
      field_str
      IBM Cloud Logsがオブジェクトを期待していたのに文字列が見つかった場合:
      • 正規表現:("field"\s*:\s*")
      • 置換する文字列(R): "field_str":"
    2. RegExを使用して新しいログを修正するために、解析 置換ルール を作成します。