版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33222871/article/details/80624060
对于分布式系统,如果只是把日志存储在本地,或者直接输出到控制台,以后调试和差错将会非常麻烦,需要查看若干个服务器。
因此,我采用logstash+filebeat的方法统一处理日志(完整应该使用elk+filebeat处理日志)
材料:
- 服务器1(bebian系列),ip为192.168.1.1,该服务器搭建logstash
- 服务器2(bebian系列):ip为192.168.1.2,该服务器搭建应用程序及filebeat
搭建filebeat
- wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz
- tar -zxvf filebeat-6.2.4-linux-x86_64.tar.gz
- vim filebeat.yml
- 配置信息如下
注:/home/inkbox/log/test.log为log4j输出的文件位置;hosts为logstash所在服务器,4560为配置的端口filebeat.prospectors: - input_type: log paths: - /home/inkbox/log/test.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 3 setup.kibana: output.logstash: hosts: ["192.168.1.1:4560"]
安装logstash
- wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz
- tar -zxvf logstash-6.2.4.tar.gz
- vim log4j.conf (这是一个新文件)
- 配置信息如下
注:4560端口即为filebeat配置input { beats{ port => 4560} } output { stdout{ codec => rubydebug}}
log4j配置省略,注意文件位置和paths相同即可
启动logstash-> ./logstash -f log4j.conf
启动filebeat-> ./filebeat -e -c filebeat.yml &
启动java程序即可
关闭filebeat使用杀进程方式
注:在logstash中看到日志有一定的延迟。原打算采用log4j远程输出的方式,但是logstash的logstash-input-log4j在高版本下已过时,根本收不到消息;
再注:原有启动命令将会挂起线程,可以使用nohup命令启动服务