Como usar registros exportados

Nesta página, explicamos como você pode encontrar e usar suas entradas de registro exportadas no Cloud Storage, no BigQuery e no Cloud Pub/Sub.

Para ter uma visão geral da exportação de registros, consulte Visão geral da exportação de registros.

Para saber como exportar registros, consulte as seguintes páginas:

Cloud Storage

Para ver os registros exportados no Cloud Storage, siga estas etapas:

  1. Acesse o navegador do Cloud Storage no Console do GCP:

    Navegador do Cloud Storage

    1. Selecione o intervalo usado na exportação de registros.

Para ver detalhes de como os registros são organizados no intervalo, consulte Organização do Cloud Storage.

Disponibilidade de registros exportados

Se você não vir registros exportados, verifique as métricas do sistema de exportação. As métricas do sistema de exportação podem informar quantas entradas de registro são exportadas e quantas são descartadas por causa de erros. Se as métricas do sistema de exportação não indicarem entradas de registro exportadas, confira o filtro de exportação para verificar se as entradas de registro correspondentes ao filtro chegaram recentemente ao Stackdriver Logging:

Acessar a página "Exportações de registros"

As entradas de registro são salvas de hora em hora nos intervalos do Cloud Storage. Esse processo é realizado em lotes. Podem ser necessário aguardar de duas a três horas até que as primeiras entradas comecem a aparecer.

Organização de registros exportados

Ao exportar registros para um intervalo do Cloud Storage, o Stackdriver Logging grava nele um conjunto de arquivos. Eles são organizados em hierarquias de diretório por tipo e data de registro. O tipo pode ser um nome simples como syslog ou um composto como appengine.googleapis.com/request_log. Se os registros forem armazenados em um intervalo chamado my-gcs-bucket, os diretórios serão nomeados como no exemplo a seguir:

my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/

Um único intervalo pode conter registros de vários tipos de recurso.

O Stackdriver Logging não garante a eliminação de duplicação de entradas de registro de coletores que contêm filtros idênticos ou sobrepostos. As entradas de registro desses coletores podem ser gravadas várias vezes em um intervalo do Cloud Storage.

Os diretórios de folha (DD/) têm vários arquivos. Cada um mantém as entradas de registro exportadas por um período especificado no nome do arquivo. Os arquivos são fragmentados e os nomes deles terminam em um número do fragmento, Sn ou An (n= 0, 1, 2, ...). Por exemplo, veja dois arquivos que podem ser armazenados no diretório my-gcs-bucket/syslog/2015/01/13/:

08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json

Esses dois arquivos juntos contêm as entradas do registro syslog para todas as instâncias durante a hora que começa às 8h UTC. Os carimbos de data/hora de entrada de registro são expressos em Tempo Universal Coordenado (UTC, na sigla em inglês).

Para conseguir todas as entradas de registro, você lerá todos os fragmentos para cada período de tempo. Neste caso, são os fragmentos do arquivo 0 e 1. O número de fragmentos gravados pode mudar em cada período, dependendo do volume de entradas de registro.

Em cada arquivo fragmentado, as entradas de registro são armazenadas como uma lista de objetos LogEntry. Para ver um exemplo de entrada syslog, consulte o tipo LogEntry nesta página.

Observe que a ordem de classificação das entradas de registro nos arquivos não é uniforme ou de outra forma garantida.

BigQuery

Para ver os registros exportados no BigQuery, faça o seguinte:

  1. Acesse a IU do BigQuery no Console do GCP:

    Acessar a IU do BigQuery

  2. Selecione o conjunto de dados usado como o destino do coletor.

  3. Selecione uma das tabelas desse conjunto. Você encontra as entradas de registro na guia Detalhes. Também é possível consultar a tabela para retornar os dados.

Para saber mais informações, consulte Organização da tabela para ver como as tabelas são organizadas. Confira também Como exportar registros e o esquema do BigQuery para saber como os campos de entradas de registro exportados são nomeados.

Disponibilidade do BigQuery

