Logstash配置以服务方式运行

logstash最常见的运行方式即命令行运行./bin/logstash -f logstash.conf然后通过ctrl+c结束,这种方式的优点在于运行方便,但是缺点也很明显,不便于管理,同时如果遇到服务器重启,则维护成本会更高一些,如果在生产环境运行logstash建议还是使用服务的方式运行。本文介绍如何将logstash加入linux的service中,以服务的方式启动logstash,同时借助service的特性实现开机自启动的能力。

0X01 环境准备

  • logstash 5.x 以上版本,假设安装在/opt/logstash目录
  • Centos服务器

0x02 配置

在安装目录下修改startip.optins文件

vi /opt/logstash/config/startup.options
# Set a home directory
LS_HOME=/opt/logstash

# logstash settings directory, the path which contains logstash.yml
LS_SETTINGS_DIR=/opt/logstash/config

# Arguments to pass to logstash
LS_OPTS="--path.settings ${LS_SETTINGS_DIR} -f /root/mylogstash"
# 我们把logstash的配置文件如logstash.conf都放在/root/mylogstash目录下面 

# user and group id to be invoked as
LS_USER=root
LS_GROUP=root

之后我们编辑logstash.conf 配置文件,下面的例子将heartbeat写到磁盘上

input{
    heartbeat{
        interval => 60
        type => "heartbeat"
        message => "logstash is alive"
    }

    syslog{
        host => "0.0.0.0"
        port => 1514
    }
}

output{
    file {
        path => "/root/logs/%{+yyyyMMdd}.log"
        codec => line { format => "%{message}"}
    }
}

0x03 创建服务

以root身份执行logstash命令创建服务

/opt/logstash/bin/system-install

完成后在会在这里创建一个配置文件/etc/systemd/system/logstash.service

0x04 启动服务

启动Logstash服务

  • 设置服务自启动:systemctl enable logstash
  • 启动服务:systemctl start logstash
  • 停止服务:systemctl stop logstash
  • 重启服务:systemctl restart logstash
  • 查看服务状态:systemctl status logstash

0x05 查看日志

默认情况下日志会保存在以下两个位置

  • /var/log/messages
  • /opt/logstash/logs

推荐阅读更多精彩内容