Configuración de mensajes de chat automatizados con el resumen de Facturación de Cloud

En este instructivo exportarás datos de la Facturación de Cloud a BigQuery y crearás una Cloud Function y un trabajo de Cloud Scheduler para enviar mensajes de chat diarios que resuman los datos de la Facturación de Cloud. Si exportas todos los cargos a BigQuery, puedes consultar los datos para agregar los costos. Esta configuración proporciona información sobre los cargos diarios del uso de Google Cloud sin que tengas que buscar los cargos todos los días.

Este documento está dirigido a desarrolladores y administradores de facturación que deseen obtener más información sobre los gastos asociados a Google Cloud. Se presupone que estás familiarizado con la creación de una cuenta de facturación de Cloud y que ya usas Hangouts Chat.

En el siguiente diagrama se ilustran los componentes de Google Cloud que se usan en el instructivo.

Diagrama de arquitectura que muestra cómo fluyen los datos desde la Facturación de Cloud hasta Hangouts Chat.

Los datos fluyen desde la Facturación de Cloud hacia BigQuery, entre Cloud Functions y BigQuery, hasta el webhook de Hangouts Chat. Cloud Scheduler activa la Cloud Function.

Objetivos

  • Habilitar la exportación de datos de la Facturación de Cloud a BigQuery.
  • Crear una Cloud Function y enviar un mensaje de chat con los resultados de la consulta.
  • Probar el servicio.
  • Crear un trabajo de Cloud Scheduler para invocar la Cloud Function todos los días.

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud sean aptos para obtener una prueba gratuita.

Cuando finalices este instructivo, podrás borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta cómo hacer una limpieza.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. En Cloud Console, activa Cloud Shell.

    Activar Cloud Shell

    En la parte inferior de Cloud Console, se inicia una sesión de Cloud Shell en la que se muestra una ventana de línea de comandos. Cloud Shell es un entorno de shell que tiene el SDK de Cloud preinstalado, incluida la herramienta de línea de comandos de gcloud, y valores ya establecidos para el proyecto actual. La inicialización de la sesión puede tomar unos minutos.

Habilitación de la exportación de datos de la Facturación de Cloud a BigQuery

Para exportar los datos de la Facturación de Cloud a BigQuery, debes crear una tabla del conjunto de datos de destino en BigQuery y, luego, configurar la Facturación de Cloud a fin de exportar los datos de facturación a ese conjunto de datos.

Crea un conjunto de datos en BigQuery

En este instructivo debes crear un conjunto de datos en el mismo proyecto de Cloud en el que está la app.

Si ya tienes un conjunto de datos en otro proyecto de Cloud, puedes compartir el conjunto de datos con la cuenta de servicio y pasar a la siguiente sección.

  1. En Cloud Console, ve a la página de BigQuery.

    Ir a la página de BigQuery

  2. En Recursos, haz clic en el nombre del proyecto de Cloud.

  3. Para crear una tabla de destino en BigQuery donde se almacenen los datos de la Facturación de Cloud, haz clic en Crear conjunto de datos.

  4. En el campo ID de conjunto de datos, ingresa billing_data.

  5. Haz clic en Crear conjunto de datos.

Exporta datos de la Facturación de Cloud a BigQuery

  1. En Cloud Console, ve a la página de Facturación.

    Ir a la página de Facturación

  2. Selecciona la cuenta de facturación de Cloud.

  3. Haz clic en Exportación de la facturación.

  4. Haz clic en Editar la configuración.

  5. Selecciona el proyecto de Cloud que creaste para este instructivo.

  6. Selecciona el conjunto de datos billing_data que creaste antes.

  7. Haz clic en Guardar.

La cuenta de facturación de Cloud está configurada para exportar datos a BigQuery. El proceso de exportación puede demorar hasta 24 horas.

