Interroger, exporter et stocker des journaux Service Health

Personalized Service Health consigne les événements d'état des services dans Cloud Logging. Il enregistre toutes les mises à jour de la description, de la pertinence ou de l'état de l'événement en tant que journal distinct.

Ce document explique comment afficher, exporter et stocker les journaux Service Health.

Avant de commencer

Vérifiez que la facturation est activée pour votre Google Cloud projet.

  1. Activez l'API Service Health pour le projet dont vous souhaitez afficher, exporter ou stocker les journaux.
  2. Accédez aux journaux Service Health.

Schéma des journaux

Consultez la référence du schéma des journaux pour connaître les champs que vous pouvez définir dans votre requête.

Afficher les journaux Service Health

Pour afficher les journaux Service Health :

  1. Accédez à la Google Cloud console.
  2. Sélectionnez Operations > Logging > Logs Explorer (Opérations > Journalisation > Explorateur de journaux).
  3. Sélectionnez un Google Cloud projet en haut de la page.
  4. Dans le menu déroulant Log name (Nom du journal), sélectionnez Service Health.

    Explorateur de journaux

    Nom du journal

    Une liste de journaux pour type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog s'affiche.

  5. Développez une entrée de journal pour afficher les détails de l'événement. L'exemple suivant montre un événement typique.

    "insertId":"1pw1msgf6a3zc6",
    "timestamp":"2022-06-14T17:17:55.722035096Z",
    "receiveTimestamp":"2022-06-14T17:17:55.722035096Z",
    "logName":"projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
    "resource":{
        "type":"servicehealth.googleapis.com/Event",
        "labels":{
            "resource_container":"797731824162",
            "location":"global",
            "event_id":"U4AqrjwFQYi5fFBmyAX-Gg"
        }
    }
    "labels":{
        "new_event":"true"
        "updated_fields": "[]"
    },
    "jsonPayload":{
        "@type":"type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
        "category":"INCIDENT",
        "title":"We are experiencing a connectivity issue affecting Cloud SQL in us-east1, australia-southeast2.",
        "description":"We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
        "updateTime":"2023-11-14T22:26:40Z",
        "endTime":"2023-11-14T22:13:20Z",
        "impactedLocations":"['us-east1','australia-southeast2']",
        "impactedProducts":"['Google Cloud SQL']",
        "impactedProductIds":"['hV87iK5DcEXKgWU2kDri']",
        "nextUpdateTime":"2023-11-14T22:40:00Z",
        "startTime":"2020-09-13T12:26:40Z",
        "state":"ACTIVE",
        "detailedState":"CONFIRMED",
        "relevance":"RELATED",
    }
    

Interroger les journaux Service Health

Vous pouvez utiliser l'explorateur de journaux pour interroger les journaux Service Health. Vous aurez peut-être besoin des références suivantes pour créer votre requête :

Exemples :

Condition Requête
Obtenir les journaux avec une pertinence d'incident spécifique jsonPayload.relevance = ("IMPACTED" OR "RELATED")
Combiner plusieurs filtres jsonPayload.impactedLocations : "us-central1" AND jsonPayload.impactedProducts : "Google Compute Engine" AND jsonPayload.state = "ACTIVE"

Exporter les journaux Service Health

Vous pouvez exporter les journaux Service Health vers n'importe quelle destination de récepteur Cloud Logging à l'aide de la Google Cloud console, de l'API ou de gcloud CLI. Pour configurer un récepteur Cloud Logging, consultez Configurer et gérer les récepteurs.

Vous pouvez inclure et exclure les journaux Service Health en configurant les filtres d'inclusion et d'exclusion pour le récepteur.

Lorsque vous définissez le produit ou l'emplacement, utilisez les valeurs disponibles dans Google Cloud Produits et Emplacements.

Agréguer les journaux Service Health au niveau d'un dossier

