Configurar exportaciones

En esta página se explica cómo exportar trazas mediante la API Cloud Trace y la CLI de Google Cloud. Debes usar la versión 274.0.0 de Google Cloud CLI o una posterior. Para obtener información sobre cómo actualizar la CLI de Google Cloud, consulta gcloud components update .

Algunas muestras de esta página se han generado con curl. Para obtener información sobre cómo configurar esta herramienta, consulta Usar curl.

Para ver un ejemplo de cómo usar los comandos de la CLI de Google Cloud para enumerar, crear, describir, actualizar y eliminar un receptor, consulta el ejemplo integral.

Terminología

Para simplificar los ejemplos de esta página, se han usado variables de entorno.

En los ejemplos de Google Cloud CLI se usan las siguientes variables de entorno:

  • SINK_ID: el nombre o el identificador del receptor. Por ejemplo, my-sink. No es necesario que proporciones el comando completo a la CLI de Google Cloud, ya que puede determinar tu Google Cloud proyecto.
  • DESTINATION: almacena el nombre completo del destino. Debe ser un conjunto de datos de BigQuery. Por ejemplo, un destino válido es:

    bigquery.googleapis.com/projects/DESTINATION_PROJECT_NUMBER/datasets/DATASET_ID
    

    donde DESTINATION_PROJECT_NUMBER es el Google Cloud número de proyecto del destino y DATASET_ID es el identificador del conjunto de datos de BigQuery.

En los ejemplos de curl se usan las siguientes variables de entorno:

  • ACCESS_TOKEN: almacena el token de autorización. Para obtener más información, consulta Usar curl.
  • PROJECT_ID: almacena el identificador o el número del proyecto. Google Cloud
  • PROJECT_NUMBER: almacena el Google Cloud número de proyecto.
  • SINK_ID: el nombre o el identificador del receptor. Por ejemplo, my-sink.
  • SINK_BODY: almacena la descripción de un recurso TraceSink. El recurso TraceSink incluye un nombre y el destino del receptor. El nombre debe especificar el Google Cloud número del proyecto.
  • DESTINATION: almacena el nombre completo del destino. Debe ser un conjunto de datos de BigQuery.

Configurar el destino

Para exportar trazas a BigQuery, haz lo siguiente:

  1. Crea el conjunto de datos de destino.

  2. Crea el receptor con la API Cloud Trace o Google Cloud CLI. Para obtener más información, consulta el artículo Crear un receptor.

  3. Asigna al receptor el rol dataEditor en tu conjunto de datos de BigQuery:

    1. Obtiene la identidad del escritor del receptor. Para obtener información sobre la identidad del escritor, consulta Propiedades y terminología de los receptores.

      La identidad de escritura de un receptor se incluye en los datos de respuesta del comando de creación. También se incluye en los datos de respuesta del comando list.

    2. Añade la identidad de escritura del receptor como cuenta de servicio a tu conjunto de datos de BigQuery y asígnale el rol Editor de datos de BigQuery.

      • Para añadir los permisos con la consola de Google Cloud , consulta el artículo sobre cómo controlar el acceso a un conjunto de datos.

      • Para añadir los permisos con la CLI de Google Cloud, usa el comando add-iam-policy-binding y proporciona el identificador de tu proyecto Google Cloudy la identidad de escritura del receptor:

        gcloud projects add-iam-policy-binding ${DESTINATION_PROJECT_ID} \
          --member serviceAccount:${WRITER_IDENTITY} \
          --role roles/bigquery.dataEditor
        

        En el comando anterior, WRITER_IDENTITY es una variable de entorno que almacena la identidad de escritura del receptor y DESTINATION_PROJECT_ID es el identificador de proyecto del conjunto de datos de BigQuery. Google Cloud

Mostrar sumideros

Para enumerar todos los receptores de tu proyecto Google Cloud , incluidas sus identidades de escritor, invoca el método traceSinks.list.

gcloud