Obtén el nombre de la tabla del conjunto de datos

  1. En Cloud Console, ve a la página de BigQuery.

    Ir a la página de BigQuery

  2. En Recursos, haz clic en el nombre del proyecto de Cloud.

  3. Para expandir haz clic en billing_data.

  4. Haz clic en el nombre de la tabla que se creó como resultado del proceso de exportación. El nombre comienza con gcp_billing_export_v1.

  5. Haz clic en Consultar tabla.

  6. Guarda el nombre de la tabla del conjunto de datos, ya que lo usarás para personalizar el archivo index.php más adelante en el instructivo.

La instrucción de SQL contiene el nombre de la tabla del conjunto de datos después de la palabra clave FROM en el formato project_name.dataset.table_name.

  • project_name representa el nombre del proyecto de Cloud.
  • dataset representa el nombre del conjunto de datos.
  • table_name representa el nombre de la tabla.

El siguiente es un ejemplo de nombre de tabla del conjunto de datos: myproject.billing_data.gcp_billing_export_v1_000000_000000_000000.

Creación de una sala de Hangouts Chat

  1. Ve a la aplicación de Hangouts Chat.
  2. Haz clic en el cuadro de búsqueda Buscar personas, salas y bots y, luego, en Crear una sala.
  3. En el campo Nombre de la sala, ingresa GCP_Billing.
  4. Haz clic en Crear.
  5. Haz clic en el menú de la sala GCP_Billing y, luego, selecciona Configurar webhooks.

    Menú desplegable que se usa a fin de configurar webhooks para la sala “GCP_Billing”.

  6. En el campo Nombre, ingresa gcp_billing_webhook.

  7. Haz clic en Guardar. Toma nota de la URL del webhook, ya que la necesitarás más adelante en el instructivo.

Creación de una Cloud Function

  1. En Cloud Console, ve a Cloud Functions.

    Ir a Cloud Functions

  2. Haz clic en Crear función.

  3. En el campo Nombre, ingresa getBillingAlert.

  4. En el menú desplegable Memoria asignada, selecciona 128 MiB.

  5. En el menú desplegable Entorno de ejecución, selecciona Python 3.7.

  6. En la pestaña main.py, pega el siguiente código:

    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),
        )
    

    Reemplaza lo siguiente:

    • project_name: nombre del proyecto.
    • dataset: nombre del conjunto de datos.
    • tablename: nombre de la tabla.
    • hangout_room_url: URL del webhook que copiaste antes.
  7. En la pestaña requirements.txt, pega el siguiente código:

    # 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. En el campo Función que se ejecutará, ingresa run_rule.

  9. Haz clic en Crear.

  10. Haz clic en la función getBillingAlert.

  11. Haz clic en la pestaña Activador.

  12. Copia la URL de Cloud Function. Usarás este valor más adelante para programar la ejecución de la Cloud Function.

Prueba de la Cloud Function

  1. En Cloud Console, ve a Cloud Functions.

    Ir a Cloud Functions

  2. En la Cloud Function getBillingAlert, haz clic en Acciones.

  3. Haz clic en Probar función.

  4. Haz clic en Probar la función.

    Se envía un mensaje con los datos de la Facturación de Cloud a la sala de Hangouts Chat.

Configuración de Cloud Scheduler

Después de verificar que la función se ejecuta correctamente, puedes usar Cloud Scheduler para ejecutarla en intervalos programados.

En este instructivo ejecutas la función todos los días a las 10 a.m. Cloud Scheduler usa el formato cron para el programa.

  1. En Cloud Console ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Haz clic en Crear trabajo.

  3. En el campo Nombre, ingresa Billing-BigQuery.

  4. En el campo Descripción, ingresa Send Hangout message with Billing summary.

  5. En el campo Frecuencia, ingresa 0 10 * * *.

  6. Selecciona tu zona horaria.

  7. En Destino, selecciona HTTP.

  8. En el campo URL, ingresa el extremo de URL de las funciones.

  9. Deja en blanco el campo Servicio.

  10. Haz clic en Crear.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto de Cloud que creaste para el instructivo. Como alternativa puedes borrar los recursos individuales.

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a la página Administrar recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de diálogo, escribe el ID del proyecto y haz clic en Cerrar para borrar el proyecto.

Próximos pasos