Se você não vir registros exportados, verifique as métricas do sistema de exportação. As métricas do sistema de exportação podem informar quantas entradas de registro são exportadas e quantas são descartadas por causa de erros. Se as métricas do sistema de exportação não indicarem entradas de registro exportadas, confira o filtro de exportação para verificar se as entradas de registro correspondentes ao filtro chegaram recentemente ao Stackdriver Logging:

Acessar a página "Exportações de registros"

As entradas de registro são salvas no BigQuery em lotes. As primeiras entradas começam a aparecer depois de alguns minutos.

Organização da tabela

Quando você exporta registros para um conjunto de dados do BigQuery, o Stackdriver Logging cria tabelas datadas para manter as entradas. Os nomes das tabelas incluem informações das entradas como os nomes de registro e carimbos de data/hora1. A seguir, você verá exemplos de como os nomes de registro e os carimbos de data/hora são mapeados para nomes de tabela:

Nome do registro Carimbo de data/hora da entrada de registro1 Nome da tabela do BigQuery
syslog 2017-05-23T18:19:22.135Z syslog_20170523
apache-access 2017-01-01T00:00:00.000Z apache_access_20170101
compute.googleapis.com/activity_log 2017-12-31T23:59:59.999Z compute_googleapis_com_activity_log_20171231

1: os carimbos de data/hora de entrada de registro são expressos em UTC (Tempo Universal Coordenado).

Esquemas e campos

Os esquemas de tabela do BigQuery para registros exportados são baseados na estrutura do tipo LogEntry e no conteúdo dos payloads do registro. Você vê o esquema ao selecionar uma tabela com entradas de registro exportadas na IU da Web do BigQuery.

O esquema da tabela do BigQuery usado para representar payloads de entrada de registro complexas pode ser confuso e, no caso de registros de auditoria exportados, algumas regras de nomenclatura especiais são usadas. Para mais informações, consulte Esquema do BigQuery de registros exportados.

Consultas

Para exemplos de consultas que envolvem registros de auditoria exportados no BigQuery, acesse Consultas de registro de auditoria do BigQuery.

Veja a Referência de consulta para saber mais sobre as consultas do BigQuery. Outros recursos muito úteis são as funções de caractere curinga da tabela, para fazer consultas em várias tabelas e o operador Flatten, para exibir dados de campos repetidos.

Amostra de consulta de registros do Compute Engine

A seguinte consulta do BigQuery recupera entradas de registro de vários dias e tipos:

  • A consulta procura os últimos três dias dos registros syslog e apache-access. Ela foi feita em 23 de fevereiro de 2015 e abrange todas as entradas de registro recebidas entre 21 e 22 de fevereiro, além daquelas recebidas entre 23 de fevereiro e o momento em que a consulta foi emitida.

  • A consulta recupera resultados de uma única instância do Compute Engine, 1554300700000000000.

  • A consulta ignora o tráfego do verificador de integridade do ponto de extremidade do Stackdriver Monitoring, Stackdriver_terminus_bot.

SELECT
  timestamp AS Time,
  logName as Log,
  textPayload AS Message
FROM
  (TABLE_DATE_RANGE(my_bq_dataset.syslog_,
    DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), CURRENT_TIMESTAMP())),
  (TABLE_DATE_RANGE(my_bq_dataset.apache_access_,
    DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), CURRENT_TIMESTAMP()))
WHERE
  resource.type == 'gce_instance'
  AND resource.labels.instance_id == '1554300700000000000'
  AND NOT (textPayload CONTAINS 'Stackdriver_terminus_bot')
ORDER BY time;

Veja alguns exemplos de linhas de saída:

