到目前为止,logstash 没有给出官方的,在 windows 系统中作为后台服务运行的方式。本文将介绍如何使用第三方工具 nssm 让 logstash 作为后台服务运行在 windows 中。
说明:演示的环境为 windows server 2016,logstash 的版本为 6.2.4。

安装 Java Development Kit(JDK)

运行 logstash 6.2.4 需要先在环境中安装 JDK,演示中笔者安装的版本为 jdk-8u111-windows-x64,直接安装到默认的目录中。

在 logstash 的运行脚本中用到了 JAVA_HOME 环境变量,因此我们需要先添加这个环境变量(注意,环境变量的值为 JDK 的实际安装目录):

环境变量添加完成后,新启动一个 PowerShell 窗口,执行下面的命令:

> echo $env:JAVA_HOME

通过输出的结果验证环境变量是否被正确添加。

安装 NSSM

NSSM 是 windows 下的一个后台服务管理程序,完整功能请参考其官方文档。本文中我们使用它轻松地把 logstash 这样的程序配置为后台运行的服务。请从 NSSM 官方下载安装包,解压缩后把合适架构的可执行程序拷贝到安装目录。比如笔者把 x64 目录下的 nssm.exe 文件拷贝到了 C:\Program Files\nssm 目录下。
为了方便使用,把路径 C:\Program Files\nssm 添加到 PATH 环境变量中,这样在任何路径下都可以执行 nssm 命令而不用写出其完整的路径。

安装 logstash

在 windows 中安装 logstash 就是把从官方下载的安装包 logstash-6.2.4.zip 解压缩。示例中,我把它解压到了 C 盘的根目录下,并重命名为 logstash,因此 logstash 的安装目录为:C:\logstash。

为了验证最终的安装结果,我们创建一个测试用的配置文件。在 C:\logstash\bin 目录下创建文件 logstash.conf,编辑其内容如下:

input {
# Accept input from the file.
file {
path => ["c:\input.txt"]
}
} output {
# Output to the file.
file {
path => "c:\output.txt"
codec => line { format => "custom format: %{message}"}
}
}

同时在 C 盘的根目录下创建两个文本文件,分别为 input.txt 和 output.txt。

配置 logstash 为后台服务

以管理员权限启动 PowerShell,进入 C:\logstash\bin 目录,然后执行下面的命令:

> nssm install logstash

在上面的对话框中分别设置 Path、Startup directory 和 Arguments。

比如 Path 为:C:\logstash\bin\logstash.bat
Startup directory 为:C:\logstash\bin
Arguments 为:-f C:\logstash\bin\logstash.conf
最后点击 "Install service" 按钮。
安装成功后,在服务管理程序中会出现一个名称为 "logstash" 的服务,其启动类型为 "自动"。以后我们就可以在服务管理器中像管理其他服务一样管理 logstash 服务了!现在先在服务管理器中启动 logstash 服务。

验证 logstash 服务运行正常

我们刚才添加了一个 logstash 配置,input 和 output 都是文件,分别是 c:\input.txt 和 c:\output.txt。
在 PowerShell 中执行下面的命令:

> echo "hello" >> c:\input.txt
> echo "world" >> c:\input.txt

然后查看 c:\output.txt 文件的内容,如果正常的话,其内容应该是:

custom format: hello
custom format: world

如果与上面的内容不符,可能是配置有问题,请参考本文重新检查配置信息。如果确认配置信息正确,可以检查 C:\logstash\logs 目录下的日志文件,看看问题究竟出在哪里。

参考:
Installing Logstash on Windows
NSSM
Set Logstash as a Windows service

最新文章

  1. PropertiesUtil.java
  2. java个人总结
  3. Spring的BeanPostProcesser接口介绍
  4. java main函数不执行?
  5. stack适配栈
  6. typecho for SAE
  7. PHP获取当前的毫秒值
  8. 基于Cef内核的多店铺登录器(含源码)
  9. 利用反射机制设计Dao
  10. Flume日志采集系统
  11. delphi 线程教学第四节:多线程类的改进
  12. kafka 集群
  13. Linux - 通过LVM对磁盘进行动态扩容
  14. goroutine的意义与实现
  15. js 学习之路6: if...else...条件语句的使用
  16. Python-类的组合与重用
  17. 解决CUDA driver version is insufficient for CUDA runtime version
  18. Android : App客户端与后台服务的AIDL通信以及后台服务的JNI接口实现
  19. latex中使用listings显示代码
  20. 深拷贝 浅拷贝 python

热门文章

  1. KEIL MDK编译后的代码量和RAM使用详解
  2. 应用ImageJ对荧光图片进行半定量分析
  3. C#连接oracle 数据库查询时输入中文查询不出来,用plsql就可以
  4. Visual Studio一直弹出“未将对象引用设置到对象的实例”对话框的处理
  5. Git基本用法(二)
  6. CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性。
  7. 浅议Delphi中的Windows API调用(举的两个例子分别是String和API,都不错,挺具有代表性)
  8. 项目集成dubbo
  9. uni-app中Vuex的引用
  10. RocketMQ(1)-架构原理