L'envoi des journaux liés à Service Health de tous les projets d'un dossier vers un projet créé pour les journaux Service Health vous permet d'effectuer des requêtes plus complexes sur ces journaux.

Vous allez créer un récepteur au niveau du dossier pour envoyer tous les journaux liés à Service Health vers un nouveau projet de ce dossier. Procédez comme suit :

  1. Créez un projet dans un dossier. Ce projet est alloué aux journaux Service Health.

    gcloud projects create PROJECT_ID --folder FOLDER_ID
    
  2. Créez un récepteur agrégé au niveau du dossier pour les autres projets du dossier.

    gcloud logging sinks create SINK_NAME \
    SINK_DESTINATION  --include-children \
    --folder=FOLDER_ID --log-filter="LOG_FILTER"
    

    Pour obtenir les journaux de tous les incidents pertinents, définissez la valeur LOG_FILTER sur la valeur suivante :

    resource.type=servicehealth.googleapis.com/Event AND jsonPayload.category=INCIDENT AND jsonPayload.relevance!=NOT_IMPACTED AND jsonPayload.@type=type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog
    
  3. Définissez les autorisations pour le compte de service du récepteur.

    gcloud projects add-iam-policy-binding PROJECT_ID --member=SERVICE_ACCT_NAME --role=roles/logging.bucketWriter
    
    gcloud projects add-iam-policy-binding PROJECT_ID --member=SERVICE_ACCT_NAME --role=roles/logging.logWriter
    
  4. (Facultatif) Si vous ne souhaitez pas envoyer les journaux au récepteur _Default, créez un bucket de journaux pour les journaux liés à Service Health dans le projet.

    gcloud logging buckets create BUCKET_ID --location=LOCATION --enable-analytics --async
    

    Si vous avez créé un bucket de journaux, créez un récepteur pour envoyer ces journaux au bucket.

    gcloud logging sinks create SINK_NAME_BUCKET \
    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID \
    --project=PROJECT_ID --log-filter="LOG_FILTER"
    

Interroger les journaux Service Health avec BigQuery

Vous pouvez interroger les journaux envoyés à Cloud Logging à l'aide de BigQuery en procédant comme suit :

  1. Créer des requêtes SQL.
  2. Utiliser l'API BigQuery pour transmettre les résultats des requêtes à des systèmes externes.

Procédez comme suit :

  1. Créez un bucket de journaux dans le projet que vous avez créé pour les journaux Service Health.

    gcloud logging buckets create BUCKET_ID  --location=LOCATION  --enable-analytics --async
    
  2. Activez Observability Analytics.

    gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics --async
    
  3. Créez un ensemble de données BigQuery associé au bucket contenant les journaux Service Health.

    gcloud logging links create LINK_ID --bucket=BUCKET_ID --location=LOCATION
    
  4. Si nécessaire, activez l'API BigQuery.

    gcloud services enable bigquery.googleapis.com
    

Vous pouvez maintenant exécuter des requêtes SQL complexes sur BigQuery, par exemple :

Condition Requête
Obtenir les journaux avec une pertinence d'incident spécifique gcloud query --use_legacy_sql=false 'SELECT * FROM `PROJECT_ID.LINK_ID._AllLogs` WHERE JSON_VALUE(json_payload["relevance"]) = "IMPACTED"'
Obtenir tous les événements de journal enfant pour un événement parent gcloud query --use_legacy_sql=false 'SELECT * FROM `PROJECT_ID.LINK_ID._AllLogs` WHERE JSON_VALUE(json_payload["parentEvent"]) = "projects/PROJECT_ID/locations/global/events/EVENT_ID"'

Conserver les événements passés

Personalized Service Health offre une conservation limitée des événements.

Si vous devez conserver un enregistrement des événements d'état des services passés au-delà de quelques mois, nous vous recommandons de stocker les journaux Service Health.

  1. Configurez les journaux Service Health.
  2. Stockez les journaux dans un bucket de journaux.