Fehlerbehebung bei der Log Analytics-Konfiguration

In diesem Dokument wird beschrieben, wie Sie Fehler beheben können, die beim Verwenden der Seite Log Analytics in der Google Cloud Console auftreten können.

Fehlermeldungen

In diesem Abschnitt werden mögliche Fehlermeldungen und deren Behebung beschrieben.

Fehlermeldung No completion signal within allotted timeframe

Sie geben eine SQL-Abfrage ein und wählen Abfrage ausführen aus. Die Abfrage wird nicht abgeschlossen und Sie sehen die folgende Fehlermeldung:

The query failed to execute and return results due to error: No completion signal within allotted timeframe.

Führen Sie einen der folgenden Schritte aus, um diesen Fehler zu beheben:

  • Verkürzen Sie das Intervall, über das Protokolle abgefragt werden, und wiederholen Sie die Abfrage. Wenn das Abfrageintervall beispielsweise 14 Tage beträgt, verkürzen Sie es auf 7 Tage und führen Sie dann die Abfrage aus.

  • Erstellen Sie ein verknüpftes BigQuery-Dataset und führen Sie die Abfrage dann über die BigQuery-Benutzeroberfläche aus. Die BigQuery-Oberfläche unterstützt Abfragen, die eine längere Ausführungszeit erfordern als die Cloud Logging-Oberfläche. Weitere Informationen finden Sie unter Verknüpfte BigQuery-Datasets abfragen.

Fehlermeldung bei Abfragen für Bucket mit unterschiedlichen CMEK-Schlüsseln

Sie geben eine SQL-Abfrage ein, die mehrere Log-Buckets abfragt, und wählen Abfrage ausführen aus. Die Abfrage wird nicht abgeschlossen und Sie sehen die folgende Fehlermeldung:

Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.

Führen Sie einen der folgenden Schritte aus, um das Problem zu beheben:

  • Konfigurieren Sie Ihre Protokoll-Buckets so, dass derselbe Cloud Key Management Service-Schlüssel (Cloud KMS) verwendet wird.
  • Wenn sich die Log-Buckets am selben Speicherort befinden, können Sie einen Ordner oder eine Organisation als übergeordnete Ressource für die Log-Buckets mit einem Cloud KMS-Standardschlüssel konfigurieren. Der Standardschlüssel des übergeordneten Elements muss sich am selben Speicherort wie die Log-Buckets befinden. Bei dieser Konfiguration werden alle temporären Daten, die durch die Log Analytics-Abfrage generiert werden, mit dem Standardschlüssel des übergeordneten Elements verschlüsselt. Weitere Informationen finden Sie unter Einschränkungen für Log Analytics.

FROM-Klausel muss genau eine Ansicht enthalten

Sie geben in der Google Cloud Console auf der Seite Log Analytics eine SQL-Abfrage in den Abfragebereich ein. Der SQL-Parser zeigt jedoch den folgenden Fehler an:

FROM clause must contain exactly one log view

Der vorherige Fehler wird gemeldet, wenn die in der FROM-Anweisung angegebene Tabelle nicht in eine bestimmte Protokollansicht aufgelöst werden kann.

