filebeat和logstash 部署和测试

参考地址:https://www.cnblogs.com/cjsblog/p/9459781.html

通过filebeat来实现日志的收集。日志采集的工具有fluentd,flume,logstash,beats。使用filebeat的原因。因为logstash是jvm运行,资源消耗比较大,启动一个logstash需要消耗500M左右的内存,而filebeat只需要10多M内存资源。常用的ELK日志采集方案中,大部分的做法就是将所有节点的日志内容通过filebeat送到kafka消息队列,然后使用logstash集群读取消息队列内容,根据配置文件进行过滤。然后将过滤之后的文件输送到elasticsearch中,通过kibana去展示。

参考:https://www.cnblogs.com/wangzhuxing/p/9678578.html

linux下载解压后的filebeat和logstash后,进行配置

配置filebeat.yml的基本配置如下:

- type: log

  enabled: true

  paths:

    - /data/public/filebeat/testDataLogs/logstash-tutorial.log

output.logstash:

  hosts: ["localhost:5044"]

默认的output.logstash是elasticsearch,切换到测试输出到logstash 

logstash的配置,在当前目录新增一个first-pipeline.conf文件,内容如下:

input {

    beats {

        port => "5044"

    }

}

#filter {

#  grok {

  #      match => { "message" => "%{COMBINEDAPACHELOG}"}

  # }

#}

output {

    stdout { codec => rubydebug }

}

input 指日志数据传输到logstash中,beats 为filebeat方式,port 定义监听端口

output 输出配置,如上配置是打印在控制台

先启动Logstash

bin/logstash -f first-pipeline.conf --config.test_and_exit

--config.test_and_exit选项的意思是解析配置文件并报告任何错误

bin/logstash -f first-pipeline.conf --config.reload.automatic

--config.reload.automatic选项的意思是启用自动配置加载,以至于每次你修改完配置文件以后无需停止然后重启Logstash

再启动filebeat

./filebeat -e -c filebeat.yml -d"publish"

此时logstash 控制台会输出日志

知识点:

filebeat目录的data/registry  是filebeat感知文件有没有被收集过,通过registry记录的状态。每条event发送到output后都要等待ack.只有收到ack了才会认为数据发送成功。然后状态记录到registry(如果数据采集阶段没有丢失,后面的传输可以保证不丢失,因为有ack的确认和重传机制)

Filebeat处理文件时会维护一个状态,这个状态里面记录了收集过的每一个带绝对路径的文件名,文件的inode值,文件内容上次收集的位置(即offset)以及其它一些信息。这个状态维护在内存里面,过一段时间会刷新到磁盘上,默认刷到registry这个文件里面。程序如果重启,就从这个文件重新加载,恢复之前的状态。可以认为这个文件就是Filebeat能正常工作的核心

参考:http://niyanchun.com/filebeat-truncate-bug.html

你可能感兴趣的:(filebeat和logstash 部署和测试)