Surveiller l'état des tâches à l'aide de notifications Pub/Sub et de BigQuery

Ce document explique comment surveiller les changements d'état des jobs et des tâches en configurant des notifications Pub/Sub. Vous pouvez utiliser les notifications pour divers cas d'utilisation. Par exemple, ce document explique comment diffuser les notifications vers une table BigQuery, que vous pouvez utiliser pour analyser les données. Pour en savoir plus sur les cas d'utilisation des notifications Pub/Sub, consultez Choisir un type d'abonnement dans la documentation Pub/Sub.

Si vous souhaitez exporter toutes les informations sur un job BigQuery, consultez la page Exporter des informations sur un job. à la place.

Avant de commencer

  1. Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
  2. Si vous souhaitez configurer les notifications Pub/Sub pour vos Pour les jobs par lot, procédez comme suit:
    1. Enable the Pub/Sub API.

      Enable the API

    2. Pour obtenir les autorisations nécessaires pour configurer un sujet et un abonnement Pub/Sub, demandez à votre administrateur de vous accorder le Rôle IAM Éditeur Pub/Sub (roles/pubsub.editor) sur un projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

      Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

  3. Les exigences supplémentaires varient en fonction du type d'abonnement que vous que vous décidez de configurer. Par exemple, si vous souhaitez diffuser et analyser à une table BigQuery, vous devez procéder comme suit:
    1. Enable the BigQuery API.

      Enable the API

    2. Pour vous assurer que le compte de service Pub/Sub dispose des autorisations nécessaires pour diffuser des notifications Pub/Sub dans BigQuery, demandez à votre administrateur d'accorder au compte de service Pub/Sub le rôle IAM Éditeur de données BigQuery (roles/bigquery.dataEditor) sur le projet du sujet Pub/Sub.

      Pour en savoir plus sur l'attribution de ce rôle, consultez la page Attribuer des rôles BigQuery au compte de service Pub/Sub.

    3. Assurez-vous que tous les utilisateurs dans lesquels vous souhaitez analyser les notifications BigQuery disposent des autorisations requises.

      Pour obtenir les autorisations nécessaires pour interroger les notifications Pub/Sub dans BigQuery, demandez à votre administrateur de vous accorder le rôles IAM suivants:

Configurer les notifications Pub/Sub pour Batch

Batch prend en charge les notifications Pub/Sub pour les modifications des états des tâches et des jobs, que vous pouvez utiliser pour les alertes, l'observabilité ou l'analyse.

Pour configurer des notifications Pub/Sub pour une ou plusieurs tâches de traitement par lot, procédez comme suit :

  1. Créez ou identifiez un sujet Pub/Sub pour vos tâches Batch.
  2. Créez au moins un abonnement pour votre sujet afin de recevoir et d'utiliser ses notifications.
  3. Configurez des tâches pour envoyer des notifications à votre sujet.

Une fois que vous avez configuré les notifications Pub/Sub pour Batch, vous pouvez éventuellement configurer chaque tâche pour envoyer des notifications spécifiques. Vous pouvez recevoir chaque fois que l'état d'une tâche ou d'une tâche change, ou vous pouvez filtrer les des notifications pour des états de tâche ou de tâche spécifiques. Notamment, Pub/Sub n'envoie pas de notifications pour le premier état dans lequel une tâche ou une tâche entre. Pub/Sub n'envoie des notifications que lorsqu'une tâche passe d'un état à un autre. Pour en savoir plus sur les attributs que vous pouvez configurer pour les notifications Pub/Sub, consultez Créer et exécuter une tâche qui envoie des notifications d'état Pub/Sub.

Créer ou identifier un sujet Pub/Sub pour Batch

Créez un sujet Pub/Sub ou identifiez un sujet Pub/Sub existant que vous souhaitez utiliser pour les notifications par lot.

Comme expliqué plus loin dans ce document, les tâches ne peuvent pas envoyer de notifications à ce sujet Pub/Sub tant que votre administrateur n'a pas accordé d'autorisations supplémentaires pour ce faire.

Créez un abonnement pour recevoir et utiliser les notifications

