Filebeat+Logstash+Hadoop日志收集

准备

  • JDK 1.8
  • Hadoop 3.3.0
  • logstash 7.2.0
  • filebeat 7.2.0

以上安装简单,此处不再做介绍,hadoop集群安装参考

filebeat配置

此处仅为简要配置,详细信息请参考官方文档

filebeat.inputs:
- type: log  # 收集数据类型 log、json
  # 是否开启收集
  enabled: true
  # 收集日志的路径,可模糊匹配
  paths:
    - /data/logs/test/*.log
  # 可以设置标签,接收数据时根据标签区分处理
  tags: ["test"] 
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
setup.kibana:
output.logstash:
  # logstash 地址,可以多个
  hosts: ["logstash.dongle.com:4560"]
processors:
- add_host_metadata: ~

logstash配置

此处仅为简要配置,详细信息请参考官方文档
编辑配置文件 $LOGSTASH_HOME/config/test.conf(自定义)

input { 
	# 接收输入端口
    beats{ port => 4560}
}
filter{
# 对一些参数做处理
        ruby{
                code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
        }
        ruby{
                code => "event.set('@timestamp',event.get('timestamp'))"
        }
        mutate{
                remove_field => ["timestamp"]
        }
}

启动Filebeat

${FILEBEAT_HOME}/bin/filebeat

logstash同步hadoop方式一:webhdfs方式

output {
# 数据输出
      webhdfs{
              host=>"hadoop.dongle.com"
              port => 9870
              user => "root"
              path => "/data/logs/test/logstash-%{+YYYY-MM-dd-HH}.log"
              codec => "line { format => '%{[@metadata][ip_address]}|%{message}'}"
              retry_interval => 3
              retry_times => 3
      }
}

logstash同步hadoop方式二:本地落盘方式和Hadoop上传

因webhdfs是通过web接口传递数据,容易不稳定,可以先落盘再上传,方便后期失败修复

output{
      file{
              path => "/data/logs/test/logstash-%{+YYYY-MM-dd-HH}.log"
              codec => line { format => "%{[host][ip][0]}|%{message}"}
      }
}

hadoop 上传本地文件到hdfs

hadoop fs -put '/data/logs/test/logstash-2021-01-01-11.log' /data/logs/test/

启动logstash

${LOGSTASH_HOME}/bin/logstash -f config/test.conf

hadoop查看hdfs

hadoop fs -ls /data/logs/test/

版权声明:本文为Sheldon74原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。