您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

使用 Logstash 将数据源连接到 Azure Sentinel

重要

使用 Logstash 输出插件的数据引入目前为公共预览版。 此功能不附带服务级别协议,不建议将其用于生产工作负载。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

对 Logstash 数据收集引擎使用 Azure Sentinel 的输出插件时,可以通过 Logstash 将所需的任何类型的日志直接发送到 Azure Sentinel 中的 Log Analytics 工作区。 日志将发送到使用输出插件定义的自定义表格。

若要详细了解如何使用 Logstash 数据收集引擎,请参阅 Logstash 入门

概述

体系结构和背景

Logstash 体系结构的示意图。

Logstash 引擎由三个组件组成:

  • 输入插件:以自定义的方式从各种源收集数据。
  • 筛选器插件:根据指定的条件对数据进行处理和规范化。
  • 输出插件:以自定义的方式将收集和处理的数据发送到各种目标。

备注

Azure Sentinel 仅支持自带的输出插件。 Azure Sentinel 不支持第三方输出插件,或其他任何类型的 Logstash 插件。

Logstash 的 Azure Sentinel 输出插件使用 Log Analytics HTTP 数据收集器 REST API 将 JSON 格式的数据发送到 Log Analytics 工作区。 数据将引入自定义日志。

在 Logstash 部署 Azure Sentinel 输出插件

步骤 1:安装

Logstash 集合中提供了 Azure Sentinel 输出插件。

步骤 2:配置

使用 Logstash 配置文件的结构文档中的信息,并通过以下键和值将 Azure Sentinel 输出插件添加配置中。 (正确的的配置文件语法显示在表格后。)

字段名称 数据类型 说明
workspace_id string 输入工作区 ID GUID。 *
workspace_key string 输入工作区主键 GUID。 *
custom_log_table_name string 设置将引入日志的表格的名称。 只能为每个输出插件配置一个表格名称。 日志表格将显示在 Azure Sentinel 的“日志”下的“表格”中的“自定义日志”类别中,并带有 _CL 后缀 。
endpoint string 可选字段。 默认情况下,这是 Log Analytics 终结点。 使用此字段可设置备用终结点。
time_generated_field string 可选字段。 此属性将替代 Log Analytics 中默认的 TimeGenerated 字段。 在数据源中输入时间戳字段的名称。 该字段中的数据必须遵循 ISO 8601 格式 (YYYY-MM-DDThh:mm:ssZ)
key_names array 输入 Log Analytics 输出架构字段的列表。 每个列表项都应加单引号,各项之间以逗号分隔,并且整个列表用方括号括起来。 请参阅以下示例。
plugin_flush_interval 数字 可选字段。 设置此项以定义向 Log Analytics 传输信息的最大时间间隔(以秒为单位)。 默认值为 5。
amount_resizing boolean True 或 False。 启用或禁用自动缩放机制,该机制根据收到的日志数据量调整消息缓冲区大小。
max_items 数字 可选字段。 仅在 amount_resizing 设置为“false”时适用。 用于设置(记录中的)消息缓冲区大小的上限。 默认为 2000。
azure_resource_id string 可选字段。 定义数据所在的 Azure 资源的 ID。
如果使用资源上下文 RBAC提供仅针对特定数据的访问,则资源 ID 值特别有用。
  • 在“代理管理”下可找到工作区资源中的工作区 ID 和主键。

示例配置

下面是一些使用几个不同选项的示例配置。

  • 使用 filebeat 输入管道的基本配置:

      input {
          beats {
              port => "5044"
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "4g5tad2b-a4u4-147v-a4r7-23148a5f2c21" # <your workspace id>
            workspace_key => "u/saRtY0JGHJ4Ce93g5WQ3Lk50ZnZ8ugfd74nk78RPLPP/KgfnjU5478Ndh64sNfdrsMni975HJP6lp==" # <your workspace key>
            custom_log_table_name => "tableName"
          }
      }
    
  • 使用 tcp 输入管道的基本配置:

      input {
          tcp {
              port => "514"
              type => syslog #optional, will effect log type in table
          }
      }
      filter {
      }
      output {
          microsoft-logstash-output-azure-loganalytics {
            workspace_id => "4g5tad2b-a4u4-147v-a4r7-23148a5f2c21" # <your workspace id>
            workspace_key => "u/saRtY0JGHJ4Ce93g5WQ3Lk50ZnZ8ugfd74nk78RPLPP/KgfnjU5478Ndh64sNfdrsMni975HJP6lp==" # <your workspace key>
            custom_log_table_name => "tableName"
          }
      }
    
  • 高级配置:

      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
          }
      } 
    

    备注

    请访问输出插件 GitHub 存储库,详细了解其内部工作原理、配置和性能设置。

步骤 3:重启 Logstash

步骤 4:查看 Azure Sentinel 中的传入日志

  1. 验证消息是否发送到输出插件。

  2. 在 Azure Sentinel 导航菜单中单击“日志”。 在“表格”标题下,展开“自定义日志”类别 。 找到在配置中指定的表格的名称(带有 _CL 后缀)并单击该名称。

    Logstash 自定义日志的屏幕截图。

  3. 若要查看表格中的记录,请将表格名称用作架构来查询表。

    Logstash 自定义日志查询的屏幕截图。

监视输出插件审核日志

若要监视 Azure Sentinel 输出插件的连接和活动,请启用相应的 Logstash 日志文件。 有关日志文件位置的信息,请参阅 Logstash 目录布局文档。

如果在此日志文件中看不到任何数据,请(通过输入插件和筛选器插件)在本地生成并发送一些事件以确保输出插件在接收数据。 Azure Sentinel 将支持只与输出插件相关的问题。

后续步骤

本文档介绍了如何使用 Logstash 将外部数据源连接到 Azure Sentinel。 要详细了解 Azure Sentinel,请参阅以下文章: