Cenários para exportar dados do Cloud Logging: Splunk

Neste cenário, mostramos como exportar registros selecionados do Cloud Logging para o Splunk Enterprise ou o Splunk Cloud em tempo real. O Splunk permite pesquisar, analisar e visualizar registros, eventos e métricas coletados das suas implantações locais e na nuvem para monitoramento de TI e segurança. Ao integrar os registros pelo Cloud Logging, é possível continuar usando serviços de parceiros atuais, como o Splunk, como uma solução de análise de registros unificada, com opções para implantar o Splunk no local, no Google Cloud como SaaS, ou por meio de uma abordagem híbrida.

Este documento fornece uma visão geral de dois métodos diferentes aceitos para exportação de registros para o Splunk: pushing ou pulling de registros do Google Cloud. Conforme explicado na seção a seguir, a abordagem baseada em push nativa da nuvem é recomendada na maioria dos casos. Para informações mais detalhadas sobre como implantar a solução de exportação de registros baseada em push, consulte Como implantar exportações de registros prontas para produção no Splunk usando o Dataflow.

Esse cenário faz parte da série Padrões de design para exportar o Cloud Logging.

Introdução

Há dois métodos para ingerir dados do Google Cloud compatíveis com o Splunk:

Recomendamos que você use o método baseado em push para ingerir dados do Google Cloud no Splunk. Esse método tem as seguintes vantagens:

  • Serviço gerenciado. O serviço gerenciado do Dataflow gerencia os recursos necessários do Google Cloud para tarefas de processamento de dados, como a exportação de registros.
  • Carga de trabalho distribuída. A carga de trabalho é distribuída em vários workers para processamento paralelo. Assim, ao contrário de quando se extrai dados com um encaminhador pesado Splunk, não há um ponto único de falha.
  • Segurança. Os dados são enviados para o HEC do Splunk. Portanto, não há nenhuma sobrecarga de manutenção e segurança associada à criação e ao gerenciamento de chaves de contas de serviço. Um método baseado em pull ainda requer a criação e o gerenciamento de chaves de conta de serviço.
  • Escalonamento automático. O serviço Dataflow faz o escalonamento automático do número de workers em resposta a variações no volume de registros e no backlog de entrada.
  • Tolerância a falhas. As tentativas do HEC do Splunk serão processadas automaticamente se houver problemas temporários na rede ou no servidor. Esse método também aceita tópicos não processados (também conhecidos como tópicos de letras inativas) para mensagens de registro não entregues para evitar a perda de dados.
  • Simplicidade. Você evita a sobrecarga de gerenciamento e o custo de executar um ou mais encaminhadores pesados do Splunk.

Há circunstâncias em que é possível usar o método baseado em pull para ingerir dados do Google Cloud no Splunk. Estas são as circunstâncias:

  • Sua implantação do Splunk não oferece um endpoint do HEC do Splunk.
  • O volume de registros é baixo.
  • Você quer extrair as métricas do Cloud Monitoring, objetos do Cloud Storage ou registros de baixo volume.
  • Você já gerencia um ou mais encaminhadores pesados do Splunk (ou está usando um gerenciador de dados de entrada para Splunk Cloud) hospedado.

Configurar a exportação de registros

No diagrama a seguir, mostramos as etapas para ativar a exportação de registros para o Splunk pelo Pub/Sub.

Ativação da exportação de registros para o Pub/Sub.

Configurar um tópico e uma assinatura do Pub/Sub

Siga as instruções para configurar um tópico do Pub/Sub que receberá seus registros exportados e adicione uma assinatura ao tópico.

Este documento usa os seguintes tópicos do Pub/Sub e nomes de assinatura:

projects/compliance-logging-export/topics/logs-export-topic

projects/compliance-logging-export/topics/logs-export-subscription

Ativar a geração de registros de auditoria para todos os serviços

Os registros de auditoria de atividade do administrador são sempre gravados e não podem ser desativados. No entanto, os registros de auditoria de acesso a dados, exceto o BigQuery, são desativados por padrão. Para ativar todos os registros de auditoria, siga as instruções para atualizar a política de IAM com a configuração listada na documentação da política de auditoria. Estas são as etapas:

  • Download da política de IAM atual como um arquivo
  • Inclusão do objeto JSON ou YAML da política de registros de auditoria no arquivo de política atual.
  • Atualização do projeto do Google Cloud (ou organização) com o arquivo de política alterado.

