在 Windows 上运行 Logstash编辑

在阅读本节之前,请参阅 安装 Logstash 以开始使用。您还需要熟悉 从命令行运行 Logstash,因为命令行选项用于测试在 Windows 上运行 Logstash。

在测试 Logstash 时,指定命令行选项非常有用。但是,在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。使用设置文件可以更轻松地指定多个选项,并且它为您提供了一个可版本化的文件,您可以使用该文件在每次运行时一致地启动 Logstash。

安装后,Logstash 不会自动启动。如何在 Windows 上启动和停止 Logstash 取决于您是要手动运行它,作为服务运行(使用 NSSM)还是作为计划任务运行。本指南提供了一些在 Windows 上运行 Logstash 的方法示例。

建议在将 Logstash 作为服务或计划任务运行之前,通过手动运行 Logstash 来验证您的配置是否有效。

验证 Windows 上的 JVM 先决条件编辑

安装 受支持的 JVM 后,打开 PowerShell 会话并运行以下命令以验证是否设置了 LS_JAVA_HOME 以及 Java 版本

Write-Host $env:LS_JAVA_HOME编辑

  • 输出应指向 JVM 软件所在的位置,例如

    PS C:\> Write-Host $env:LS_JAVA_HOME
    C:\Program Files\Java\jdk-11.0.3
  • 如果未设置 LS_JAVA_HOME,请执行以下操作之一

    • 使用 GUI 设置

      • 导航到 Windows 环境变量 窗口
      • 在“环境变量”窗口中,编辑 LS_JAVA_HOME 以指向 JDK 软件所在的位置,例如: C:\Program Files\Java\jdk-11.0.3
    • 使用 PowerShell 设置

      • 在管理员 PowerShell 会话中,执行以下 SETX 命令

        PS C:\Windows\system32> SETX /m LS_JAVA_HOME "C:\Program Files\Java\jdk-11.0.3"
        PS C:\Windows\system32> SETX /m PATH "$env:PATH;C:\Program Files\Java\jdk-11.0.3\bin;"
      • 退出 PowerShell,然后打开一个新的 PowerShell 会话并运行 Write-Host $env:LS_JAVA_HOME 进行验证

Java -version编辑

  • 此命令将产生类似于以下内容的输出

    PS C:\> Java -version
    java version "11.0.3" 2019-04-16 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)

截至本文档发布之日,请在继续之前查看此 已知问题,该问题会影响 Java 11

完成 设置和运行 Logstash 并验证 JVM 先决条件后,您可以继续。

对于下面列出的示例,我们运行的是 Windows Server 2016、Java 11.0.3,已将 Logstash ZIP 包 解压到 C:\logstash-8.14.3\,并使用如下所示的示例 syslog.conf 文件(存储在 C:\logstash-8.14.3\config\ 中)。

手动运行 Logstash编辑

可以使用 PowerShell 手动运行 Logstash。打开管理员 PowerShell 会话,然后运行以下命令

PS C:\Windows\system32> cd C:\logstash-8.14.3\
PS C:\logstash-8.14.3> .\bin\logstash.bat -f .\config\syslog.conf

在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。

等待出现以下消息,以确认 Logstash 已成功启动

[logstash.runner          ] Starting Logstash {"logstash.version"=>"8.14.3"}
[logstash.inputs.udp      ] Starting UDP listener {:address=>"0.0.0.0:514"}
[logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

使用 NSSM 将 Logstash 作为服务运行编辑

建议您在继续之前通过手动运行 Logstash 来验证您的配置是否有效。

下载 NSSM,然后将 nssm.exenssm-<版本号>\win64\nssm.exe 解压到 C:\logstash-8.14.3\bin\。然后打开管理员 PowerShell 会话,然后运行以下命令

PS C:\Windows\system32> cd C:\logstash-8.14.3\
PS C:\logstash-8.14.3> .\bin\nssm.exe install logstash

出现 NSSM 服务安装程序 窗口后,在 应用程序 选项卡中指定以下参数

  • 应用程序 选项卡中

    • 路径:指向 logstash.bat 的路径: C:\logstash-8.14.3\bin\logstash.bat
    • 启动目录:指向 bin 目录的路径: C:\logstash-8.14.3\bin
    • 参数:对于此示例,要启动 Logstash: -f C:\logstash-8.14.3\config\syslog.conf

      在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。

  • 详细信息 选项卡中查看并进行任何必要的更改

    • 确保 启动类型 设置正确
    • 显示名称说明 字段设置为相关内容
  • 查看任何其他必需的设置(对于本示例,我们不做任何其他更改)

    • 请务必确定是否需要设置 登录 用户
  • 验证 服务名称 是否设置正确

    • 对于此示例,我们将其设置为 logstash-syslog
  • 单击 安装服务

    • 出现 服务“logstash-syslog”已成功安装! 窗口时,单击“确定”

使用 NSSM 安装服务后,请按照 PowerShell 管理服务 文档验证并启动服务。

使用任务计划程序运行 Logstash编辑

建议您在继续之前通过手动运行 Logstash 来验证您的配置是否有效。

打开 Windows 任务计划程序,然后在“操作”窗口中单击 创建任务。在 操作 选项卡中指定以下参数

  • 操作 选项卡中

    • 单击 新建,然后指定以下内容
    • 操作: 启动程序
    • 程序/脚本: C:\logstash-8.14.3\bin\logstash.bat
    • 添加参数: -f C:\logstash-8.14.3\config\syslog.conf
    • 起始于: C:\logstash-8.14.3\bin\

      在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。

  • 常规触发器条件设置 选项卡中查看并进行任何必要的更改。
  • 单击 确定 以完成创建计划任务。
  • 创建新任务后,等待它按计划运行,或选择该服务,然后单击 运行 以启动该任务。

可以通过选择该服务,然后在“任务计划程序”窗口中单击 结束 来停止 Logstash。

Logstash 配置示例编辑

我们将使用以下配置(文件名是 syslog.conf)将 Logstash 配置为侦听端口 514 上的 syslog 消息

# Sample Logstash configuration for receiving
# UDP syslog messages over port 514

input {
  udp {
    port => 514
    type => "syslog"
  }
}

output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}