Para enumerar los receptores definidos con el proyecto predeterminado mediante la CLI de Google Cloud, ejecuta el siguiente comando:

gcloud alpha trace sinks list

Protocolo

Para enumerar los receptores mediante curl, envía una solicitud GET a:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Por ejemplo, la siguiente solicitud obtiene todos los receptores:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Mostrar los detalles de un sumidero específico

Para mostrar los detalles de un receptor específico de tu proyecto Google Cloud, invoca el método traceSinks.get.

gcloud

Para mostrar los detalles del receptor cuyo identificador se almacena en SINK_ID con la CLI de Google Cloud, ejecuta el siguiente comando:

gcloud alpha trace sinks describe ${SINK_ID}

Protocolo

Para mostrar los detalles del receptor cuyo identificador se almacena en SINK_ID mediante curl, envía una solicitud GET a:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/%{SINK_ID}

Por ejemplo, la siguiente solicitud obtiene los detalles del receptor especificado:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Crear un sumidero

Para crear un receptor en tu proyecto Google Cloud , invoca el método traceSinks.create. El destino de un receptor debe ser un conjunto de datos de BigQuery.

Este conjunto de datos debe existir antes de crear el receptor. Trace no verifica la existencia del destino. Consulta Crear conjuntos de datos para obtener información sobre cómo crear conjuntos de datos de BigQuery.

gcloud

Para crear un receptor con la CLI de Google Cloud, ejecuta el siguiente comando:

gcloud alpha trace sinks create ${SINK_ID} ${DESTINATION}

Protocolo

Para crear un receptor con curl, envía una solicitud POST a:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Por ejemplo, para crear un receptor llamado test_sink para exportar intervalos de traza a test_dataset en el proyecto con ${PROJECT_NUMBER}, define la variable de entorno SINK_BODY como se muestra a continuación:

SINK_BODY='{"name":"projects/12345/traceSinks/test_sink","output_config":{"destination":"bigquery.googleapis.com/projects/12345/datasets/test_dataset"}}'

Para crear el receptor, ejecuta el siguiente comando:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  --header "Content-Type: application/json"  -X POST -d ${SINK_BODY} https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Puede que transcurran varios minutos después de crear un receptor antes de que los intervalos de traza se exporten al destino.

Eliminar un receptor

Para eliminar un receptor que esté en tu Google Cloud proyecto, invoca el comando traceSinks.delete.

gcloud

Para eliminar el receptor cuyo identificador se almacena en SINK_ID con la CLI de Google Cloud, ejecuta el siguiente comando:

gcloud alpha trace sinks delete ${SINK_ID}

Protocolo

Para eliminar el receptor cuyo identificador se almacena en SINK_ID con curl, envía una solicitud DELETE a:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Por ejemplo, la siguiente solicitud elimina un receptor:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  -X DELETE https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Actualizar un sumidero

Para actualizar un receptor que esté en tu Google Cloud proyecto, invoca el comando traceSinks.patch.

Este conjunto de datos debe existir antes de crear el receptor. Trace no verifica la existencia del destino.

gcloud

Para actualizar el receptor cuyo identificador se almacena en SINK_ID con la CLI de Google Cloud, ejecuta el siguiente comando:

gcloud alpha trace sinks update ${SINK_ID} ${DESTINATION}

La variable de entorno DESTINATION almacena el nuevo destino del sumidero.

Protocolo

Para actualizar el destino del receptor cuyo identificador se almacena en SINK_ID mediante curl, envía una solicitud PATCH a:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Por ejemplo, la siguiente solicitud actualiza el destino de un receptor:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  --header "Content-Type: application/json"  -X PATCH -d ${SINK_BODY} https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}?update_mask=output_config.destination

Para ver un ejemplo de SINK_BODY, consulta el ejemplo para crear un receptor.

Puede que tarden varios minutos en exportarse los intervalos de traza a la nueva ubicación después de actualizar un receptor.

Ejemplo completo

