Visualizar registos de erros no Cloud Logging

Esta página explica como ver registos no Google Cloud Observability para tipos de pedidos suportados.

Registo

Os erros acionados em cada um dos seguintes pedidos são registados no Cloud Logging.

Os erros também são registados se não for possível publicar uma mensagem do Pub/Sub no Pub/Sub. Consulte o artigo Resolução de problemas de notificações do Pub/Sub para mais informações.

O registo é automático e não tem de ser ativado. Para desativar o Cloud Logging para um ou todos os recursos monitorizados, consulte as Exclusões de registos.

Ver registos

Para ver todos os registos, aceda ao Explorador de registos.

Para ver os registos de operações com um estado de erro, siga estes passos:

  1. Na Google Cloud consola, aceda ao navegador da Cloud Healthcare API.

    Aceda ao navegador da Cloud Healthcare API

  2. Selecione um conjunto de dados.

  3. Clique no separador Operações.

  4. Na lista de operações, escolha Ver detalhes no Cloud Logging na lista Ações para ver os detalhes de uma operação com erros.

Filtrar registos

Pode filtrar os registos por tipo de arquivo de dados, região e conjunto de dados.

Por exemplo, para ver os registos de FHIR stores, clique em Healthcare FHIR Store na primeira lista em Filtrar por etiqueta ou pesquisa de texto. Também pode pesquisar por tipo de recurso. Por exemplo, a pesquisa de healthcare_dicom_store apresenta todos os registos gerados para operações com resource.type definido como healthcare_dicom_store.

A codificação UTF-8 é aplicada aos campos de registo. Os carateres que não são carateres UTF-8 são substituídos por pontos de interrogação.

Para obter informações detalhadas sobre o Explorador de registos, consulte o artigo Usar o Explorador de registos.

Usar o Cloud Logging para encontrar eventos de erros

Também pode usar o Cloud Logging para encontrar o registo de auditoria de um evento que esteja a causar um erro. Para encontrar um evento de erro nos registos de auditoria, faça o seguinte:

  1. Pesquise no Cloud Logging a operação que causou o problema.

  2. Usando os detalhes do registo da operação, volte a executar o comando específico.

  3. Veja os registos de auditoria do evento correspondente. Para mais informações sobre os registos de auditoria, consulte o artigo Ver registos de auditoria do Cloud.

O que é registado

As entradas de registo da Cloud Healthcare API contêm os seguintes tipos de informações para pedidos de depuração:

  • Informações gerais, como a gravidade, o ID do projeto, o número do projeto e a data/hora.
  • jsonPayload contém o corpo real da entrada. Este campo contém o código de erro, a mensagem de erro e o nome do ficheiro de origem cuja importação acionou o erro.
  • operation contém o tipo e o ID da operação que produziu o erro.
  • resource contém a localização, o conjunto de dados e o repositório de dados envolvidos no erro.

Se o número de erros exceder um limite, é apresentado um número limitado de erros no Cloud Logging. O limite é calculado dinamicamente com base no tamanho da entrada.

Onde são armazenados os registos

O Google Cloud Observability não é um produto regionalizado. Os registos escritos no Google Cloud Observability podem ser armazenados numa região diferente das bases de dados.

Exemplo de entrada do registo de importação DICOM

A seguinte entrada de registo de exemplo mostra um erro empty DICOM instance found que ocorreu ao tentar importar gs://DICOM_FILENAME.dcm para projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID.

 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.healthcare.logging.ImportDicomLogEntry"
  error: {
   code:  3
   message:  "empty DICOM instance found"
  }
  source:  "gs://DICOM_FILENAME.dcm"
 }
 logName:  "projects/PROJECT_ID/logs/healthcare.googleapis.com%2Foperations"
 operation: {
  id:  "PROJECT_ID"
  producer:  "import_dicom"
 }
 receiveTimestamp:  "TIMESTAMP"
 resource: {
  labels: {
   dataset_id:  "DATASET_ID"
   dicom_store_id:  "DICOM_STORE_ID"
   location:  "LOCATION"
   project_id:  "PROJECT_ID"
  }
  type:  "healthcare_dicom_store"
 }
 severity:  "ERROR"
 timestamp:  "TIMESTAMP"

Exemplo de entrada de registo de importação de FHIR

A seguinte entrada de registo de exemplo mostra um erro cannot import resource que ocorreu ao tentar importar gs://FHIR_FILENAME.ndjson para projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStore/FHIR_STORE_ID.

 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.healthcare.logging.ImportFhirLogEntry"
  error: {
   code:  3
   message:  "cannot import resource Patient/PATIENT_ID, conflicting resource already exists"
  }
  source:  "gs://FHIR_FILENAME.ndjson"
 }
 logName:  "projects/PROJECT_ID/logs/healthcare.googleapis.com%2Foperations"
 operation: {
  id:  "PROJECT_ID"
  producer:  "import_fhir"
 }
 receiveTimestamp:  "TIMESTAMP"
 resource: {
  labels: {
   dataset_id:  "DATASET_ID"
   fhir_store_id:  "FHIR_STORE_ID"
   location:  "LOCATION"
   project_id:  "PROJECT_ID"
  }
  type:  "healthcare_fhir_store"
 }
 severity:  "ERROR"
 timestamp:  "TIMESTAMP"

Exemplo de entrada de registo de desidentificação DICOM

A seguinte entrada de registo de exemplo mostra um erro cannot de-identify dicom instance que ocorreu ao tentar remover a identificação da instância DICOM INSTANCE_ID no conjunto de dados projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID.

 jsonPayload: {
  @type:  "type.googleapis.com/google.cloud.healthcare.logging.DeidentifyLogEntry"
  error: {
   code:  2
   message:  "Failed to process instance INSTANCE_ID"
  }
  resourceName:  "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID"
 }
 logName:  "projects/PROJECT_ID/logs/healthcare.googleapis.com%2Fdeidentify_dataset"
 operation: {
  id:  "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
  producer:  "healthcare.googleapis.com/DeidentifyDataset"
 }
 receiveTimestamp:  "TIMESTAMP"
 resource: {
  labels: {
   dataset_id:  "DATASET_ID"
   location:  "LOCATION"
   project_id:  "PROJECT_ID"
  }
  type:  "healthcare_dataset"
 }
 severity:  "ERROR"
 timestamp:  "TIMESTAMP"

O que se segue?