Configurer des messages de chat automatisés avec votre récapitulatif de facturation Cloud Billing

Dans ce tutoriel, vous allez exporter des données Cloud Billing vers BigQuery et créer une fonction Cloud et une tâche Cloud Scheduler permettant d'envoyer des messages de chat quotidiens résumant vos données Cloud Billing. En exportant tous les frais vers BigQuery, vous pouvez interroger les données pour regrouper vos coûts. Cette configuration fournit des informations sur les frais quotidiens liés à votre utilisation de Google Cloud, sans que vous n'ayez à les consulter tous les jours.

Ce document est destiné aux développeurs et aux administrateurs de facturation qui souhaitent en savoir plus sur leurs dépenses liées à Google Cloud. Nous partons du principe que vous savez comment créer un compte Cloud Billing et que vous utilisez déjà Hangouts Chat.

Le diagramme suivant illustre les composants Google Cloud utilisés dans ce tutoriel.

Diagramme d'architecture montrant comment les données passent de Cloud Billing à Hangouts Chat.

Les données circulent de Cloud Billing vers BigQuery, entre Cloud Functions et BigQuery, vers le webhook Hangouts Chat. Cloud Scheduler déclenche la fonction Cloud.

Objectifs

  • Activer l'exportation des données Cloud Billing vers BigQuery
  • Créer une fonction Cloud et envoyer un message de chat contenant les résultats de la requête.
  • Tester le service
  • Créer une tâche Cloud Scheduler pour appeler quotidiennement la fonction Cloud.

Coûts

