En esta página se proporcionan instrucciones detalladas sobre cómo consultar y visualizar los registros mediante la interfaz de usuario de Grafana y la API Log Query para obtener estadísticas sobre los eventos y la actividad de tu servicio.
Después de recoger los registros de las cargas de trabajo y los servicios desplegados en Google Distributed Cloud (GDC) air-gapped, puedes empezar a analizarlos. Para analizar los registros, puedes visualizarlos y filtrarlos en paneles informativos de Grafana o acceder a ellos directamente desde la API Log Query mediante llamadas HTTP o gRPC para acceder a ellos de forma programática.
Puedes acceder a los registros de una de las dos formas siguientes:
- Paneles de Grafana: obtén estadísticas sobre el registro de actividad de tu proyecto a través de l panel de registros de tu instancia de Grafana. Este panel te permite consultar y localizar registros específicos, lo que proporciona una observabilidad de datos detallada adaptada a tus necesidades. Grafana ofrece una interfaz fácil de usar para filtrar y analizar los datos de tus cargas de trabajo, así como para crear paneles de control y paneles personalizados para una visualización completa.
- API Log Query: para acceder de forma programática, consulta los registros directamente desde la API Log Query de tu proyecto. La API Log Query es una API no Kubernetes que admite HTTP y gRPC, y te expone sus propios endpoints a ti. Accede a esta API solo dentro de una organización específica de Distributed Cloud siguiendo los métodos de acceso a la API estándar.
Antes de empezar
Para obtener los permisos que necesitas para consultar y visualizar los registros en la interfaz de usuario de Grafana, pide a tu administrador de IAM de la organización o a tu administrador de IAM del proyecto que te asigne uno de los roles predefinidos de visor de Grafana de la organización o de visor de Grafana del proyecto. En función del nivel de acceso y de los permisos que necesites, puedes obtener roles de Grafana en una organización o en un proyecto.
También puedes pedir a tu administrador de IAM del proyecto que te asigne el rol de consultor de la API Log Query en el espacio de nombres de tu proyecto para obtener los permisos que necesitas para consultar los registros de la API Log Query.
Para obtener más información sobre estos roles, consulta el artículo Preparar permisos de IAM.
Consultar y filtrar los registros
Selecciona uno de los siguientes métodos para crear consultas y filtrar los registros de las cargas de trabajo de tu proyecto:
Panel de registros de Grafana
En esta sección se describe cómo acceder a los registros mediante el panel de registros de Grafana.
Identificar el endpoint de Grafana
La siguiente URL es el endpoint de la instancia de Grafana de tu proyecto:
https://GDC_URL/PROJECT_NAMESPACE/grafana
Haz los cambios siguientes:
GDC_URL: la URL de tu organización en GDC.PROJECT_NAMESPACE: el espacio de nombres de tu proyecto.Por ejemplo, el endpoint de Grafana del proyecto
platform-obsde laorg-1organización eshttps://org-1/platform-obs/grafana.
Ver los registros en la interfaz de usuario de Grafana
Para consultar los registros en la interfaz de usuario de Grafana, sigue estos pasos:
- En la consola de GDC, selecciona tu proyecto.
- En el menú de navegación, selecciona Operaciones > Registro.
Haz clic en Ver todo en Grafana Loki.
Se abrirá una página con el endpoint de Grafana y se mostrará la interfaz de usuario.
En la interfaz de usuario, haz clic en explorar Explorar en el menú de navegación para abrir la página Explorar.
En el menú de la barra Explorar, selecciona una fuente de datos para recuperar los registros, según el tipo de universo:
Universos de una sola zona: selecciona una de las siguientes fuentes de datos para mostrar los datos de registro de la zona única de tu universo:
- Registros operativos: muestra los registros operativos.
- Registros de auditoría: muestra los registros de auditoría.
Universos multizona: Grafana puede conectarse a diferentes zonas y mostrar datos entre zonas. Selecciona una de las siguientes fuentes de datos para mostrar los datos de registro de cualquier zona de tu universo, independientemente de la zona en la que hayas iniciado sesión:
- Registros operativos ZONE_NAME: muestra los registros operativos de una zona concreta.
- Registros de auditoría ZONE_NAME: muestra los registros de auditoría de una zona concreta.
Además, para tener visualizaciones de datos entre zonas en un solo panel de control y añadir varias zonas a tu consulta, selecciona Mixto como fuente de datos.
Introduce una consulta para buscar registros en el panel de registros mediante expresiones de LogQL (Log Query Language). Puedes hacer este paso de una de las siguientes formas:
- Usa la interfaz interactiva del creador de consultas. A continuación, haz clic en Ejecutar consulta.
- Introduce la consulta directamente en el campo de texto y pulsa Mayús+Intro para ejecutarla.
En la página se muestran los registros que coinciden con tu consulta. Después de consultar los registros, puedes exportarlos. Haz clic en Exportar para descargar los registros en formato de texto sin formato o CSV. También puedes seleccionar un periodo para los registros.