Row | Time                    | Log                                         | Message
--- | ----------------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------
 5  | 2015-02-21 03:40:14 UTC | projects/project-id/logs/syslog             | Feb 21 03:40:14 my-gce-instance collectd[24281]: uc_update: Value too old: name = 15543007601548826368/df-tmpfs/df_complex-used; value time = 1424490014.269; last cache update = 1424490014.269;
 6  | 2015-02-21 04:17:01 UTC | projects/project-id/logs/syslog             | Feb 21 04:17:01 my-gce-instance /USR/SBIN/CRON[8082]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
 7  | 2015-02-21 04:49:58 UTC | projects/project-id/logs/apache-access      | 128.61.240.66 - - [21/Feb/2015:04:49:58 +0000] "GET / HTTP/1.0" 200 536 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
 8  | 2015-02-21 05:17:01 UTC | projects/project-id/logs/syslog             | Feb 21 05:17:01 my-gce-instance /USR/SBIN/CRON[9104]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
 9  | 2015-02-21 05:30:50 UTC | projects/project-id/log/syslogapache-access | 92.254.50.61 - - [21/Feb/2015:05:30:50 +0000] "GET /tmUnblock.cgi HTTP/1.1" 400 541 "-" "-"

Amostra de consulta de registros do App Engine

A seguinte consulta do BigQuery recupera solicitações do App Engine que não foram bem-sucedidas no último mês:

SELECT
  timestamp AS Time,
  protoPayload.host AS Host,
  protoPayload.status AS Status,
  protoPayload.resource AS Path
FROM
  (TABLE_DATE_RANGE(my_bq_dataset.appengine_googleapis_com_request_log_,
    DATE_ADD(CURRENT_TIMESTAMP(), -1, 'MONTH'), CURRENT_TIMESTAMP()))
WHERE
  protoPayload.status != 200
ORDER BY time

Veja alguns dos resultados:

Row | Time                    | Host                                  | Status | Path
--- | ----------------------- | ------------------------------------- | ------ | ------
 6  | 2015-02-12 19:35:02 UTC | default.my-gcp-project-id.appspot.com |    404 | /foo?thud=3
 7  | 2015-02-12 19:35:21 UTC | default.my-gcp-project-id.appspot.com |    404 | /foo
 8  | 2015-02-16 20:17:19 UTC | my-gcp-project-id.appspot.com         |    404 | /favicon.ico
 9  | 2015-02-16 20:17:34 UTC | my-gcp-project-id.appspot.com         |    404 | /foo?thud=%22what???%22

Cloud Pub/Sub

Para ver os registros exportados por streaming no Cloud Pub/Sub, siga estas etapas:

  1. Acesse a página do Cloud Pub/Sub no Console do GCP:

    Acessar o Cloud Pub/Sub

  2. Encontre ou crie uma assinatura no tópico usado na exportação de registros e extraia uma entrada dela. Talvez seja necessário aguardar a publicação de uma nova entrada de registro.

Consulte Organização de registros exportados para ver detalhes sobre como os registros são organizados.

Disponibilidade de registros exportados

Se você não vir registros exportados, verifique as métricas do sistema de exportação. As métricas do sistema de exportação podem informar quantas entradas de registro são exportadas e quantas são descartadas por causa de erros. Se as métricas do sistema de exportação não indicarem entradas de registro exportadas, confira o filtro de exportação para verificar se as entradas de registro correspondentes ao filtro chegaram recentemente ao Stackdriver Logging:

Acessar a página "Exportações de registros"

Ao exportar registros para um tópico do Cloud Pub/Sub, o Stackdriver Logging publica cada entrada assim que a recebe como uma mensagem do Cloud Pub/Sub.

Organização de registros exportados

O campo data de cada mensagem é um objeto LogEntry codificado em base64. Por exemplo, um assinante do Cloud Pub/Sub pode extrair o seguinte objeto de um tópico que estiver recebendo entradas de registro. O objeto mostrado contém uma lista com uma única mensagem, mesmo que o Cloud Pub/Sub retorne várias, se muitas entradas de registro estiverem disponíveis. Os valores de data (cerca de 600 caracteres) e de ackId (cerca de 200 caracteres) foram encurtados para simplificar o exemplo:

