截至目前ELK已完成es、kibana的搭建,详情点击上方参考
现在开始搭建可以进行日志收集和过滤的logstash
环境准备
Centos7 1810
Kibana 6.6.1
10.9.8.97 data-node2
资源准备
1、Logstash包准备
去到es官网,找到需要的版本(本人使用6.6.1版本),根据需求下载,我这里下载rpm包,之后直接导进Linux
https://www.elastic.co/cn/downloads/past-releases/logstash-6-6-1
(此处下载缓慢,原因你懂的,可以直接从我百度盘里获取)
链接:https://pan.baidu.com/s/1WhF2oBvbU4SqJHmBTeBMcQ
提取码:fbjo
当然也可以直接用wget在linux里面获取
[root@es1_master_node_test ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.1.rpm
正式安装
[root@es3_data_node2_test ~]# rpm -ivh logstash-6.6.1.rpm
安装成功后先不要启动服务,先配置收集日志syslog
[root@es3_data_node2_test bin]# vim /etc/logstash/conf.d/syslog.conf
配置好后,检测配置的是否错误
[root@es3_data_node2_test bin]# cd /usr/share/logstash/bin
[root@es3_data_node2_test bin]# ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit
命令说明:
--path.settings 用于指定logstash的配置文件所在的目录
-f 指定需要被检测的配置文件的路径
--config.test_and_exit 指定检测完之后就退出
看到下图的提示就证明配置没有问题
接下来配置kibana的服务器ip以及监听端口
[root@es3_data_node2_test logstash]# vim /etc/rsyslog.conf
添加下面这一行
*.* @@10.9.8.97:10514 # 此ip为logstash服务器IP以及使用的端口(随意设置,只要不冲突就行,建议在1024之后,因为1024之内的端口都只能用root用户去监听)
保存配置后后重启rsyslog
[root@es3_data_node2_test ~]# systemctl restart rsyslog
此时用另外一台机器ssh登陆此机器,测试是否会有日志输出
[root@es3_data_node2_test bin]# ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf # syslog.conf配置文件已经配置为将日志输出到当前的终端上显示
测试结果如上图,登陆日志已经以JSON的格式打印到当前终端屏幕,测试成功
接下来修改配置文件,将收集到的日志输出到es服务器中
input {
syslog {
type => "system-syslog"
port => 10514
}
}
output {
elasticsearch {
hosts => ["10.9.8.93:9200","10.9.8.215:9200"] # 定义es服务器的ip
index => "system-syslog-%{+YYYY.MM}" # 定义索引
}
}
配置好后,接下来可能会出现进程正常启动,但是却找不到端口的情况,查看保存在/var/log/logstash/logstash-plain.log和/var/log/messages的日志发现是权限不够,我们启动logstash都是用的logstash用户起的,那么久需要给对应的文件logstash的组权限
需要赋权限的文件夹一:/var/log/logstash
[root@es3_data_node2_test log]# chown -R logstash. /var/log/logstash
需要赋权限的文件夹二:/var/lib/logstash
[root@es3_data_node2_test log]# chown -R logstash. /var/lib/logstash
搞定之后重启logstash,过一会就能发现设置的端口已经被监控了
此处可能出现下面这种情况,
[root@es3-logstash-test logstash]# systemctl restart logstash
Failed to restart logstash.service: Unit not found.
莫慌,问题不大,只是可能rpm安装的时候没有配置启动文件,执行下面这个即可
[root@es3-logstash-test logstash]# /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
此时在master-node节点测试,
[root@es1_master_node_test ~]# curl '10.9.8.93:9200/system-syslog-2019.12?pretty'
获取到如下图所示的JSON格式的指定索引详细信息
此时在服务器端的配置已经完成,接下来需要去kibana的web端进行配置
在Management ==> Index Patterns添加索引
创建完成后在Discover就能看到收集到的日志,至此logstash基础搭建已经完成。
后续可以选择使用logstash继续对nginx的日志进行收集,但是由于logstash比较庞大,所以我选择更为轻量的filebeat来进行日志采集,详情配置点击这里查看(五)ELK系列之Filebeat搭建