Pour recevoir et utiliser les messages publiés dans un sujet Pub/Sub, vous doit créer au moins un abonnement associé à ce sujet.

Par exemple, vous pouvez configurer votre sujet pour diffuser ses notifications dans BigQuery. Ensuite, lorsque vous exécutez des jobs publier des notifications, vous pouvez les recevoir et les analyser dans un table BigQuery. Pour en savoir plus, consultez Exemple: Recevoir et utiliser des notifications Pub/Sub dans BigQuery dans ce document.

Pour en savoir plus sur les abonnements et les autres options d'abonnement, consultez Vue d'ensemble des abonnements dans le dans la documentation Pub/Sub.

Configurer des tâches pour envoyer des notifications à votre sujet

Pour configurer des jobs qui envoient des notifications Pub/Sub au suivez les instructions du Créer et exécuter un job qui envoie des notifications d'état Pub/Sub . Plus précisément, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, demandez à votre administrateur d'accorder toutes les autorisations requises pour que les tâches puissent envoyer des notifications à votre sujet Pub/Sub. Ces autorisations sont répertoriées dans la section Rôles requis de cette page.
  2. Créer et exécuter un job qui active les notifications Pub/Sub en définissant le champ notifications du job.

Exemple: Recevoir et utiliser des notifications Pub/Sub dans BigQuery

Les sections suivantes décrivent un exemple de cas d'utilisation pour recevoir et utiliser Notifications Pub/Sub dans BigQuery En configurant qui diffuse les notifications Pub/Sub de votre sujet vers table BigQuery, vous pouvez conserver l'historique de l'état des tâches et de les interroger.

Configurer un abonnement qui diffuse les notifications vers BigQuery

Pour configurer un abonnement Pub/Sub qui diffuse des notifications à partir d'un sujet vers une table BigQuery, procédez comme suit :

  1. Si ce n'est pas déjà fait, créez ou identifiez un sujet Pub/Sub pour Batch.

  2. Si vous n'en avez pas encore, créez un ensemble de données BigQuery.

  3. Créer une table BigQuery avec la définition de schéma suivante:

    [
      {
        "name": "data",
        "type": "STRING"
      },
      {
        "name": "subscription_name",
        "type": "STRING"
      },
      {
        "name": "message_id",
        "type": "STRING"
      },
      {
        "name": "attributes",
        "type": "JSON"
      },
      {
        "name": "publish_time",
        "type": "TIMESTAMP",
        "mode": "NULLABLE"
      }
    ]
    
  4. Créez un abonnement Pub/Sub qui diffuse des flux vers BigQuery et spécifiez les options suivantes :

    • Sujet: sélectionnez le sujet Pub/Sub pour Batch.
    • Projet : sélectionnez le projet contenant votre table BigQuery.
    • Ensemble de données: sélectionnez l'ensemble de données contenant votre table BigQuery.
    • Table: sélectionnez la table que vous avez créée à l'étape précédente.
    • Sélectionnez Utiliser un schéma de sujet.
    • Sélectionnez Écrire les métadonnées.

Désormais, chaque fois qu'une notification Pub/Sub est envoyée à ce sujet, Pub/Sub la diffuse dans la table BigQuery. Après avoir configuré des jobs pour envoyer des notifications Pub/Sub, vous pouvez analyser les notifications dans BigQuery.

Analyser les notifications dans BigQuery

Vous pouvez analyser les notifications dans BigQuery après avoir configuré à une table BigQuery pour votre sujet et exécuter des tâches envoyer des notifications à votre sujet. Pour analyser les notifications dans BigQuery, exécutez une requête sur la colonne attributes de la table BigQuery. Les attributs que vous pouvez interroger dépendent de la configuration des notifications pour les tâches ou les jobs.

Vous pouvez interroger les attributs suivants des notifications de tâche :

  • JobUID
  • NewTaskState
  • Region
  • TaskName
  • TaskUID
  • Type

Vous pouvez interroger les attributs suivants des notifications d'offres d'emploi:

  • JobUID
  • JobName
  • NewJobState
  • Region
  • Type

Par exemple, la requête suivante affiche les JobUID associés à chaque notification :

select attributes.JobUID from `example-table`

Étape suivante