1.作用

filebeat可以用来收集数据,发送给elasticsearch或者logstash等

2.docker-compose.yml 配置

filebeat:
    image: docker.elastic.co/beats/filebeat:7.3.0
    container_name: filebeat
    volumes:
      - /usr/local/workspace/elk/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml
      - /usr/local/workspace/elk/filebeat/data:/usr/share/filebeat/data
    networks:
      - esnet
    depends_on:
      - es01
      - es02
      - logstash
      - kibana

说明:

1.depends_on: 由于filebeat是要将数据发给logstash,所以要先启动logstash才能启动filebeat

2.volumes 挂载两个地方,第一个是filebeat.docker.yml的配置文件,该配置文件可通过:

curl -L -O https://raw.githubusercontent.com/elastic/beats/7.3/deploy/docker/filebeat.docker.yml
下载,这是官网提供的:https://www.elastic.co/guide/en/beats/filebeat/current/running-on-docker.html

第二个挂载的是data,这里面保存了收集的数据情况等,至于为什么要挂载,我下面会说明

3.networks: esnet这个一定要和logstash的网络或者elasticsearch相同,看你设置的输出是哪个

3.filebeat.docker.yml配置

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/workspace/elk/filebeat/logstash-tutorial.log

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

#output.elasticsearch:
#  hosts: ["192.168.20.101:9200","192.168.20.101:9201"]
output.logstash:
  hosts: ["192.168.20.101:5044"]

由于这个文件是从官网下的,所以有一些默认配置,我们不用管,只要加上filebeat.inputs和output.logstash或者output.elasticsearch 或者其他的输出

说明:input中的paths是输入地址,我是从官网下载了一个测试用的logstash-tutorial.log作为输入的,下载地址:

wget https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz

其他属性请查看官网

4. filebeat.docker.yml的其他配置

setup.kibana:
  host: "192.168.20.109:5601" #
setup.template.overwrite: true #设置为true,使用默认的索引模板,如果置为false,需要自己再设置索引模板,第三步Load the index template in Elasticsearch中有自定义索引名称

这些配置我们其实是不需要设置的,但是要明白是什么意思。

第一个setup.kibana,因为官网的示例是直接使用kibana自动创建filebeat.*的索引模式,并传给elasticsearch一个filebeat.xxx的索引,所以需要连接。但是现实中,我们只需要将filebeat获取的数据传给elasticsearch或者logstash,然后去kibana上面自己手动生成索引模式就行了,所以是不需要这个属性的

第二个setup.template.overwrite,这个属性是用来定义索引模板的,我们用默认的就行了,默认就是true,所以不用设置,如果你想使用自己的索引模板,那么就要置为false,并需要其他操作,官网有操作方法

5.其他说明

5.1  data目录的挂载

测试时,在每次重启前,都必须删除data/register注册表中的信息,这个里面保存了filebeat已经读取的信息的情况,如果不清空,那么当我重新启动filebeat时,他并不会自动的再去获取一遍指定的log,而是从上一次结束的地方开始获取,而我们使用的静态的log文件,那么一次获取就会获取到全部数据,那么下次重启时,默认该文件已读完,就不读了,所以我上面会挂载data目录,就是为了方便测试的时候操作删除,正式环境,一般是没有必要删除的,所以可以不用挂载

5.2 elasticsearch hosts

如果output.elasticsearch的hosts的值有多个ip,那么会默认负载均衡

5.3 索引

索引可以理解成一个数据库,索引名就是数据库的名称,当filebeat获取数据后在output.elasticsearch时,就会按照设置自动生成一个索引,然后传给elasticsearch,由elasticsearch保存,当kibana查询索引列表时就能查出来这个索引了。当你使用output.logstash时,传给elasticsearch的索引就由logstash决定,你可以在logstash中设置索引格式

5.4 filebeat端口

filebeat 不占端口,所以不需要映射端口号

5.5 其他

想要构建整个elk,请查看我的其他博客,我将elk拆分成了4个博客

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