{
 "receivedMessages": [
  {
   "ackId": "dR1JHlAbEGEIBERNK0EPKVgUWQYyODM...QlVWBwY9HFELH3cOAjYYFlcGICIjIg",
   "message": {
    "data": "eyJtZXRhZGF0YSI6eyJzZXZ0eSI6Il...Dk0OTU2G9nIjoiaGVsbG93b3JsZC5sb2cifQ==",
    "attributes": {
     "compute.googleapis.com/resource_type": "instance",
     "compute.googleapis.com/resource_id": "123456"
    },
    "messageId": "43913662360"
   }
  }
 ]
}

Ao decodificar o campo data e formatá-lo, você recebe o seguinte objeto LogEntry:

{
  "log": "helloworld.log",
  "insertId": "2015-04-15|11:41:00.577447-07|10.52.166.198|-1694494956",
  "textPayload": "Wed Apr 15 20:40:51 CEST 2015 Hello, world!",
  "timestamp": "2015-04-15T18:40:56Z",
  "labels": {
    "compute.googleapis.com\/resource_type": "instance",
    "compute.googleapis.com\/resource_id": "123456"
  },
  "severity": "WARNING"
  }
}

Objetos de entrada de registro

As entradas de registro do Stackdriver Logging são objetos do tipo LogEntry. Veja os campos mais importantes dessas entradas na tabela a seguir:

Todas as entradas de registro com um [LOG_ID] específico costumam ter o mesmo formato. Cada tipo de registro documenta o conteúdo do campo de payload. Consulte o Índice de registros do Stackdriver Logging para ver exemplos. Veja a seguir algumas amostras das entradas de registro:

syslog

O syslog do Compute Engine é um tipo de registro personalizado produzido pelo agente de registro google-fluentd. Ele é executado em instâncias de máquina virtual:

{
  logName: "projects/my-gcp-project-id/logs/syslog",
  timestamp: "2015-01-13T19:17:01Z",
  resource: {
    type: "gce_instance",
    labels: {
      instance_id: "12345",
      zone: "us-central1-a",
      project_id: "my-gcp-project-id"
    }
  },
  insertId: "abcde12345",
  textPayload: "Jan 13 19:17:01 my-gce-instance /USR/SBIN/CRON[29980]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)"
}

request_log

O request_log do App Engine tem entradas de registro em que estão campos protoPayload com objetos do tipo RequestLog:

{
  logName: "projects/my-gcp-project-id/logs/appengine.googleapis.com%2Frequest_log",
  timestamp: "2015-01-13T19:00:39.796169Z",
  resource: {
    type: "gae_app",
    labels: {
      module_id: "default",
      zone: "us6",
      project_id: "my-gcp-project-id",
      version_id: "20150925t173233"
    }
  }
  httpRequest: {
    status: 200
  }
  insertId: "abcde12345",
  operation: {
    id: "abc123",
    producer: "appengine.googleapis.com/request_id",
    first: true,
    last: true
  }
  protoPayload: {
    @type: "type.googleapis.com/google.appengine.logging.v1.RequestLog"
    versionId: "20150925t173233",
    status: 200,
    startTime: "2017-01-13T19:00:39.796169Z",
    # ...
    appId: "s~my-gcp-project-id",
    appEngineRelease: "1.9.17",
  }
}

activity

O registro activity é um registro de auditoria da Atividade do administrador. O payload dele é uma representação JSON do tipo AuditLog:

{
 logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"
 timestamp: "2017-04-22T13:41:32.245Z"
 severity: "NOTICE"
 resource: {
  type: "gce_instance"
  labels: {
   instance_id: "2403273232180765234"
   zone: "us-central1-b"
   project_id: "my-gcp-project-id"
  }
 }
 insertId: "54DC1882F4B49.A4996C2.6A02F4C1"
 operation: {
  id: "operation-1492868454262-54dc185e9a4f0-249fe233-f73d472a"
  producer: "compute.googleapis.com"
  last: true
 }
 protoPayload: {
  @type: "type.googleapis.com/google.cloud.audit.AuditLog"
  authenticationInfo: {
   principalEmail: "649517127304@cloudservices.gserviceaccount.com"
  }
  requestMetadata: {…}
  serviceName: "compute.googleapis.com"
  methodName: "v1.compute.instances.delete"
  resourceName: "projects/my-gcp-project-id/zones/us-central1-b/instances/abc123"
 }
}