Achten Sie darauf, dass der Tabellenname die richtige Syntax hat, um diesen Fehler zu beheben:

  • Der Tabellenname muss der Syntax des Log Analytics-Benennungsschemas entsprechen. BigQuery und Log Analytics haben unterschiedliche Anforderungen an den Tabellennamen. Die erforderliche Syntax für den Tabellennamen finden Sie in der Standardabfrage.

  • Wenn die Google Cloud-Projekt-ID, die Region, die Bucket-ID oder die Ansichts-ID eines Log-Buckets Punkte ((.)) enthält, müssen diese Felder jeweils in einzelne Backticks ((`)) gesetzt werden.

    Wenn die Google Cloud-Projekt-ID beispielsweise example.com:bluebird lautet, verwenden Sie die folgende Syntax, um die _AllLogs-Ansicht des _Default-Protokoll-Buckets abzufragen:

    
    SELECT *
    FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
    

    Bei der vorherigen Abfrage wird davon ausgegangen, dass sich der Bucket _Default in der Region global befindet.

Abfrage kann nicht gespeichert werden

Wenn Sie eine SQL-Abfrage eingeben und ausführen und die Option Speichern deaktiviert ist, ist in den Standardressourceneinstellungen Ihrer Organisation oder Ihres Ordners ein Speicherort definiert, der von der Organisationsrichtlinie nicht zulässig ist. Bitten Sie den Administrator Ihrer Organisation, in den Standardressourceneinstellungen einen Standort zu definieren, der mit einem Standort übereinstimmt, der gemäß Ihrer Organisationsrichtlinie zulässig ist. Weitere Informationen finden Sie unter Standardeinstellungen für Organisationen und Ordner konfigurieren.

Wenn die Schaltfläche Speichern aktiviert ist, Sie den Dialog aber nicht schließen und die Abfrage nicht speichern können, gehen Sie so vor:

  1. Die Abfrage darf keine Syntaxfehler enthalten. Sie können nur gültige Abfragen speichern.
  2. Optional: Kopieren Sie die Abfrage in die Zwischenablage.
  3. Laden Sie die Seite neu.
  4. Wenn Sie die Abfrage in die Zwischenablage kopiert haben, fügen Sie sie in den Bereich Abfrage ein, führen Sie die Abfrage aus und speichern Sie sie dann.

Zugriff auf die Seite Log Analytics verweigert

Sie öffnen die Seite Log Analytics in der Google Cloud Console und es wird eine Fehlermeldung angezeigt, dass die Berechtigung abgelehnt wurde.

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Laden der Seite Log Analytics, Ausführen von Abfragen und Ansehen von Protokollen benötigen:

Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder vordefinierte Rollen für die Protokollierung erhalten.

Die Berechtigungen, die Sie zum Aufrufen von Logeinträgen und Ausführen von Abfragen auf der Seite Log Analytics benötigen, sind dieselben wie für das Aufrufen von Protokollen auf der Seite Log-Explorer. Informationen zu zusätzlichen Rollen, die Sie zum Abfragen von Ansichten in benutzerdefinierten Buckets oder zum Abfragen der Ansicht _AllLogs des Log-Buckets _Default benötigen, finden Sie unter Cloud Logging-Rollen.

Upgrade des Log-Buckets auf Log Analytics schlägt fehl

Sie erstellen einen Log-Bucket und wählen die Option zur Verwendung von Log Analytics aus oder Sie führen ein Upgrade eines vorhandenen Log-Buckets für die Verwendung von Log Analytics durch. Das Upgrade schlägt mit einer Fehlermeldung wie der folgenden fehl:

Failed precondition (HTTP 400): Constraint "my-constraint" violated for PROJECT_ID  with location global.

Die vorherige Fehlermeldung gibt an, dass Ihre Organisation eine Organisationsrichtlinie konfiguriert hat, die die zulässigen Regionen einschränkt. Für Log-Buckets, die für die Verwendung von Log Analytics aktualisiert werden können, muss die Region global verwendet werden. Wenn Sie die Organisationsrichtlinie entfernen können, die die Nutzung der Region global einschränkt, können Sie ein Upgrade für Ihren Log-Bucket ausführen. Andernfalls können Sie Ihre Log-Buckets nicht aktualisieren.

Das Erstellen eines verknüpften BigQuery-Datasets schlägt fehl

Sie bearbeiten einen Log-Bucket, um ein verknüpftes BigQuery-Dataset zu erstellen, oder Sie erstellen einen neuen Log-Bucket und wählen die Option zum Erstellen eines verknüpften Datasets aus. Das verknüpfte Dataset wird jedoch nicht erstellt.

Bitten Sie den Systemadministrator des Google Cloud-Projekts, Ihnen eine IAM-Rolle mit der folgenden Berechtigung zu gewähren, um diesen Fehler zu beheben:

  • logging.links.create

Die vorherige Berechtigung ist in den Rollen „Logging-Administrator“ (roles/logging.admin) und „Autor von Logkonfigurationen“ (roles/logging.configWriter) enthalten.

Informationen zu Rollen und Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Löschen eines verknüpften BigQuery-Datasets schlägt fehl

Sie möchten das verknüpfte Dataset nicht mehr verwenden, aber die Option zum Löschen dieses Datasets ist deaktiviert.

Bitten Sie den Systemadministrator des Google Cloud-Projekts, Ihnen eine IAM-Rolle mit der folgenden Berechtigung zu gewähren, um diesen Fehler zu beheben:

  • logging.links.delete

Die vorherige Berechtigung ist in den Rollen „Logging-Administrator“ (roles/logging.admin) und „Autor von Logkonfigurationen“ (roles/logging.configWriter) enthalten.

Mit dieser Berechtigung können Sie das verknüpfte Dataset auf der Seite Logs Storage (Logs Storage) der Google Cloud Console löschen. Weitere Informationen zu Rollen und Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Schaltfläche für die Einstellungen der Suchmaschine fehlt

Wenn die Schaltfläche Einstellungen neben der Schaltfläche Abfrage ausführen nicht angezeigt wird, sind für Ihr Google Cloud-Projekt keine reservierten BigQuery-Slots aktiviert. Wenn Sie die Schaltfläche Einstellungen aktivieren möchten, konfigurieren Sie reservierte BigQuery-Slots für Ihr Projekt.

Schaltfläche „In BigQuery ausführen“ ist deaktiviert

Wenn die Schaltfläche In BigQuery ausführen angezeigt, aber deaktiviert ist, hat eine Protokollansicht, auf die Ihre Abfrage verweist, keinen verknüpften Datensatz. Wenn Sie die Abfrage auf Ihren BigQuery-Steckplatzreservierungen ausführen möchten, erstellen Sie ein verknüpftes BigQuery-Dataset in Ihrer Protokollansicht.

Kein Monitoring-Dienstkonto

Sie möchten eine Benachrichtigungsrichtlinie erstellen, um die Ergebnisse einer SQL-Abfrage zu überwachen. Bei der Einrichtung müssen Sie dem Monitoring-Dienstkonto IAM-Rollen zuweisen. Dieses Konto ist jedoch nicht vorhanden.

Das Monitoring-Dienstkonto wird als Dienst-Agent bezeichnet, da es von Google Cloud erstellt und verwaltet wird. Das Konto wird automatisch erstellt, wenn Sie eine Ressource oder einen Dienst konfigurieren, für den das Konto erforderlich ist. Wenn Sie beispielsweise einen Pub/Sub-Benachrichtigungskanal erstellen, kann dadurch das Monitoring-Dienstkonto erstellt werden. Je nach Erstellungsablauf wird dem Monitoring-Dienstkonto möglicherweise die Rolle Monitoring Service Agent (monitoring.NotificationServiceAgent) für Ihr Projekt zugewiesen. Sie können die dem Konto zugewiesenen Rollen ändern.

Wenn das Monitoring-Dienstkonto nicht vorhanden ist, gehen Sie so vor, um eine Benachrichtigungsrichtlinie zu erstellen, die das Ergebnis einer SQL-Abfrage überwacht:

  1. Erstellen Sie einen Dienst-Agenten manuell. Weitere Informationen zu diesem Schritt finden Sie unter Rollen erstellen und zuweisen.

  2. Weisen Sie dem Dienst-Agent die erforderlichen Rollen zu. Informationen zu diesen Rollen finden Sie unter SQL-Abfrageergebnisse überwachen: Vorab.

Meine Log Analytics-Ergebnisse enthalten doppelte Logeinträge.

Sie führen eine Abfrage aus, bei der doppelte Einträge gezählt oder gemeldet werden. Da der Log-Explorer doppelte Einträge basierend auf Lognamen, Zeitstempel und Einfügungs-ID entfernt, erwarten Sie, dass Log Analytics Logeinträge dedupliziert, bevor eine Abfrage ausgeführt wird.

In Log Analytics wird nicht dieselbe Art der Deduplizierung wie im Log-Explorer durchgeführt.

So beheben Sie doppelte Logeinträge:

  1. Prüfen Sie, ob die Zeitstempel für den Empfang der doppelten Logeinträge unterschiedlich sind. Wenn sich die Zeitstempel unterscheiden, wurden dieselben Daten mehrmals in die Protokollierung geschrieben.

    Prüfen Sie Ihre Logging-Integration auf Fehlermeldungen oder Fehlkonfigurationen, um doppelte Schreibvorgänge zu beheben.

  2. Wenn Ihr Bucket für die Verwendung von Cloud Key Management Service-Schlüsseln konfiguriert ist, achten Sie darauf, dass Sie das Kontingent nicht überschreiten und dass auf Ihren Schlüssel immer zugegriffen werden kann. Eine Überschreitung des Kontingents oder der Verlust des Schlüsselzugriffs kann zu doppelten Logeinträgen führen.

    Um diese Fehler zu beheben, achten Sie darauf, dass Sie Ihr Kontingent nicht überschreiten und dass auf Ihren Schlüssel zugegriffen werden kann.

  3. Ändern Sie die Abfrage, um doppelte Logeinträge zu entfernen.

    Angenommen, die JSON-Nutzlast enthält fieldA und fieldB, wobei der erste ein String und der zweite ein numerischer Wert ist. Angenommen, die JSON-Nutzlast enthält ein Feld mit dem Namen server, das einen String enthält. Betrachten Sie als Nächstes die folgende Abfrage:

    SELECT
      JSON_VALUE(json_payload.fieldA) AS fieldA
      SUM(IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0)) AS sum_fieldB
    FROM
      `TABLE_NAME_OF_LOG_VIEW`
    WHERE
      JSON_VALUE(json_payload.server) = "test"
    GROUP BY
      fieldA;
    

    Sie können die Abfrage so ändern, dass doppelte Logeinträge entfernt werden. Dabei werden der Logname, der Zeitstempel und die Einfüge-ID geprüft, um festzustellen, ob ein Logeintrag ein Duplikat ist:

    WITH
      deduplicated AS (
      SELECT
        JSON_VALUE(json_payload.fieldA) AS fieldA
        IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0) AS fieldB
      FROM
        `TABLE_NAME_OF_LOG_VIEW` a
      WHERE
        JSON_VALUE(json_payload.server) = "test"
      QUALIFY
        ROW_NUMBER() OVER (PARTITION BY a.log_name, a.timestamp, a.insert_id ) = 1 )
    
    SELECT
      fieldA,
      SUM(fieldB) AS sum_fieldB
    FROM
      deduplicated
    GROUP BY
      fieldA;