Ce tutoriel utilise les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé ce tutoriel, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Consultez la page Effectuer un nettoyage pour en savoir plus.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder à la page de sélection du projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Dans Cloud Console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de Cloud Console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel le SDK Cloud est déjà installé (y compris l'outil de ligne de commande gcloud), et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

Activer l'exportation des données Cloud Billing vers BigQuery

Pour exporter vos données Cloud Billing vers BigQuery, créez une table d'ensemble de données cible dans BigQuery puis configurez Cloud Billing afin d'exporter les données de facturation vers cet ensemble de données.

Créer un ensemble de données dans BigQuery

Dans ce tutoriel, vous allez créer un ensemble de données dans le même projet Cloud que l'application.

Si vous disposez déjà d'un ensemble de données dans un autre projet Cloud, vous pouvez partager cet ensemble de données avec votre compte de service et passer à la section suivante.

  1. Dans Cloud Console, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le champ Ressources, cliquez sur le nom de votre projet Cloud.

  3. Pour créer une table cible dans BigQuery afin de stocker vos données Cloud Billing, cliquez sur Créer un ensemble de données.

  4. Dans le champ ID de l'ensemble de données, saisissez billing_data.

  5. Cliquez sur Créer un ensemble de données.

Exporter des données Cloud Billing vers BigQuery

  1. Dans Cloud Console, accédez à la page Facturation.

    Accéder à la page "Facturation"

  2. Sélectionnez votre compte Cloud Billing.

  3. Cliquez sur Exportation de la facturation.

  4. Cliquez sur Modifier les paramètres.

  5. Sélectionnez le projet Cloud que vous avez créé pour ce tutoriel.

  6. Sélectionnez l'ensemble de données billing_data créé précédemment.

  7. Cliquez sur Enregistrer.

Votre compte Cloud Billing est configuré pour exporter des données vers BigQuery. Le processus d'exportation peut prendre jusqu'à 24 heures.

Obtenir le nom de la table de l'ensemble de données

  1. Dans Cloud Console, accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le champ Ressources, cliquez sur le nom de votre projet Cloud.

  3. Pour développer, cliquez sur billing_data.

  4. Cliquez sur le nom de la table créée par le processus d'exportation. Le nom commence par gcp_billing_export_v1.

  5. Cliquez sur Exécuter une requête sur la table.

  6. Enregistrez le nom de la table de l'ensemble de données, qui vous permettra de personnaliser le fichier index.php plus loin dans ce tutoriel.

L'instruction SQL contient le nom de la table de l'ensemble de données après le mot-clé FROM au format project_name.dataset.table_name.

  • project_name représente le nom de votre projet Cloud.
  • dataset représente le nom de votre ensemble de données.
  • table_name représente le nom de votre table.

Voici un exemple de nom de table d'ensemble de données : myproject.billing_data.gcp_billing_export_v1_000000_000000_000000

Créer un salon Hangouts Chat

  1. Accédez à votre application Hangouts Chat.
  2. Cliquez sur le champ de recherche Rechercher des contacts, des salons et des bots, puis cliquez sur Créer un salon.
  3. Dans le champ Nom du salon, saisissez GCP_Billing.
  4. Cliquez sur Créer.
  5. Cliquez sur le menu du salon GCP_Billing, puis sélectionnez Configurer les webhooks.

    Menu déroulant permettant de configurer des webhooks pour le salon GCP_Billing.

  6. Dans le champ Nom, saisissez gcp_billing_webhook.

  7. Cliquez sur Enregistrer. Notez l'URL du webhook, car vous en aurez besoin plus tard dans le tutoriel.

Créer une fonction Cloud

  1. Dans Cloud Console, accédez à Cloud Functions.

    Accéder à Cloud Functions

  2. Cliquez sur Créer une fonction.

  3. Dans le champ Nom, saisissez getBillingAlert.

  4. Dans le menu déroulant Mémoire allouée, sélectionnez 128 MiB.

  5. Dans le menu déroulant Environnement d'exécution, sélectionnez Python 3.7.

  6. Dans l'onglet main.py, collez le code suivant :

    from google.cloud import bigquery
    from httplib2 import Http
    from json import dumps
    from datetime import datetime
    
    def run_rule(request):
        client = bigquery.Client()
        query_job = client.query("""
                SELECT sum(cost) as total_cost FROM
    `project_name.dataset.tablename`""")
    
        for row in query_job:
            tcost = row["total_cost"]
    
        url = 'hangout_room_url'
        now = datetime.now()
        msg_content = "GCP Cost: {}".format(tcost) + " [date]: " + now.strftime("%m/%d/%Y, %H:%M:%S")
        bot_message = {
            'text' : msg_content}
    
        message_headers = { 'Content-Type': 'application/json; charset=UTF-8'}
    
        http_obj = Http()
    
        response = http_obj.request(
            uri=url,
            method='POST',
            headers=message_headers,
            body=dumps(bot_message),
        )
    

    Remplacez l'élément suivant :

    • project_name : par le nom de votre projet
    • dataset : par le nom de votre ensemble de données
    • tablename : par le nom de votre table
    • hangout_room_url : par l'URL du webhook que vous avez précédemment copiée
  7. Dans l'onglet requirements.txt, collez le code suivant :

    # Function dependencies, for example:
    # package>=version
    google-cloud-pubsub==0.34.0
    google-cloud-storage==1.13.1
    google-cloud-bigquery==1.8.1
    google-cloud-core==0.29.1
    pytz==2018.7
    
  8. Dans le champ Fonction à exécuter, saisissez run_rule.

  9. Cliquez sur Créer.

  10. Cliquez sur la fonction getBillingAlert.

  11. Cliquez sur l'onglet Déclencheur.

  12. Copiez l'URL de la fonction Cloud. Vous utiliserez cette valeur ultérieurement pour planifier l'exécution de la fonction Cloud.

Tester la fonction Cloud

  1. Dans Cloud Console, accédez à Cloud Functions.

    Accéder à Cloud Functions

  2. Pour la fonction Cloud getBillingAlert, cliquez sur Actions.

  3. Cliquez sur Tester la fonction.

  4. Cliquez sur Tester la fonction.

    Un message contenant les données Cloud Billing est envoyé à votre salon Hangouts Chat.

Configurer Cloud Scheduler

Après avoir vérifié que vous pouvez exécuter la fonction, vous pouvez utiliser Cloud Scheduler pour exécuter la fonction à des intervalles planifiés.

Dans ce tutoriel, vous exécutez la fonction tous les jours à 10h. Cloud Scheduler utilise le format Cron pour la planification.

  1. Dans Cloud Console, accédez à Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Cliquez sur Créer une tâche.

  3. Dans le champ Nom, saisissez Billing-BigQuery.

  4. Dans le champ Description, saisissez Send Hangout message with Billing summary.

  5. Dans le champ Fréquence, saisissez 0 10 * * *.

  6. Sélectionnez votre fuseau horaire.

  7. Pour Cible, sélectionnez HTTP.

  8. Dans le champ URL, saisissez le point de terminaison de l'URL des fonctions.

  9. Laissez le champ Service vide.

  10. Cliquez sur Créer.

Nettoyer

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

Le moyen le plus simple d'éviter la facturation consiste à supprimer le projet Cloud que vous avez créé pour le tutoriel. Vous pouvez également supprimer les différentes ressources.

  1. Dans Cloud Console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étape suivante