Entradas de registro atrasadas

As entradas de registro exportadas são salvas em lotes a cada hora nos intervalos do Cloud Storage. Podem ser necessário aguardar de duas a três horas até que as primeiras entradas comecem a aparecer. Os fragmentos do arquivo de registro exportado com o sufixo An ("Anexar") mantêm as entradas que chegam atrasadas.

Além disso, o App Engine combina várias subentradas do tipo google.appengine.logging.v1.LogLine, também chamado de AppLog ou AppLogLine, em uma entrada de registro principal do tipo google.appengine.logging.v1.RequestLog para a solicitação que causa a atividade de registro. Cada linha de registro tem um "código de solicitação" que identifica a entrada principal. O Visualizador de registros exibe as linhas com a entrada da solicitação. O Stackdriver Logging coloca todas as linhas de registro no lote com a solicitação original, mesmo que a data e hora correspondam ao próximo lote. Se isso não for possível, pode ser que faltem algumas linhas na entrada de registro da solicitação ou pode haver linhas "órfãs" sem uma solicitação no lote seguinte. Se essa possibilidade for importante para você, prepare-se para reconectar as partes da solicitação quando processar os registros.

Integração de terceiros com o Cloud Pub/Sub

O Stackdriver Logging é compatível com a integração da geração de registros com terceiros. Para ver uma lista de atualizações atualizada, consulte Stackdriver Integrations.

Você exporta os registros por meio de um tópico do Cloud Pub/Sub e o terceiro os recebe ao se inscrever no mesmo tópico.

Para realizar a integração, faça o seguinte:

  1. Peça ao terceiro um nome de conta de serviço do Google Cloud Platform (GCP) criado a partir do projeto do GCP. Por exemplo, 12345-xyz@developer.gserviceaccount.com. Use esse nome para permitir que o terceiro receba os registros.

  2. No projeto que contém os registros,

    Ativar a API

  3. Crie um tópico do Pub/Sub. Faça isso ao configurar um coletor de registros ou siga estes passos:

    1. Acesse a lista de tópicos do Pub/Sub.
    2. Selecione Criar tópico e digite um nome. Por exemplo, projects/my-project-id/topics/my-pubsub-topic. Você exportará os registros para esse tópico.
    3. Selecione Criar.
    4. Dê ao Stackdriver Logging autorização para exportar registros para o tópico. Consulte Como definir permissões para o Cloud Pub/Sub.
  4. Dê autorização ao terceiro para assinar o tópico:

    1. Continue na Lista de tópicos do Pub/Sub do projeto no Console do GCP.
    2. Selecione o novo tópico.
    3. Selecione Permissões.
    4. Digite o nome da conta de serviço do terceiro.
    5. No menu Selecionar uma função, escolha Assinante do Pub/Sub.
    6. Selecione Adicionar.
  5. Dê ao terceiro o nome do tópico do Cloud Pub/Sub. Por exemplo, projects/my-project-number/topics/my-pubsub-topic. Ele precisa assinar o tópico antes de você começar a exportação.

  6. Comece a exportar os registros assim que o terceiro tiver assinado o tópico:

    1. No projeto que contém os registros que você quer exportar, clique em Criar exportação acima da caixa do filtro de pesquisa. Isso abre o painel Editar exportação:

      Painel "Editar exportação"

    2. Insira um Nome de coletor.

    3. No menu Serviço de coletor, selecione Cloud Pub/Sub.

    4. No menu Destino do coletor, selecione o tópico do Cloud Pub/Sub que o terceiro assinou.

    5. Selecione Criar coletor para iniciar a exportação.

    6. Uma caixa de diálogo Coletor criado é exibida. Indica que o coletor de exportação foi criado com êxito com permissões para gravar registros correspondentes futuros ao destino selecionado.

O terceiro começa a receber as entradas de registro de imediato.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Stackdriver Logging
Precisa de ajuda? Acesse nossa página de suporte.