En esta sección se muestra cómo usar los comandos de la CLI de Google Cloud para enumerar, crear, describir, actualizar y eliminar un receptor. Los comandos se han ejecutado en un proyecto con el identificador a-sample-project. Este proyecto se ha preconfigurado para que contenga dos conjuntos de datos de BigQuery. Por último, en estos ejemplos, el receptor y el destino están en el mismo proyecto. No es obligatorio. El receptor y el destino pueden estar enGoogle Cloud proyectos diferentes.

Pasos de la configuración

  1. Verifica la configuración del proyecto predeterminado:

    $ gcloud config list
    

    Respuesta de ejemplo:

    [compute]
    zone = us-east1-b
    [core]
    account = user@example.com
    disable_usage_reporting = True
    project = a-sample-project
    
    Your active configuration is: [default]
    
  2. Verifica que Google Cloud CLI sea al menos la versión 274.0.0:

    $ gcloud --version
    

    Respuesta de ejemplo:

    Google Cloud SDK 275.0.0
    alpha 2020.01.03
    beta 2020.01.03
    bq 2.0.51
    core 2020.01.03
    gsutil 4.46
    kubectl 2020.01.03
    
  3. Identifica los conjuntos de datos disponibles en el proyecto predeterminado:

    $ bq ls
    

    Respuesta de ejemplo:

        datasetId
     ---------------
      dataset_1
      dataset_other
    

    Ten en cuenta que la primera vez que uses los comandos bq, es posible que tengas que seleccionar el proyecto.

Configurar las variables de entorno

  1. Define las variables de entorno que usa el comando de Google Cloud CLI:

    $ PROJECT_ID=a-sample-project
    $ PROJECT_NUMBER=123456789000
    $ SINK_ID=a-sample-sink
    $ DATA_SET_NAME=dataset_1
    $ DESTINATION=bigquery.googleapis.com/projects/${PROJECT_NUMBER}/datasets/${DATA_SET_NAME}
    

    En este ejemplo, el destino y el receptor están en el mismo proyecto. No es obligatorio. El receptor y el destino pueden estar enGoogle Cloud proyectos diferentes.

  2. Verifica los ajustes:

    $ echo $SINK_ID
    a-sample-sink
    $ echo $DATA_SET_NAME
    dataset_1
    $ echo $DESTINATION
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_1
    

Mostrar receptores

Para enumerar todos los receptores, ejecuta el siguiente comando:

$ gcloud alpha trace sinks list

Como este proyecto no tiene ningún receptor, la respuesta es la siguiente:

Listed 0 items.

Crear un sumidero

  1. Para crear un receptor, ejecuta el siguiente comando:

    $ gcloud alpha trace sinks create ${SINK_ID} ${DESTINATION}
    

    Respuesta de ejemplo:

    You can give permission to the service account by running the following command.
    gcloud projects add-iam-policy-binding bigquery-project \
    --member serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com \
    --role roles/bigquery.dataEditor
    

    Ten en cuenta que el nombre de la cuenta de servicio incluye export-0000001cbe991a08-3434. El número 0000001cbe991a08 es la representación hexadecimal de PROJECT_NUMBER. El valor 3434 es un valor aleatorio.

    Antes de ejecutar la CLI de Google Cloud en la respuesta anterior, debes sustituir bigquery-project por el identificador de tu proyecto.

  2. Comprueba que se ha creado el sumidero:

    $ gcloud alpha trace sinks list
    

    Respuesta de ejemplo:

    NAME           DESTINATION                                                       WRITER_IDENTITY
    a-sample-sink  bigquery.googleapis.com/projects/123456789000/datasets/dataset_1  export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    
  3. Describe el sumidero detalladamente:

    $ gcloud alpha trace sinks describe ${SINK_ID}
    

    Respuesta de ejemplo:

    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_1
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    
  4. Concede el permiso bigquery.dataEditor a la identidad de escritura del receptor. El comando sink create devuelve un comando de la CLI de Google Cloud que puedes usar para actualizar el permiso.

    Para que este comando se ejecute correctamente, haz lo siguiente:

    • Asegúrate de que tienes permiso para modificar los permisos del destino.
    • Sustituye bigquery-project por el identificador de tu proyecto:
    gcloud projects add-iam-policy-binding ${PROJECT_ID} --member serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com --role roles/bigquery.dataEditor
    

    Ten en cuenta que la primera entrada de esta respuesta de ejemplo es la identidad del escritor del receptor:

    Updated IAM policy for project [a-sample-project].
    bindings:
    - members:
      - serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
      role: roles/bigquery.dataEditor
    - members:
      - user:user@example.com
      role: roles/cloudtrace.admin
    - members:
      - serviceAccount:service-123456789000@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:service-123456789000@container-engine-robot.iam.gserviceaccount.com
      role: roles/container.serviceAgent
    - members:
      - serviceAccount:service-123456789000@container-analysis.iam.gserviceaccount.com
      role: roles/containeranalysis.ServiceAgent
    - members:
      - serviceAccount:service-123456789000@containerregistry.iam.gserviceaccount.com
      role: roles/containerregistry.ServiceAgent
    - members:
      - serviceAccount:123456789000-compute@developer.gserviceaccount.com
      - serviceAccount:123456789000@cloudservices.gserviceaccount.com
      role: roles/editor
    - members:
      - user:user@example.com
      role: roles/owner
    etag: BwWbqGVnShQ=
    version: 1

