Uso de Logstash para transmitir registros con la API de recopilación de datos HTTP (heredado)

Importante

La ingesta de datos mediante el complemento de salida de Logstash se encuentra actualmente en versión preliminar pública. Esta característica se ofrece sin contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Nota

Una versión más reciente del complemento Logstash puede reenviar registros de orígenes de datos externos a tablas personalizadas y estándar mediante la API basada en DCR. El nuevo complemento permite el control total sobre el esquema de salida, incluida la configuración de los nombres y tipos de columna.

Con el complemento de salida de Microsoft Sentinel para el motor de recopilación de datos de Logstash, ahora puede enviar cualquier tipo de registro que quiera a través de Logstash directamente a su área de trabajo de Log Analytics en Microsoft Sentinel. Los registros se enviarán a una tabla personalizada que define mediante el complemento de salida. Esta versión del complemento usa la API de recopilación de datos HTTP.

Para obtener más información sobre cómo trabajar con el motor de recopilación de datos de Logstash, consulte la página de introducción a Logstash.

Información general

Arquitectura e información

Diagram of the Logstash architecture.

El motor de Logstash consta de tres componentes:

  • Complementos de entrada: colección personalizada de datos de diversos orígenes.
  • Complementos de filtro: manipulación y normalización de los datos según los criterios especificados.
  • Complementos de salida: envío personalizado de datos recopilados y procesados a varios destinos.

Nota

  • Microsoft solo admite el complemento de salida de Logstash proporcionado por Microsoft Sentinel que se trata aquí. La versión actual de este complemento es v1.0.0, publicada el 25/08/2020. Puede abrir una incidencia de soporte técnico en caso de que surja cualquier problema relacionado con el complemento de salida.

  • Microsoft no admite complementos de salida de terceros de Logstash para Microsoft Sentinel ni ningún otro complemento de Logstash o componente de ningún tipo.

  • El complemento de salida Logstash de Microsoft Sentinel solo admite las versiones de Logstash 7.0 a 7.17.10, 8.0 a 8.9 y 8.11. Si usa Logstash 8, se recomienda deshabilitar ECS en la canalización.

El complemento de salida de Microsoft Sentinel para Logstash envía datos con formato JSON al área de trabajo de Log Analytics mediante la API REST de recopilación de datos HTTP de Log Analytics. Los datos se ingieren en los registros personalizados.

Implementación del complemento de salida de Microsoft Sentinel en Logstash

Paso 1: Instalación

El complemento de salida de Microsoft Sentinel está disponible en la colección de Logstash.

Paso 2: Configuración

Use la información del documento Estructura de un archivo de configuración de Logstash y agregue el complemento de salida de Microsoft Sentinel a la configuración con las claves y los valores siguientes. (La sintaxis correcta del archivo de configuración se muestra después de la tabla).

Nombre del campo Tipo de datos Descripción
workspace_id string Escriba el GUID del identificador del área de trabajo (consulte la sugerencia).
workspace_key string Escriba el GUID de la clave principal del área de trabajo (consulte la sugerencia).
custom_log_table_name string Establezca el nombre de la tabla en la que se van a ingerir los registros. Solo se puede configurar un nombre de tabla por complemento de salida. La tabla de registros aparecerá en Microsoft Sentinel en Registros, en Tablas, categoría Registros personalizados, con un sufijo _CL.
endpoint string Campo opcional. De forma predeterminada, es el punto de conexión de Log Analytics. Utilice este campo para establecer un punto de conexión alternativo.
time_generated_field string Campo opcional. Esta propiedad invalida el campo predeterminado TimeGenerated en Log Analytics. Escriba el nombre del campo de marca de tiempo en el origen de datos. Los datos del campo deben ajustarse al formato ISO 8601 (YYYY-MM-DDThh:mm:ssZ)
key_names array Escriba una lista de campos de esquema de salida de Log Analytics. Cada elemento de lista se debe incluir entre comillas simples, los elementos deben estar separados por comas y la lista completa entre corchetes. Consulte el ejemplo siguiente.
plugin_flush_interval number Campo opcional. Establézcalo para definir el intervalo máximo (en segundos) entre las transmisiones de mensajes a Log Analytics. El valor predeterminado es 5.
amount_resizing boolean True o false. Habilite o deshabilite el mecanismo de escalabilidad automática, que ajusta el tamaño del búfer de mensajes en función del volumen de datos de registro recibidos.
max_items number Campo opcional. Solo se aplica si amount_resizing se establece en "false". Úselo para establecer un límite en el tamaño del búfer de mensajes (en registros). El valor predeterminado es 2000.
azure_resource_id string Campo opcional. Define el id. del recurso de Azure donde residen los datos.
El valor del id. de recurso es especialmente útil si usa RBAC de contexto de recursos para proporcionar acceso únicamente a datos específicos.

Sugerencia

  • Puede encontrar el identificador y la clave principal del área de trabajo en el recurso del área de trabajo, en Agents management (Administración de agentes).
  • Sin embargo, dado que tener credenciales y otra información confidencial almacenada en texto no cifrado en los archivos de configuración no está de acuerdo con los procedimientos recomendados de seguridad, se recomienda encarecidamente usar el almacén de claves de Logstash para incluir de forma segura el identificador del área de trabajo y la clave principal del área de trabajo en la configuración. Consulte la documentación de Elastic para obtener instrucciones.

Configuraciones de ejemplo

Estas son algunas configuraciones de ejemplo que usan algunas opciones diferentes.

  • Una configuración básica que usa una canalización 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"
          }
      }
    
  • Una configuración básica que usa una canalización 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"
          }
      }
    
  • Una configuración avanzada:

      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
          }
      } 
    
  • Una configuración más avanzada para analizar una marca de tiempo personalizada y una cadena JSON a partir de datos de texto no estructurados y registrar un conjunto seleccionado de campos en Log Analytics con la marca de tiempo extraída:

      # 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 el repositorio de GitHub del complemento de salida para más información sobre sus trabajos internos, la configuración y las opciones de rendimiento.

Paso 3: Reinicio de Logstash

Paso 4: Visualización de los registros entrantes en Microsoft Sentinel

  1. Compruebe que los mensajes se envían al complemento de salida.

  2. En el menú de navegación de Microsoft Sentinel, haga clic en Registros. En el encabezado Tablas, expanda la categoría Registros personalizados. Busque y haga clic en el nombre de la tabla que especificó (con un sufijo _CL) en la configuración.

    Screenshot of log stash custom logs.

  3. Para ver los registros de la tabla, consulte la tabla usando su nombre como esquema.

    Screenshot of a log stash custom logs query.

Supervisión de registros de auditoría de complementos de salida

Para supervisar la conectividad y la actividad del complemento de salida de Microsoft Sentinel, habilite el archivo de registro de Logstash adecuado. Consulte el documento Diseño del directorio de Logstash para conocer la ubicación del archivo de registro.

Si no ve ningún dato en este archivo de registro, genere y envíe algunos eventos localmente (a través de los complementos de entrada y filtro) para asegurarse de que el complemento de salida está recibiendo datos. Microsoft Sentinel solo ofrece soporte técnico para los problemas relacionados con el complemento de salida.

Pasos siguientes

En este documento, aprendió a usar Logstash para conectar orígenes de datos externos a Microsoft Sentinel. Para más información sobre Microsoft Sentinel, consulte los siguientes artículos: