在 Windows 上运行 Logstash
编辑在 Windows 上运行 Logstash
编辑在阅读本节之前,请参阅 安装 Logstash 开始入门。您还需要熟悉 从命令行运行 Logstash,因为命令行选项用于测试在 Windows 上运行 Logstash。
在测试 Logstash 时,指定命令行选项非常有用。但是,在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。使用设置文件可以让您更轻松地指定多个选项,并且它为您提供了一个单一的、可版本化的文件,您可以使用它来一致地启动每次运行的 Logstash。
Logstash 安装后不会自动启动。如何在 Windows 上启动和停止 Logstash 取决于您是想手动运行它,作为服务(使用 NSSM),还是将其作为计划任务运行。本指南提供了一些 Logstash 在 Windows 上运行方式的示例。
建议您在将 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.16.0\
,并使用以下显示的示例 syslog.conf
文件(存储在 C:\logstash-8.16.0\config\
中)。
手动运行 Logstash
编辑可以使用 PowerShell 手动运行 Logstash。打开管理员 PowerShell 会话,然后运行以下命令
PS C:\Windows\system32> cd C:\logstash-8.16.0\ PS C:\logstash-8.16.0> .\bin\logstash.bat -f .\config\syslog.conf
在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。
等待以下消息出现,以确认 Logstash 已成功启动
[logstash.runner ] Starting Logstash {"logstash.version"=>"8.16.0"} [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.exe
从 nssm-<version.number>\win64\nssm.exe
解压到 C:\logstash-8.16.0\bin\
。然后打开管理员 PowerShell 会话,然后运行以下命令
PS C:\Windows\system32> cd C:\logstash-8.16.0\ PS C:\logstash-8.16.0> .\bin\nssm.exe install logstash
出现 NSSM 服务安装程序
窗口后,在 应用程序
选项卡中指定以下参数
-
在
应用程序
选项卡中- 路径:指向
logstash.bat
的路径:C:\logstash-8.16.0\bin\logstash.bat
- 启动目录:指向
bin
目录的路径:C:\logstash-8.16.0\bin
-
参数:对于此示例,要启动 Logstash:
-f C:\logstash-8.16.0\config\syslog.conf
在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。
- 路径:指向
-
查看并在
详细信息
选项卡中进行必要的更改- 确保已适当地设置
启动类型
- 将
显示名称
和说明
字段设置为相关的名称
- 确保已适当地设置
-
查看任何其他必需的设置(对于此示例,我们没有进行任何其他更改)
- 请务必确定您是否需要设置
登录
用户
- 请务必确定您是否需要设置
-
验证是否已适当地设置
服务名称
- 对于此示例,我们将将其设置为
logstash-syslog
- 对于此示例,我们将将其设置为
-
单击
安装服务
- 出现
服务“logstash-syslog”安装成功!
窗口时,单击“确定”
- 出现
使用 NSSM 安装服务后,请按照 PowerShell 管理服务 文档验证并启动服务。
使用任务计划程序运行 Logstash
编辑建议您在继续操作之前手动运行 Logstash 以验证您的配置是否有效。
打开 Windows 任务计划程序,然后单击“操作”窗口中的 创建任务
。在 操作
选项卡中指定以下参数
-
在
操作
选项卡中- 单击
新建
,然后指定以下内容 - 操作:
启动程序
- 程序/脚本:
C:\logstash-8.16.0\bin\logstash.bat
- 添加参数:
-f C:\logstash-8.16.0\config\syslog.conf
-
起始位置:
C:\logstash-8.16.0\bin\
在生产环境中,我们建议您使用 logstash.yml 来控制 Logstash 的执行。
- 单击
- 查看并在
常规
、触发器
、条件
和设置
选项卡中进行必要的更改。 - 单击
确定
以完成创建计划任务。 - 创建新任务后,请等待其按计划运行,或者选择服务,然后单击
运行
以启动任务。
可以通过选择服务,然后在“任务计划程序”窗口中单击 结束
来停止 Logstash。
Logstash 配置示例
编辑我们将使用此配置将 Logstash 配置为通过端口 514 侦听 syslog 消息(文件名是 syslog.conf
)
# 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 } }