Cambiar el destino del sumidero

En este ejemplo, el destino cambia de dataset_1 a dataset_other:

  1. Actualiza las variables de entorno DATA_SET_NAME y DESTINATION:

    $ DATA_SET_NAME=dataset_other
    $ DESTINATION=bigquery.googleapis.com/projects/${PROJECT_NUMBER}/datasets/${DATA_SET_NAME}
    $ echo ${DESTINATION}
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    

    No olvides actualizar el valor de DESTINATION después de modificar DATA_SET_NAME o PROJECT_NUMBER.

  2. Cambia el destino del sumidero:

    $ gcloud alpha trace sinks update ${SINK_ID} ${DESTINATION}
    

    Un ejemplo de salida es el siguiente:

    Updated [https://cloudtrace.googleapis.com/v2beta1/projects/123456789000/traceSinks/a-sample-sink].
    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    

    Ejecuta el comando describe para ver los detalles del receptor:

    $ gcloud alpha trace sinks describe ${SINK_ID}
    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    

    Cuando actualizas el destino de un receptor, no cambias la identidad del escritor del receptor y, por lo tanto, no tienes que actualizar los permisos del receptor.

Eliminar un sumidero

Para eliminar un receptor, ejecuta el siguiente comando:

$ gcloud alpha trace sinks delete ${SINK_ID}

El resultado de ejemplo es el siguiente:

Really delete sink [a-sample-sink]?

Do you want to continue (y/N)? y

Deleted [https://cloudtrace.googleapis.com/v2beta1/projects/123456789000/traceSinks/a-sample-sink].

Para verificar el resultado, ejecuta el comando list:

$ gcloud alpha trace sinks list
Listed 0 items.

Validación

Puede usar la métrica exported_span_count de Cloud Monitoring como base para un gráfico que muestre los errores cuando se exportan datos de Trace a BigQuery. También puedes crear una política de alertas para recibir una notificación si se produce un error en una exportación.

Crear un gráfico

Para ver las métricas de un recurso monitorizado con el explorador de métricas, haz lo siguiente:

  1. En la Google Cloud consola, ve a la página  Explorador de métricas:

    Ve al explorador de métricas.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
  3. En el elemento Métrica, despliega el menú Seleccionar una métrica, introduce Spans Exported to BigQuery en la barra de filtros y, a continuación, usa los submenús para seleccionar un tipo de recurso y una métrica específicos:
    1. En el menú Recursos activos, selecciona Cloud Trace.
    2. En el menú Categorías de métricas activas, seleccione Bigquery_explort.
    3. En el menú Métricas activas, selecciona Spans Exported to BigQuery (Spans exportados a BigQuery).
    4. Haz clic en Aplicar.
  4. Configura cómo se ven los datos.
    1. Deje vacío el elemento Filter. Si elige esta opción, el gráfico mostrará todos los datos de estado.
    2. En el elemento Agregación, selecciona Media en el primer menú y status en el segundo.

      Estas selecciones dan como resultado una sola serie temporal para cada valor de estado único. En la siguiente tabla se muestran los valores de estado posibles:

      Valor de EstadoSignificado y acción correctiva
      ok La transferencia de datos se ha realizado correctamente.
      bigquery_permission_denied No se han podido exportar los datos al destino. La exportación puede fallar por alguno de los siguientes motivos:
      • La cuenta de servicio del sumidero de trazas no tiene permiso para escribir en el conjunto de datos de destino. Consulta Permiso denegado.
      • El destino del conjunto de datos del receptor no existe. Consulta Destino no válido.
      • Errores internos de BigQuery. Se trata de un error inesperado y transitorio.
      bigquery_quota_exceeded El proyecto de BigQuery ha superado su cuota de streaming de BigQuery. Consulta Cuota agotada.
      invalid_span
      internal_errors

      invalid_destination
      Error desconocido que impide la exportación de datos a BigQuery. Para resolver esta situación, póngase en contacto con el equipo de asistencia técnica o haga una pregunta en Stack Overflow. Para obtener más información, consulta el artículo Obtener asistencia.

    Para obtener más información sobre cómo configurar un gráfico, consulta el artículo Seleccionar métricas al utilizar el explorador de métricas.

Si el receptor de trazas exporta datos correctamente, el gráfico creado con los ajustes anteriores mostrará una sola serie temporal con el valor de estado ok. Si se producen errores durante la exportación, se mostrarán series temporales adicionales en el gráfico.

Crear una política de alertas

Para crear una política de alertas que se active si hay errores al exportar datos de Cloud Trace a BigQuery, usa los siguientes ajustes.

Campo Nueva condición

Valor
Recurso y métrica En el menú Recursos, selecciona Cloud Trace.
En el menú Categorías de métricas, selecciona Bigquery_export.
En el menú Métricas, selecciona Spans Exported to BigQuery (Spans exportados a BigQuery).
Filtro status != ok
En series temporales
Agrupación por serie temporal
status
Entre series temporales
Agregación de series temporales
sum
Ventana de tiempo 1 m
Función de ventana móvil rate
Configurar el activador de alertas
Campo

Valor
Tipo de condición Threshold
Activador de alerta Any time series violates
Posición del umbral Above threshold
Valor de umbral 0
Ventana de repetición de la prueba 1 minute

Usar CURL

En esta sección se describen las convenciones y la configuración que se usan para invocar la API Cloud Trace con la herramienta curl:

Autenticación

  1. Crea una variable de entorno para almacenar el identificador de tu proyecto: Google Cloud

    PROJECT_ID=my-project
    
  2. Crea una variable de entorno para almacenar el Google Cloud número de proyecto:

    PROJECT_NUMBER=12345
    
  3. Autentica Google Cloud CLI:

    gcloud auth login
    
  4. Define el identificador de proyecto predeterminado: Google Cloud

    gcloud config set project ${PROJECT_ID}
    
  5. Crea un token de autorización y guárdalo en una variable de entorno:

    ACCESS_TOKEN=`gcloud auth print-access-token`
    
  6. Verifica el token de acceso:

    echo ${ACCESS_TOKEN}
    

    La respuesta al comando debe ser una cadena larga de caracteres. Por ejemplo, en un sistema, la respuesta empieza así:

    y29.GluiBjo....
    

Invocando curl

Cada comando curl incluye un conjunto de argumentos, seguido de la URL de un recurso de la API Cloud Trace. Entre los argumentos habituales se incluyen los valores especificados por las variables de entorno PROJECT_ID y ACCESS_TOKEN.

Cada invocación de curl tiene la siguiente forma general:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" [OTHER_ARGS]
https://cloudtrace.googleapis.com/[API_VERSION]/projects/${PROJECT_ID}/[RESOURCE]

donde:

  • [OTHER_ARGS] (Opcional): omite este campo si vas a enviar una solicitud GET. Para otros tipos de solicitudes HTTP, sustituye este marcador de posición por el tipo de solicitud y los datos adicionales necesarios para satisfacer la solicitud.
  • [API_VERSION]: especifica la versión de la API.
  • [RESOURCE]: especifica el nombre del recurso de la API Cloud Trace.

Por ejemplo, para mostrar las 1000 trazas más recientes de tu proyecto, ejecuta lo siguiente:

curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" https://cloudtrace.googleapis.com/v1/projects/${PROJECT_ID}/traces

Solución de problemas

En esta sección se incluye información para solucionar problemas que pueden surgir al configurar una exportación.

Error de argumento no válido en el conjunto de datos

El siguiente mensaje de error indica que el nombre del conjunto de datos no es válido:

ERROR: (gcloud.alpha.trace.sinks.create) INVALID_ARGUMENT: Request contains an invalid argument.
- '@type': type.googleapis.com/google.rpc.DebugInfo
  detail: '[ORIGINAL ERROR] generic::invalid_argument: sink destination is malformed:
    bigquery.googleapis.com/projects/123456789000/datasets/a-sample-project:dataset_1.

El error se debe a que el destino incluye el identificador del proyecto, Google Cloud, como calificador del nombre del conjunto de datos.a-sample-project

Para resolver este error, sustituya a-sample-project:dataset_1 por dataset_1 y, a continuación, ejecute el comando de creación.

Ten en cuenta que puedes enumerar tus conjuntos de datos con el comando bq ls.

No se reciben datos de seguimiento

Hay varios motivos por los que es posible que no reciba datos de traza en BigQuery.

Destino no válido

Comprueba que el nombre del conjunto de datos y el número de proyecto sean correctos.

  • Para verificar que el nombre del conjunto de datos sea correcto. Para ver una lista de los conjuntos de datos de tu proyecto actual, ejecuta bq ls.

    Si has elegido usar variables de entorno, comprueba que el valor de cada variable sea correcto ejecutando un comando echo. Por ejemplo, comprueba que el destino sea correcto:

    $ echo ${DESTINATION}
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    

    Como DESTINATION depende del valor de PROJECT_NUMBER y DATA_SET_NAME, estas dos variables deben definirse primero. Además, si modificas cualquiera de estas dos variables, debes actualizar el valor almacenado en DESTINATION.

  • Para determinar el número de proyectos que tienes, ejecuta el siguiente comando:

    gcloud projects list --filter="${PROJECT_ID}"
    

    Puedes definir PROJECT_NUMBER de forma programática con el siguiente comando:

    $ PROJECT_NUMBER=`gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)"`
    

Permisos no válidos

Verifica que se haya concedido a la cuenta de servicio el rol de DataEditor en BigQuery. Para verificar los permisos, ejecuta el siguiente comando:

$ gcloud projects get-iam-policy ${PROJECT_ID}

La respuesta de este comando describe todos los enlaces de IAM. En este caso, el resultado es el que se muestra. Ten en cuenta que la identidad del escritor del receptor tiene el rol dataEditor:

bindings:
- members:
  - serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
  role: roles/bigquery.dataEditor
- members:
  [Note, content truncated]

Cuota agotada

Si has estado recibiendo datos y, de repente, dejan de llegar o están incompletos, es posible que estés agotando tu cuota de streaming de BigQuery. Para consultar tu cuota, ve a la página IAM y administración y selecciona Cuotas. Busca la API de BigQuery. Hay dos entradas relevantes: Filas de streaming por minuto y por recurso, Bytes de streaming por minuto y por recurso.

Ir a Cuotas

Siguientes pasos

Para obtener información sobre el esquema de BigQuery, consulte Exportar a BigQuery.