Imagen 1 Opción de menú para consultar los registros de auditoría desde la interfaz de usuario de Grafana.
En la imagen 1, la opción Registros de auditoría muestra la interfaz que te permite crear consultas en Grafana para recuperar los registros de auditoría.
Para ver ejemplos de etiquetas y valores que puedes usar para consultar diferentes registros, consulta el artículo Consultas y etiquetas de ejemplo.
Seleccionar un periodo para los registros
Para consultar los registros en un periodo, sigue estos pasos:
En Grafana, haz clic en el menú Selector de tiempo.
En el menú, realiza una de las siguientes acciones:
- Selecciona opciones de periodo relativo, como los últimos 30 minutos.
- Define periodos absolutos personalizados eligiendo fechas y horas específicas en el calendario y haciendo clic en Aplicar periodo.
También puedes hacer clic en Cambiar configuración de tiempo para cambiar la configuración de Zona horaria y Año fiscal en los controles de periodo.
La configuración de tiempo se guarda por panel de control. Para obtener más información sobre las consultas en un periodo, consulta https://grafana.com/docs/loki/latest/reference/api/#query-loki-over-a-range-of-time.
API Log Query
En esta sección se describe cómo acceder a los registros mediante la API Log Query.
Identificar el endpoint de API de consulta de registros
La API Log Query expone los dos endpoints siguientes para consultar los registros de auditoría y operativos:
Endpoint de registro de auditoría:
audit-log-query-api.ORG_DOMAINEndpoint de registro operativo:
operational-log-query-api.ORG_DOMAIN
Sustituye ORG_DOMAIN por el nombre de dominio de la organización. Puedes ver esta propiedad con el comando gdcloud config list. El nombre de dominio debe seguir la sintaxis
org-name.zone.google.gdch.com. Por ejemplo, una organización llamada org-1,
en la zone1 zona y en un entorno de la prueba(s) tiene un dominio como
org-1.zone1.google.gdch.test.
La API Log Query tiene las tres opciones de endpoint siguientes:
- labels: muestra todas las etiquetas de un proyecto.
- labels/labels/LABEL/values: muestra los valores de etiquetas específicos de un proyecto.
- logs: muestra los registros de un proyecto específico.
Para obtener más información, consulta la documentación sobre la API.
Enviar una consulta
Envía una consulta al endpoint de API Log Query mediante clientes HTTP o gRPC.
HTTP
Sigue las instrucciones para
acceder directamente a la API con un cliente HTTP.
Puedes usar kubectl para gestionar la autenticación o gestionarla tú mismo.
Consulta la API Log Query mediante clientes HTTP como curl, wget o un cliente HTTP que crees y gestiones. En el siguiente ejemplo se usa la herramienta curl para consultar la API, y puedes usar un formato similar para los comandos wget:
Autentica la solicitud cURL:
- Descarga e instala la CLI de gdcloud.
Define la propiedad
core/organization_console_urlde gdcloud:gdcloud config set core/organization_console_url https://GDC_URLSustituye
GDC_URLpor la URL de una organización en GDC.Inicia sesión con el proveedor de identidades configurado:
gdcloud auth loginUsa tu usuario y contraseña para autenticarte e iniciar sesión.
Exporta el token de identidad de la cuenta especificada a una variable de entorno:
export TOKEN="$($HOME/gdcloud auth print-identity-token --audiences=https://LOG_QUERY_API_ENDPOINT)"Sustituye
LOG_QUERY_API_ENDPOINTpor el endpoint de API Log Query desde el que quieras consultar los registros y el dominio al que quieras conectarte. Por lo tanto, el valor de la marcaaudiencespuede ser, por ejemplo,https://operational-log-query-api.org-1.zone1.google.gdch.test.Cuando el inicio de sesión se realice correctamente, podrás usar el encabezado de autorización en tu solicitud cURL mediante el comando
gdcloud auth print-identity-token. Para obtener más información, consulta el artículo gdcloud auth print-identity-token.
Si quieres mostrar todas las etiquetas de un proyecto, envía la siguiente consulta:
curl -H "Authorization: Bearer ${TOKEN}" \ https://LOG_QUERY_API_ENDPOINT/v1/projects/PROJECT_NAMESPACE/labels \ -H "Content-Type: application/json" -vHaz los cambios siguientes:
LOG_QUERY_API_ENDPOINT: el endpoint de API Log Query desde el que quieras consultar los registros.PROJECT_NAMESPACE: el espacio de nombres de tu proyecto.
Si quieres mostrar los valores de etiquetas específicos de un proyecto, envía la siguiente consulta:
curl -H "Authorization: Bearer ${TOKEN}" \ https://LOG_QUERY_API_ENDPOINT/v1/projects/PROJECT_NAMESPACE/labels/labels/LABEL/values \ -H "Content-Type: application/json" -vHaz los cambios siguientes:
LOG_QUERY_API_ENDPOINT: el endpoint de API Log Query desde el que quieras consultar los registros.PROJECT_NAMESPACE: el espacio de nombres de tu proyecto.LABEL: la etiqueta específica cuyo valor quieras consultar.
Si quieres consultar los registros de un proyecto específico, crea una consulta
logs_filtere inclúyela en el cuerpo de la solicitud:curl -X GET -H "Authorization: Bearer ${TOKEN}" \ https://LOG_QUERY_API_ENDPOINT/v1/projects/PROJECT_NAMESPACE/logs \ -H "Content-Type: application/json" -d \ '{"logs_filter": {"labels_equal": {"LABEL": "LABEL_VALUE"}}}' -vHaz los cambios siguientes:
LOG_QUERY_API_ENDPOINT: el endpoint de API Log Query desde el que quieras consultar los registros.PROJECT_NAMESPACE: el espacio de nombres de tu proyecto.LABEL: la etiqueta específica cuyos registros quieras consultar.LABEL_VALUE: el valor de la etiqueta cuyos registros quieras consultar.
Consulta la documentación sobre la API para ver todas las opciones de creación de una consulta
logs_filter.
gRPC
gRPC es compatible con muchos lenguajes de programación y proporciona un método de comunicación más eficiente que los clientes HTTP.
Para consultar los registros mediante gRPC, debes cumplir los siguientes requisitos previos:
- Crea tu propia biblioteca de cliente basada en los buffers de protocolo proporcionados por Google.
- Implementa la autenticación en el cliente.
- Implementa reintentos.
Para obtener información sobre los búferes de protocolo, consulta la documentación sobre la API.
En el siguiente ejemplo se muestra cómo consultar los registros desde un programa de Go mediante un cliente gRPC no autenticado. En el ejemplo se da por hecho que has creado un paquete de Go que incluye un archivo de compilación de Bazel para importar dependencias de código:
Guarda el siguiente código en un programa de Go llamado
client.go:package main import ( "context" "crypto/tls" "flag" "fmt" "google.golang.org/grpc/credentials" "google.golang.org/grpc/metadata" pb "<import path to generated log query api protos>/pkg/apis/public/logging/v1/proto" "google.golang.org/grpc" ) var serverAddr = flag.String("server", "localhost:8080", "server address") func main() { flag.Parse() tc := credentials.NewTLS(&tls.Config{InsecureSkipVerify: true}) conn, err := grpc.Dial(*serverAddr, grpc.WithTransportCredentials(tc)) if err != nil { panic(error.Error(fmt.Errorf("create client connection failed: %v", err))) } defer conn.Close() c := pb.NewLogsClient(conn) md := metadata.Pairs("clienttest", "test") ctx := metadata.NewOutgoingContext(context.Background(), md) err = listLabels(ctx, c, "project-foo") if err != nil { panic(error.Error(err)) } if err := listLabelValues(ctx, c, "project-foo", "resource-bar"); err != nil { panic(error.Error(err)) } if err := listLogs(ctx, c, "project-foo", &pb.ListLogsFilter{ LabelsEqual: map[string]string{"resource-bar": "resource-bar-value"}, OrderAscending: true, }); err != nil { panic(error.Error(err)) } } // List all labels for a project. func listLabels(ctx context.Context, c pb.LogsClient, project string) error { lbr := &pb.ListLabelsRequest{ Parent: project, PageSize: 1000, // PageSize can be configured to limit the number of responses per page. } resp, err := c.ListLabels(ctx, lbr) if err != nil { return fmt.Errorf("list labels: %v", err) } fmt.Printf("%v", resp) return nil } // List specific label values for a project. func listLabelValues(ctx context.Context, c pb.LogsClient, project string, label string) error { lbr := &pb.ListLabelValuesRequest{ Parent: project, Label: label, PageSize: 1000, // PageSize can be configured to limit the number of responses per page. } resp, err := c.ListLabelValues(ctx, lbr) if err != nil { return fmt.Errorf("list label values: %v", err) } fmt.Printf("%v", resp) return nil } // List logs for a specific project. func listLogs(ctx context.Context, c pb.LogsClient, project string, lf *pb.ListLogsFilter) error { lbr := &pb.ListLogsRequest{ Parent: project, LogsFilter: lf, PageSize: 5, // PageSize can be configured to limit the number of responses per page. } resp, err := c.ListLogs(ctx, lbr) if err != nil { return fmt.Errorf("list logs: %v", err) } fmt.Printf("logs: %v", resp) return nil }Ejecuta el programa de Go:
go run PATH_TO_API/client.go -server=LOG_QUERY_API_ENDPOINT:443Haz los cambios siguientes:
PATH_TO_API: la ruta al archivo de la API.LOG_QUERY_API_ENDPOINT: el endpoint de API Log Query desde el que quieras consultar los registros.
Si no se especifica la marca del servidor, la solicitud predeterminada se envía a
localhost.
Consultas y etiquetas de ejemplo
A continuación, se indican algunas de las etiquetas predeterminadas que puedes usar para consultar los registros:
cluster: el nombre del clúster.namespace: el espacio de nombres de tu proyecto.node: el nombre del nodo.pod: el nombre del pod.container: el nombre del contenedor.
En los siguientes ejemplos de código se muestra cómo usar etiquetas y valores para consultar diferentes registros:
Seleccionar registros de servidor:
{cluster="admin", namespace="kube-system", resources="k8s_container", container="kube-apiserver"}Seleccionar registros de auditoría de clúster:
{cluster="admin", resources="k8s_audit"}