Use o Logstash para transmitir logs com a API de coleta de dados HTTP (legada)

Importante

A ingestão de dados usando o plug-in de saída Logstash está atualmente em visualização pública. Esse recurso é fornecido sem um contrato de nível de serviço e não é recomendado para cargas de trabalho de produção. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Nota

Uma versão mais recente do plug-in Logstash pode encaminhar logs de fontes de dados externas para tabelas personalizadas e padrão usando a API baseada em DCR. O novo plugin permite o controle total sobre o esquema de saída, incluindo a configuração dos nomes e tipos de coluna.

Usando o plug-in de saída do Microsoft Sentinel para o mecanismo de coleta de dados Logstash, você pode enviar qualquer tipo de log desejado pelo Logstash diretamente para seu espaço de trabalho do Log Analytics no Microsoft Sentinel. Seus logs serão enviados para uma tabela personalizada que você define usando o plug-in de saída. Esta versão do plug-in usa a API de coleta de dados HTTP.

Para saber mais sobre como trabalhar com o mecanismo de coleta de dados Logstash, consulte Introdução ao Logstash.

Descrição geral

Arquitetura e antecedentes

Diagram of the Logstash architecture.

O motor Logstash é composto por três componentes:

  • Plugins de entrada: Coleção personalizada de dados de várias fontes.
  • Plugins de filtro: Manipulação e normalização de dados de acordo com critérios especificados.
  • Plugins de saída: Envio personalizado de dados recolhidos e processados para vários destinos.

Nota

  • A Microsoft suporta apenas o plug-in de saída Logstash fornecido pelo Microsoft Sentinel discutido aqui. A versão atual deste plugin é v1.0.0, lançado 2020-08-25. Você pode abrir um ticket de suporte para quaisquer problemas relacionados ao plug-in de saída.

  • A Microsoft não oferece suporte a plug-ins de saída Logstash de terceiros para o Microsoft Sentinel ou qualquer outro plug-in ou componente Logstash de qualquer tipo.

  • O plug-in de saída Logstash do Microsoft Sentinel suporta apenas as versões 7.0 a 7.17.10 do Logstash e as versões 8.0 a 8.9 e 8.11. Se você usa o Logstash 8, recomendamos que desative o ECS no pipeline.

O plug-in de saída do Microsoft Sentinel para Logstash envia dados formatados em JSON para seu espaço de trabalho do Log Analytics, usando a API REST do Coletor de Dados HTTP do Log Analytics. Os dados são ingeridos em logs personalizados.

Implantar o plug-in de saída do Microsoft Sentinel no Logstash

Passo 1: Instalação

O plug-in de saída do Microsoft Sentinel está disponível na coleção Logstash.

Etapa 2: Configuração

Use as informações na estrutura Logstash de um documento de arquivo de configuração e adicione o plug-in de saída do Microsoft Sentinel à configuração com as seguintes chaves e valores. (A sintaxe adequada do arquivo de configuração é mostrada após a tabela.)

Nome do campo Tipo de dados Description
workspace_id string Insira o GUID do ID do espaço de trabalho (consulte Dica).
workspace_key string Insira o GUID da chave primária do espaço de trabalho (consulte Dica).
custom_log_table_name string Defina o nome da tabela na qual os logs serão ingeridos. Apenas um nome de tabela por plug-in de saída pode ser configurado. A tabela de log aparecerá no Microsoft Sentinel em Logs, em Tabelas na categoria Logs Personalizados, com um _CL sufixo.
endpoint string Campo opcional. Por padrão, esse é o ponto de extremidade do Log Analytics. Use este campo para definir um ponto de extremidade alternativo.
time_generated_field string Campo opcional. Esta propriedade substitui o campo padrão TimeGenerated no Log Analytics. Insira o nome do campo de carimbo de data/hora na fonte de dados. Os dados no campo devem estar em conformidade com o formato ISO 8601 (YYYY-MM-DDThh:mm:ssZ)
key_names matriz Insira uma lista de campos do esquema de saída do Log Analytics. Cada item da lista deve ser colocado entre aspas simples e os itens separados por vírgulas, e toda a lista entre colchetes. Veja o exemplo abaixo.
plugin_flush_interval Número Campo opcional. Defina para definir o intervalo máximo (em segundos) entre as transmissões de mensagens para o Log Analytics. A predefinição é 5.
amount_resizing boolean True ou false. Habilite ou desabilite o mecanismo de dimensionamento automático, que ajusta o tamanho do buffer de mensagens de acordo com o volume de dados de log recebidos.
max_items Número Campo opcional. Aplica-se somente se amount_resizing definido como "false". Use para definir um limite no tamanho do buffer de mensagens (em registros). A predefinição é 2 000.
azure_resource_id string Campo opcional. Define a ID do recurso do Azure onde os dados residem.
O valor de ID de recurso é especialmente útil se você estiver usando RBAC de contexto de recurso para fornecer acesso apenas a dados específicos.

