搭建 ELK 日志平台 - 安装 Logstash

上回书说道,我们已经安装好了 Elastic Search。那么这次,我们继续安装 Logstash。

安装 Logstash

为了安装方便,本次依旧选择使用 RPM 包安装。

1
sudo rpm -ivh logstash-6.2.2.rpm

安装结束后,运行 Logstash 以检查安装是否成功。使用如下命令启动 Logstash,并配置输入源为基本输入 (stdin),以及输出到基本输出 (stdout):

1
2
# 因为使用RPM方式安装,导致/usr/share/logstash/data仅root才可写入,所以需要使用sudo环境
sudo /usr/share/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{} }'

在日志滚动停止后,随意输入一些字符串,比如”hello world”,并回车,检查输出:

1
2
hello world
2018-02-26T07:18:07.904Z localhost.localdomain hello world

可见 Logstash 成功从 stdin 读取到了输入,并打印到了 stdout,证实安装成功。

配置 Logstash

Logstash 系统配置

编辑 /etc/logstash/logstash.yml,修改 Logstash 系统级配置。

1
2
# 配置节点名,若未配置则默认取本机主机名作为节点名
node.name: elk-logstash-node-0

其他配置项略,如有需要请参考 Logstash Reference。

日志输入输出配置

这里我们配置让 Logstash 接收 Cent OS 的系统日志。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
input {
file {
path => "/var/log/messages*"
type => "syslog"
}
}

# Filter not needed. Commented out.
#filter {
#
#}

output {
elasticsearch {
hosts => "localhost:9200"
}
}

另外,本例中还需要配置 Logstash 以 root 权限运行以读取系统日志 (messages 文件默认权限为 600),实际使用时需要按照实际需求配置。

编辑 /etc/systemd/system/logstash.service,修改 user 和 group 为 root

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[Unit]
Description=logstash

[Service]
Type=simple
User=root
Group=root
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target

然后使 systemd 重新加载配置文件并重新启动 Logstash

1
2
sudo systemctl daemon-reload
sudo systemctl restart logstash

使 Logstash 开机自启动

由于 RPM 包安装时已经放好了自启动的配置文件,我们只需要在 systemd 中激活它就可以了。

1
2
sudo systemctl enable logstash
sudo systemctl start logstash

参考文档

Logstash Reference