Esta página fornece instruções detalhadas sobre como consultar e visualizar seus registros usando a interface do usuário do Grafana para receber insights sobre os eventos e a atividade do seu serviço.
Depois de coletar registros das cargas de trabalho e serviços implantados no appliance isolado do Google Distributed Cloud (GDC), você pode começar a analisá-los. Para analisar os registros, visualize e filtre-os em painéis informativos do Grafana ou chamadas gRPC para acesso programático.
Você pode acessar seus registros da seguinte maneira:
- Painéis do Grafana: tenha insights sobre o registro de atividades do seu projeto no painel de registros da sua instância do Grafana. Com ele, é possível consultar e identificar registros específicos, oferecendo observabilidade granular de dados adaptada às suas necessidades. O Grafana oferece uma interface fácil de usar para filtrar e analisar dados de carga de trabalho, além de criar dashboards e painéis personalizados para uma visualização abrangente.
Antes de começar
Para receber as permissões necessárias para consultar e visualizar registros na interface do usuário do Grafana, peça ao administrador do IAM da organização ou do projeto para conceder a você um dos papéis predefinidos de leitor do Grafana da organização ou do projeto. Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis do Grafana em uma organização ou um projeto.
Como alternativa, para receber as permissões necessárias para consultar registros da API Log Query, peça ao administrador do IAM do projeto para conceder a você a função de consultor da API Log Query no namespace do projeto.
Para mais informações sobre esses papéis, consulte Preparar permissões do IAM.
Criar consultas para seus registros
Ao consultar registros na UI da instância de monitoramento do sistema, é possível escolher a fonte de dados para recuperar registros operacionais do projeto e ter uma visão integrada das consultas. Para filtrar os resultados, pesquise registros por rótulos usando expressões da linguagem de consulta. Por exemplo, é possível definir os rótulos cluster
e namespace
nas consultas com os valores que identificam o cluster e o namespace do projeto, respectivamente.
Endpoint da instância de monitoramento do sistema
Para operador de aplicativos (AO)
O URL a seguir é o endpoint da instância de monitoramento do seu projeto:
https://GDC_URL/PROJECT_NAMESPACE/grafana
Substitua:
- GDC_URL: o URL da sua organização no GDC.
- PROJECT_NAMESPACE: o namespace do projeto.
Para administradores da plataforma (PA)
O URL a seguir é o endpoint da instância de monitoramento do seu projeto:
https://GDC_URL/platform-obs/grafana
Substitua GDC_URL pelo URL da sua organização no GDC.
Consultar e filtrar seus registros
Selecione um dos métodos a seguir para criar consultas e filtrar registros das cargas de trabalho do seu projeto:
Nesta seção, descrevemos como acessar seus registros usando o painel "Registro" no Grafana.
Identificar seu endpoint do Grafana
Para operador de aplicativos (AO)
O URL a seguir é o endpoint da instância de monitoramento do seu projeto:
https://GDC_URL/PROJECT_NAMESPACE/grafana
Substitua:
- GDC_URL: o URL da sua organização no GDC.
- PROJECT_NAMESPACE: o namespace do projeto.
Para administradores da plataforma (PA)
O URL a seguir é o endpoint da instância de monitoramento do seu projeto:
https://GDC_URL/platform-obs/grafana
Substitua GDC_URL pelo URL da sua organização no GDC.
Ver registros na interface do usuário do Grafana
Consultar registros na interface do usuário do Grafana:
- No console do GDC, selecione seu projeto.
- No menu de navegação, selecione Operações > Logging.
- Clique em Ver tudo no Grafana Loki.
Uma nova página abre seu endpoint do Grafana e mostra a interface do usuário.
- Na interface do usuário, clique em Análise Análise no menu de navegação para abrir a página Análise.
- No menu da barra Analisar, selecione uma fonte de dados para recuperar registros, de acordo com o tipo de universo:
Universos de uma única zona: selecione uma das seguintes fontes de dados para mostrar os dados de registro da única zona do seu universo:
Registros operacionais: mostram registros operacionais.
Registros de auditoria: mostram os registros de auditoria.
Registros operacionais ZONE_NAME: mostram registros operacionais de uma zona específica.
Registros de auditoria ZONE_NAME: mostram os registros de auditoria de uma zona específica.
Além disso, para ter visualizações de dados entre zonas em um único painel e adicionar várias zonas à sua consulta, selecione Mista como a fonte de dados.
Insira uma consulta para pesquisar registros no painel "Registros" usando expressões da LogQL (linguagem de consulta de registros). Você pode fazer isso de duas maneiras:
- Use a interface interativa do Criador de consultas. Em seguida, clique em Executar consulta.
- Digite sua consulta diretamente no campo de texto e pressione Shift+Enter para executar a consulta.
A página mostra os registros que correspondem à sua consulta. Depois de consultar os registros, é possível exportá-los. Clique em Exportar para fazer o download dos registros em texto simples ou nos formatos CSV. Também é possível selecionar um período para seus registros.
Figura 1. Opção de menu para consultar registros de auditoria na interface do usuário do Grafana.
Na Figura 1, a opção Registros de auditoria mostra a interface que permite criar consultas do Grafana para recuperar registros de auditoria.
Para exemplos de rótulos e valores para consultar diferentes registros, consulte Exemplos de consultas e rótulos.
Selecionar um período para seus registros
Para consultar registros em um período, siga estas etapas:
Clique no menu
Seletor de período no Grafana.No menu, faça uma destas ações:
- Selecione opções de período relativo, por exemplo, os últimos 30 minutos.
- Defina períodos absolutos personalizados escolhendo datas e horários específicos no calendário e clicando em Aplicar período.
Se quiser, clique em Mudar configurações de tempo para alterar as configurações de Fuso horário e Ano fiscal nos controles de período.
As configurações de hora são salvas por painel. Para mais informações sobre consultas em um intervalo de tempo, consulte https://grafana.com/docs/loki/latest/reference/api/#query-loki-over-a-range-of-time.
Enviar uma consulta
Envie uma consulta ao endpoint da API Log Query usando clientes HTTP ou gRPC.
HTTP
Siga as instruções para acessar diretamente a API com um cliente HTTP. Você pode usar o
kubectl
para gerenciar a autenticação ou fazer isso por conta própria.Consulte a API Log Query usando clientes HTTP como
curl
,wget
ou um cliente HTTP que você cria e gerencia. O exemplo a seguir usa a ferramentacurl
para consultar a API. Você pode usar um formato semelhante para comandoswget
:Autentique a solicitação cURL:
- Faça o download e instale a CLI gdcloud.
Defina a propriedade
core/organization_console_url
do gdcloud:gdcloud config set core/organization_console_url https://GDC_URL
Substitua
GDC_URL
pelo URL de uma organização no GDC.Faça login com o provedor de identidade configurado:
gdcloud auth login
Use seu usuário e senha para autenticar e fazer login.
Exporte o token de identidade da conta especificada para uma variável de ambiente:
export TOKEN="$($HOME/gdcloud auth print-identity-token --audiences=https://LOG_QUERY_API_ENDPOINT)"
Substitua
LOG_QUERY_API_ENDPOINT
pelo endpoint da API Log Query de onde você quer consultar os registros e o domínio a que quer se conectar. Portanto, o valor da flagaudiences
pode ser, por exemplo,https://operational-log-query-api.org-1.zone1.google.gdch.test
.Quando o login for concluído, use o cabeçalho de autorização na sua solicitação cURL com o comando
gdcloud auth print-identity-token
. Para mais informações, consulte gdcloud auth print-identity-token.
Se quiser listar todos os rótulos de um projeto, envie a seguinte consulta:
curl -H "Authorization: Bearer ${TOKEN}" \ https://LOG_QUERY_API_ENDPOINT/v1/projects/PROJECT_NAMESPACE/labels \ -H "Content-Type: application/json" -v
Substitua:
LOG_QUERY_API_ENDPOINT
: o endpoint da API de consulta de registros de onde você quer consultar os registros.PROJECT_NAMESPACE
: o namespace do projeto.
Se você quiser listar valores de rótulos específicos para um projeto, envie a seguinte consulta:
curl -H "Authorization: Bearer ${TOKEN}" \ https://LOG_QUERY_API_ENDPOINT/v1/projects/PROJECT_NAMESPACE/labels/labels/LABEL/values \ -H "Content-Type: application/json" -v
Substitua:
LOG_QUERY_API_ENDPOINT
: o endpoint da API de consulta de registros de onde você quer consultar os registros.PROJECT_NAMESPACE
: o namespace do projeto.LABEL
: o rótulo específico para o qual você quer consultar o valor.
Se você quiser consultar registros de um projeto específico, crie uma consulta
logs_filter
e inclua no corpo da solicitação: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"}}}' -v
Substitua:
LOG_QUERY_API_ENDPOINT
: o endpoint da API de consulta de registros de onde você quer consultar os registros.PROJECT_NAMESPACE
: o namespace do projeto.LABEL
: o rótulo específico para o qual você quer consultar registros.LABEL_VALUE
: o valor do rótulo para o qual você quer consultar os registros.
Consulte a documentação da API para ver todas as opções de criação de uma consulta
logs_filter
.
gRPC
O gRPC é amplamente compatível com várias linguagens de programação e oferece um método de comunicação mais eficiente em comparação com clientes HTTP.
Para consultar registros usando gRPC, você precisa atender aos seguintes pré-requisitos:
- Crie sua própria biblioteca de cliente com base nos buffers de protocolo fornecidos pelo Google.
- Implemente a autenticação no cliente.
- Implemente novas tentativas.
Para informações sobre os buffers de protocolo, consulte a documentação da API.
O exemplo a seguir mostra como consultar registros de um programa Go usando um cliente gRPC não autenticado. O exemplo pressupõe que você criou um pacote golang que inclui um arquivo de build do Bazel para importar dependências de código:
Salve o código a seguir em um programa Go chamado
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 }
Execute o programa Go:
go run PATH_TO_API/client.go -server=LOG_QUERY_API_ENDPOINT:443
Substitua:
PATH_TO_API
: o caminho para o arquivo da API.LOG_QUERY_API_ENDPOINT
: o endpoint da API de consulta de registros de onde você quer consultar os registros.
Se a flag do servidor não for especificada, a solicitação padrão será
localhost
.
Exemplos de consultas e rótulos
Confira abaixo alguns dos rótulos padrão que podem ser usados para consultar registros:
cluster
: o nome do cluster.namespace
: o namespace do projeto.node
: o nome do nó.pod
: o nome do pod.container
: o nome do contêiner.
Os exemplos de código a seguir mostram o uso de rótulos e valores para consultar diferentes registros:
Selecione os registros do servidor:
{cluster="admin", namespace="kube-system", resources="k8s_container", container="kube-apiserver"}
Selecione registros de auditoria do cluster:
{cluster="admin", resources="k8s_audit"}