Warum erhalte ich keine Ergebnisse von meinen Prioritätserkenntnisse Suchen?

Bei der Suche in IBM® Cloud Logs mit Prioritätserkenntnisse erhalte ich nicht die erwarteten Ergebnisse. Ich weiß, dass die Felder, nach denen ich in meinen Protokollen suche, existieren, aber IBM Cloud Logs scheint sie bei meinen Suchen nicht zu finden.

Die Suche nach Feldwerten führt nicht zu den erwarteten Ergebnissen.

Das Problem hängt oft mit einer Mapping-Ausnahme zusammen.

Eine Zuordnungsausnahme kann auftreten, wenn neue Protokollfelder mit Feldnamen aufgenommen werden, die zuvor von IBM Cloud Logs aufgenommen wurden, aber einen anderen Werttyp haben. Wenn IBM Cloud Logs die aufgenommenen Daten indiziert, versucht es, die Felder einem der folgenden Typen zuzuordnen:

  • String
  • Numeric
  • Object
  • Array

Wenn zum Beispiel das Feld user aufgenommen wurde und der erste empfangene Wert "username" ist, wird IBM Cloud Logs einen Index vom Typ string für das Feld user erstellen:

"user": “username”`

Wenn später ein neues Protokoll aufgenommen wird, das auch ein Feld mit dem Namen "user" enthält, das wie folgt formatiert ist:

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

Eine Mapping-Ausnahme wird in IBM Cloud Logs erstellt. Bei allen Prioritätserkenntnisse-Suchen, die nach einem Feld mit dem Namen user suchen, wird erwartet, dass der Wert string auf der Grundlage des ersten Protokolls, das mit einem user-Feld eingelesen wurde, vorhanden ist.

Alle Prioritätserkenntnisse-Suchen, die nach einem user mit dem Typ array (user.email oder user.login) suchen, werden aufgrund der Zuordnungsausnahme keine Ergebnisse liefern.

Sie können mit Hilfe der IBM Cloud Logs UI feststellen, ob es Mapping-Ausnahmen gibt.

Führen Sie die folgenden Schritte aus, um Mapping-Ausnahmen zu identifizieren:

  1. Prüfen Sie die IBM Cloud Logs UI auf ein Symbol neben der Anzahl der Logs:

    Symbol für Ausnahmen
    Symbol für Ausnahmen

    Wenn Sie den Mauszeiger über das Symbol bewegen, wird die Anzahl der Protokolle mit Zuordnungsausnahmen innerhalb der Abfrageergebnisse im ausgewählten Zeitraum angezeigt.

  2. Um die Protokolle zu identifizieren, die nicht richtig indiziert wurden, aktivieren Sie die Option Show Mapping errors:

    Auswahl, wie Zuordnungsfehler angezeigt werden sollen. Klicken Sie auf Einstellungen und dann auf Zuordnungsfehler anzeigen.
    Auswahl, wie Zuordnungsfehler angezeigt werden sollen

  3. Nachdem Sie diese Option aktiviert haben, aktualisieren Sie Ihren Browser.

    Ein Ausrufezeichen wird bei den Feldern angezeigt, bei denen Zuordnungsausnahmen bestehen und die nicht indiziert wurden.

    Markierung von Feldern mit Zuordnungsausnahmen
    Markierung von Feldern mit Zuordnungsausnahmen

    Eine andere Möglichkeit, schnell herauszufinden, bei welchen Feldern eine Zuordnungsausnahme vorliegt, besteht darin, diese Abfrage auszuführen: _exists_: coralogix.failed_reason

    Abfrage zur Anzeige von Kartierungsausnahmen
    Abfrage zur Anzeige von Kartierungsausnahmen.

    Diese Abfrage gibt nur die Protokollzeilen zurück, die eine Mapping-Ausnahme für den ausgewählten Zeitraum aufweisen.

Es gibt zwei Möglichkeiten, um Mapping-Ausnahmen zu lösen:

  • Option 1: Suche ohne Indizierung.

    Wenn Sie bei der Abfrage aufgrund von Zuordnungsausnahmen ein Feld nicht finden, können Sie in All Logs anstelle von Priority Insights suchen. Bei der Suche in All Logs werden Indizierungs- und Zuordnungsausnahmen von der Suche umgangen.

  • Option 2: Protokollsätze bei der Aufnahme korrigieren.

    Sie können neue Protokolldatensätze mit denselben Feldnamen, aber mit unterschiedlichen Datentypen einlesen.

    1. Erstellen Sie einen RegEx-Ausdruck, um den Feldnamen durch das entsprechende Suffix zu ersetzen. Zum Beispiel:

      field_obj
      Wenn IBM Cloud Logs einen String erwartet, aber ein Objekt gefunden hat:
      • Regulärer Ausdruck: ("field"\s*:\s*{)
      • Ersetzen durch: "field_obj":{
      field_arr
      Wenn IBM Cloud Logs einen String erwartet, aber ein Array gefunden hat:
      • Regulärer Ausdruck: ("field"\s*:\s*[)
      • Ersetzen durch: "field_arr":[
      field_str
      Wenn IBM Cloud Logs ein Objekt erwartet, aber einen String gefunden hat:
      • Regulärer Ausdruck: ("field"\s*:\s*")
      • Ersetzen durch: "field_str":"
    2. Erstellen Sie eine Parsing Ersetzungsregel, um neue Protokolle mit Hilfe von RegEx zu fixieren.