A seguir, veja um exemplo de objeto JSON usado para ativar todos os registros de auditoria de todos os serviços.

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

Configurar a exportação de registros

Depois de configurar exportações agregadas ou a exportação de registros, você precisa refinar os filtros de geração de registros para exportar registros de auditoria, registros relacionados a máquina virtual, registros de armazenamento e registros de banco de dados. O filtro de geração de registros a seguir inclui os registros de auditoria "Atividade do administrador" e "Acesso a dados" e os registros de tipos de recurso específicos.

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=bigquery_resource

Da ferramenta de linha de comando gcloud, use o comando gcloud logging sinks create ou a chamada de API organizations.sinks.create para criar um coletor com os filtros apropriados. O comando gcloud de exemplo a seguir cria um coletor chamado gcp_logging_sink_pubsub para a organização, com o destino sendo o tópico do Pub/Sub criado anteriormente logs-export-topic. No coletor, estão incluídos todos os projetos filhos e a especificação de filtragem para selecionar registros de auditoria específicos.

gcloud logging sinks create gcp_logging_sink_pubsub \
    pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic \
    --log-filter='logName:"/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=your-organization

A resposta ao comando será semelhante à seguinte:

Created [https://logging.googleapis.com/v2/organizations/your-organization/sinks/gcp_logging_export_pubsub_sink].
Please remember to grant `serviceAccount:gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com` Pub/Sub Publisher role to the topic.
More information about sinks can be found at /logging/docs/export/configure_export

Na entrada serviceAccount retornada da chamada de API, a identidade gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com é incluída na resposta. Essa identidade representa uma conta de serviço do Google Cloud criada para a exportação. As exportações de entrada de registro desse coletor apresentarão falha até que você conceda a essa identidade acesso de publicação ao tópico de destino. Para mais informações, consulte a próxima seção ou a documentação sobre Como conceder acesso a um recurso.

Definir permissões da política de IAM ao tópico do Pub/Sub

Ao adicionar a conta de serviço gcp-logging-export-pubsub-si@logging-oyour-organization.iam.gserviceaccount.com ao tópico pubsub.googleapis.com/projects/compliance-logging-export/topics/logs-export-topic com as permissões Editor do Pub/Sub, você concede à conta de serviço permissão para publicar no tópico. A exportação do coletor falhará até que você adicione essas permissões.

Para adicionar as permissões à conta de serviço, siga estas etapas:

  1. No Console do Cloud, abra a página Tópicos do Cloud Pub/Sub:

    ACESSAR A PÁGINA “TÓPICOS”

  2. Selecione o nome do tópico.

  3. Clique em Mostrar painel de informações e selecione as permissões do editor do Pub/Sub.

    Permissões de política de IAM - Editor do Pub/Sub

Depois que você cria a exportação de registros usando esse filtro, os arquivos de registros começam a preencher o tópico do Pub/Sub no projeto configurado. Você confirma que o tópico está recebendo mensagens usando o Metrics Explorer no Cloud Monitoring. Usando o seguinte tipo de recurso e métrica, observe o número de operações de envio de mensagens durante um breve período. Se você configurou a exportação corretamente, verá a atividade acima de 0 no gráfico, como nesta captura de tela.

  • Tipo de recurso: pubsub_topic
  • Métrica: pubsub/topic/send_message_operation_count

Gráfico de atividades.

Configurar a ingestão de dados do Splunk

Opção A: fazer streaming de registros usando o Pub/Sub para o Splunk Dataflow

Use o modelo do Pub/Sub para o Splunk Dataflow para criar um job do Dataflow que extraia mensagens da assinatura do Pub/Sub criada anteriormente, converta payloads no formato de evento do HEC do Splunk e os encaminhe para o HEC do Splunk. Portanto, ele exige o URL do endpoint do HEC do Splunk e um token HEC, com o URL acessível pela rede do job do Dataflow. Siga as instruções para configurar o HEC do Splunk, caso ainda não tenha feito isso.

Além de carregar em paralelo e distribuir a carga de trabalho entre vários workers, o serviço Dataflow gerencia esses recursos e faz o escalonamento automático do número de workers com base no backlog de mensagens atual do Pub/Sub e na utilização de recursos de workers atuais.

Em termos de tolerância a falhas, o modelo do Pub/Sub para o Splunk Dataflow processa tentativas (com retirada exponencial) para o HEC do Splunk caso o endpoint downstream esteja inativo ou se houver um problema de conectividade de rede. No caso de erros de processamento de mensagens e para garantir que não haja perda de dados, essas mensagens são encaminhadas para outro tópico de mensagens inativas do Pub/Sub, que também precisa ser criado antes de executar esse modelo do Dataflow.

Depois que o endpoint do HEC do Splunk estiver configurado para receber dados, será possível executar o pipeline do Pub/Sub para o Splunk Dataflow por meio do Console do Cloud, da ferramenta de linha de comando gcloud ou da API Dataflow. Como opção, é possível aplicar uma função JavaScript definida pelo usuário para transformar o payload da mensagem antes de encaminhá-lo para o Splunk.

O comando de exemplo a seguir gcloud executa a versão mais recente do Pub/Sub para o modelo de Dataflow do Splunk na assinatura de entrada do Pub/Sub logs-export-subscription. Substitua your-splunk-hec-token e your-splunk-hec-url pelo token e endpoint do HEC do Splunk, por exemplo, https://splunk-hec-host:8088:

JOB_NAME=pubsub-to-splunk-$USER-`date +"%Y%m%d-%H%M%S%z"`
gcloud dataflow jobs run $JOB_NAME \
    --gcs-location gs://dataflow-templates/latest/Cloud_PubSub_to_Splunk \
    --max-workers 2 \
    --parameters \
  inputSubscription=projects/compliance-logging-export/subscriptions/logs-export-subscription,\
  token=your-splunk-hec-token,\
  url=your-splunk-hec-url,\
  outputDeadletterTopic=projects/compliance-logging-export/topics/splunk-pubsub-deadletter,\
  batchCount=10,\
  parallelism=8

Confirme se o pipeline do Dataflow está enviando mensagens para o Splunk usando o Metrics Explorer no Cloud Monitoring. Usando o tipo de recurso e as métricas a seguir, observe o número de eventos de saída bem-sucedidos e possíveis eventos com falha em um breve período.

  • Tipo de recurso: dataflow_job
  • Métrica 1: custom.googleapis.com/dataflow/outbound-successful-events
  • Métrica 1: custom.googleapis.com/dataflow/outbound-failed-events

Se você configurou o modelo corretamente, verá a atividade acima de 0 no gráfico, como nesta captura de tela.

atividade de gráfico para eventos de saída.

Opção B: extrair registros usando o complemento do Splunk para o Google Cloud Platform

O complemento do Splunk para o Google Cloud Platform usa o tópico Pub/Sub e uma conta de serviço no Google Cloud. A conta de serviço é usada para gerar uma chave privada que o complemento usa para estabelecer uma assinatura do Pub/Sub e ingerir mensagens do tópico de exportação de registros. As permissões de IAM apropriadas são necessárias para permitir que a conta de serviço crie a assinatura e liste os componentes no projeto do Pub/Sub que contém a assinatura.

Siga as instruções para configurar o complemento do Splunk para o Google Cloud Platform. Conceda as Permissões de IAM do Pub/Sub roles/pubsub.viewer e roles/pubsub.subscriber para a conta de serviço criada como parte da instrução do complemento.

Depois que você configurar o complemento, as mensagens do Pub/Sub da exportação de registros aparecerão no Splunk.

Ao usar o Metrics Explorer no Cloud Monitoring, é possível confirmar que a assinatura usada pelo complemento está extraindo mensagens. Usando o seguinte tipo de recurso e métrica, observe o número de operações de pull de mensagens durante um breve período.

  • Tipo de recurso: pubsub_subscription
  • Métrica: pubsub/subscription/pull_message_operation_count

Se você configurou a exportação corretamente, verá a atividade acima de 0 no gráfico, como nesta captura de tela.

atividade do gráfico para operações de pull

Como usar os registros exportados

Após a ingestão dos registros exportados no Splunk, você poderá usar o Splunk, assim como qualquer outra origem de dados, para executar as seguintes tarefas:

  • pesquisa dos registros
  • correlação de eventos complexos
  • visualização dos resultados usando painéis

A seguir