Surveiller l'état d'un job à l'aide des notifications Pub/Sub et de BigQuery

Ce document explique comment surveiller les changements d'état d'une tâche en configurant des notifications Pub/Sub. Vous pouvez utiliser les notifications pour différents 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 la page Choisir un type d'abonnement dans la documentation Pub/Sub.

Avant de commencer

  • Si vous n'avez jamais utilisé Batch auparavant, consultez la page Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
  • Si vous souhaitez configurer des notifications Pub/Sub pour vos tâches par lot, procédez comme suit :
    1. Activez l'API Pub/Sub

      Activer l'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 section Gérer les accès.

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

  • Les exigences supplémentaires varient en fonction du type d'abonnement que vous décidez de configurer. Par exemple, si vous souhaitez diffuser et analyser des notifications dans une table BigQuery, procédez comme suit :
    1. Activez l'API BigQuery

      Activer l'API

    2. Pour vous assurer que le compte de service Pub/Sub dispose des autorisations nécessaires pour diffuser les notifications Pub/Sub vers 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 dont vous souhaitez analyser les notifications dans BigQuery disposent des autorisations requises.

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

Configurer les notifications Pub/Sub pour Batch

Batch accepte les notifications Pub/Sub pour les modifications des états des tâches et des tâches. Vous pouvez les utiliser pour les alertes, l'observabilité ou l'analyse.

Pour configurer des notifications Pub/Sub pour une ou plusieurs tâches Batch, suivez les étapes décrites dans les sections suivantes:

  1. Créez ou identifiez un sujet Pub/Sub pour vos jobs 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.

Après avoir configuré les notifications Pub/Sub pour Batch, vous pouvez éventuellement configurer chaque tâche pour qu'elle envoie des notifications spécifiques. Vous pouvez recevoir des notifications chaque fois que l'état d'une tâche ou d'une tâche change. Vous pouvez également les filtrer par état spécifique. Il est à noter que Pub/Sub n'envoie pas de notifications pour le premier état d'une tâche ou d'une tâche. 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 la page 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 lots.

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é les autorisations supplémentaires requises.

Créez un abonnement pour recevoir et utiliser les notifications

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

Par exemple, vous pouvez configurer votre sujet pour diffuser ses notifications vers BigQuery. Ensuite, lorsque vous exécutez des tâches qui publient des notifications, vous pouvez les recevoir et les analyser dans une table BigQuery. Pour en savoir plus, consultez la section Exemple: Recevoir et utiliser les notifications Pub/Sub dans BigQuery de ce document.

Sinon, pour en savoir plus sur les abonnements et les autres options d'abonnement, consultez la section Présentation des abonnements dans la documentation Pub/Sub.

Configurez des tâches pour envoyer des notifications à votre sujet.

Pour configurer des tâches qui envoient des notifications Pub/Sub à votre sujet, suivez les instructions de la page Créer et exécuter une tâche 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 nécessaires 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éez et exécutez une tâche qui active les notifications Pub/Sub en définissant le champ notifications de la tâche.

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

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

Configurer un abonnement qui diffuse les notifications vers BigQuery

Configurez un abonnement Pub/Sub qui diffuse les notifications d'un sujet vers une table BigQuery en procédant comme suit:

  1. Si vous ne l'avez pas déjà fait, créez ou identifiez un sujet Pub/Sub pour Batch.

  2. Si vous ne l'avez pas encore fait, créez un ensemble de données BigQuery.

  3. Créez 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.
    • Project (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 transmet en streaming à la table BigQuery. Après avoir configuré les tâches 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é un abonnement à une table BigQuery pour votre sujet et exécuté des tâches qui envoient 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 varient selon que vous avez configuré des notifications pour des tâches ou des tâches.

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

  • 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 le JobUID associé à chaque notification:

select attributes.JobUID from `example-table`

Étapes suivantes