Gorjeta

  • Você pode encontrar a ID do espaço de trabalho e a chave primária no recurso do espaço de trabalho, em Gerenciamento de agentes.
  • No entanto, como ter credenciais e outras informações confidenciais armazenadas em texto não criptografado em arquivos de configuração não está de acordo com as práticas recomendadas de segurança, é altamente recomendável usar o armazenamento de chaves Logstash para incluir com segurança o IDe a chave primária do espaço de trabalho na configuração. Consulte a documentação do Elastic para obter instruções.

Configurações de exemplo

Aqui estão alguns exemplos de configurações que usam algumas opções diferentes.

  • Uma configuração básica que usa um pipe de entrada filebeat:

      input {
          beats {
              port => "5044"
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key => "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • Uma configuração básica que usa um pipe de entrada tcp:

      input {
          tcp {
              port => "514"
              type => syslog #optional, will effect log type in table
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "<your workspace id>"
            workspace_key =>  "<your workspace key>"
            custom_log_table_name => "tableName"
          }
      }
    
  • Uma configuração avançada:

      input {
          tcp {
              port => 514
              type => syslog
          }
      }
      filter {
          grok {
              match => { "message" => "<%{NUMBER:PRI}>1 (?<TIME_TAG>[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})[^ ]* (?<HOSTNAME>[^ ]*) %{GREEDYDATA:MSG}" }
          }
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => "<WS_ID>"
              workspace_key => "${WS_KEY}"
              custom_log_table_name => "logstashCustomTable"
              key_names => ['PRI','TIME_TAG','HOSTNAME','MSG']
              plugin_flush_interval => 5
          }
      } 
    
  • Uma configuração mais avançada para analisar um carimbo de data/hora personalizado e uma cadeia de caracteres JSON a partir de dados de texto não estruturados e registrar um conjunto selecionado de campos no Log Analytics com o carimbo de data/hora extraído:

      # Example log line below:
      # Mon Nov 07 20:45:08 2022: { "name":"_custom_time_generated", "origin":"test_microsoft", "sender":"test@microsoft.com", "messages":1337}
      # take an input
      input {
          file {
              path => "/var/log/test.log"
          }
      }
      filter {
      # extract the header timestamp and the Json section
          grok {
              match => {
                  "message" => ["^(?<timestamp>.{24}):\s(?<json_data>.*)$"]
              }
          }
      # parse the extracted header as a timestamp
      date {
          id => 'parse_metric_timestamp'
              match => [ 'timestamp', 'EEE MMM dd HH:mm:ss yyyy' ]
              timezone => 'Europe/Rome'
              target => 'custom_time_generated'
          }
      json {
          source => "json_data"
          }
      }
      # output to a file for debugging (optional)
      output {
          file {
              path => "/tmp/test.txt"
              codec => line { format => "custom format: %{message} %{custom_time_generated} %{json_data}"}
          }
      }
      # output to the console output for debugging (optional)
      output {
          stdout { codec => rubydebug }
      }
      # log into Log Analytics
      output {
          microsoft-logstash-output-azure-loganalytics {
              workspace_id => '[REDACTED]'
              workspace_key => '[REDACTED]'
              custom_log_table_name => 'RSyslogMetrics'
              time_generated_field => 'custom_time_generated'
              key_names => ['custom_time_generated','name','origin','sender','messages']
          }
      }
    

    Nota

    Visite o repositório GitHub do plug-in de saída para saber mais sobre seu funcionamento interno, configuração e configurações de desempenho.

Etapa 3: Reinicie o Logstash

Etapa 4: Exibir logs de entrada no Microsoft Sentinel

  1. Verifique se as mensagens estão sendo enviadas para o plug-in de saída.

  2. No menu de navegação do Microsoft Sentinel, clique em Logs. Sob o título Tabelas , expanda a categoria Logs personalizados . Localize e clique no nome da tabela que você especificou (com um _CL sufixo) na configuração.

    Screenshot of log stash custom logs.

  3. Para ver os registros na tabela, consulte a tabela usando o nome da tabela como o esquema.

    Screenshot of a log stash custom logs query.

Monitorar logs de auditoria de plug-in de saída

Para monitorar a conectividade e a atividade do plug-in de saída do Microsoft Sentinel, habilite o arquivo de log Logstash apropriado. Consulte o documento Logstash Directory Layout para obter o local do arquivo de log.

Se você não estiver vendo nenhum dado neste arquivo de log, gere e envie alguns eventos localmente (através dos plug-ins de entrada e filtro) para garantir que o plug-in de saída esteja recebendo dados. O Microsoft Sentinel suportará apenas problemas relacionados ao plug-in de saída.

Próximos passos

Neste documento, você aprendeu como usar o Logstash para conectar fontes de dados externas ao Microsoft Sentinel. Para saber mais sobre o Microsoft Sentinel, consulte os seguintes artigos: