Interroger, exporter et stocker des journaux Service Health

Personalized Service Health enregistre les événements liés à l'état des services dans Cloud Logging. Il enregistre toutes les modifications apportées à la description, à la pertinence ou à l'état de l'événement sous la forme d'un journal distinct.

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

Avant de commencer

Make sure that billing is enabled for your Google Cloud project.

  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 de journal

Consultez la documentation de référence sur le 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 console Google Cloud .
  2. Sélectionnez Opérations > Journalisation > Explorateur de journaux.
  3. Sélectionnez un projet Google Cloud en haut de la page.
  4. Dans le menu déroulant Nom du journal, sélectionnez État du service.

    Explorateur de journaux

    Nom du journal

    Une liste des journaux pourtype.googleapis.com/google.cloud.servicehealth.logging.v1.EventLogs'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 type.

    "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 d'Service Health. Vous aurez peut-être besoin des références suivantes pour créer votre requête :

Exemples :

Condition Requête
Obtenir des 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 d'Service Health vers n'importe quelle destination de récepteur Cloud Logging à l'aide de la console Google Cloud , de l'API ou de la gcloud CLI. Pour configurer un récepteur Cloud Logging, consultez Configurer et gérer les récepteurs.

Vous pouvez inclure et exclure les journaux d'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 trouvées dans Google Cloud products et locations.

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

L'envoi des journaux liés à l'état des services de tous les projets d'un dossier vers un projet créé pour les journaux d'état des services 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 à l'Service Health à un nouveau projet sous ce dossier. Procédez comme suit :

  1. Créez un projet dans un dossier. Ce projet est attribué 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 qu'il contient.

    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 concernés, définissez la valeur LOG_FILTER sur ce qui suit :

    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 à l'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 y envoyer ces journaux.

    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 sur l'état des services 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 d'Service Health.

    gcloud logging buckets create BUCKET_ID  --location=LOCATION  --enable-analytics --async
    
  2. Activez l'analyse de journaux.

    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 d'Service Health service.

    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 désormais exécuter des requêtes SQL complexes sur BigQuery, par exemple :

Condition Requête
Obtenir des 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 journaux enfants 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 durée de 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 d'état des services.
  2. Stocker les journaux dans un bucket de journaux.