持续创造,加快生长!这是我参加「日新方案 10 月更文应战」的第4天,点击查看活动详情

前语

大家好,我是小郭,最近在玩 ELK 日志渠道,它是 Elastic 公司推出的一整套日志搜集、剖析和展示的解决方案。

只要学习了,操作了才干算真正的学会使用了,虽然看起来简略,但是里面的流程步骤仍是许多的,将步骤和遇到的问

题记载和总结下,今天主要分享下在Docker环境下布置 Filebeat 日志搜集东西。

# 从零到一搭建ELK日志,在Docker环境下布置 Elasticsearch 数据库

# 从零到一搭建ELK日志,在Docker环境下布置 logstash 东西

# 从零到一搭建ELK日志,在Docker环境下布置 Kibana 可视化东西

什么是 Filebeat?

轻量型日志采集器,用于转发和集中日志数据

Filebeat 监控您指定的日志文件或方位,搜集日志事情,并将它们转发到Elasticsearch或 Logstash生成索引

作业原理

发动 Filebeat 时,它会发动一个或多个输入,这些输入会在您为日志数据指定的方位中查找

对于 Filebeat 定位的每个日志,Filebeat 都会发动一个收割机。每个harvester 读取单个日志以获取新内容并将新日志数据发送到libbeat,libbeat 聚合事情并将聚合数据发送到您为Filebeat 装备的输出。

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具

输入

filebeat.inputs:
    - type: log 
    paths: 
    - /var/log/*.log 
    - /var/path2/*.log

输入的效果:输入负责管理收割机并查找一切要读取的源。

支撑输入的类型:www.elastic.co/guide/en/be…

收割机

收割机的效果:负责翻开和封闭文件,这意味着在收割机运行时文件描述符保持翻开状况

假如文件在搜集进程中被删除或重命名,Filebeat 会持续读取该文件。这样做的副效果是保留磁盘上的空间,直到收割机封闭

默许状况下,Filebeat 会保持文件翻开,直到close_inactive抵达。

存在丢失的状况:

Filebeat 的至少一次交给保证存在限制,触及日志轮换和旧文件的删除。假如日志文件写入磁盘并旋转的速度超过了 Filebeat 处理的速度,或许假如在输出不行用时删除了文件,则数据可能会丢失

布置 Filebeat 日志搜集东西

  1. 装置Filebeat镜像
docker pull docker.elastic.co/beats/filebeat:8.1.0
  1. 创建装备文件
mkdir -p /data/elk/filebeat
touch filebeat.yml

filebeat.yml装备

需求注意的坑,在filebeat.yml 装备的日志地址是装备docker里面的地址,否则会读不到

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/share/filebeat/logs/*
# output.logstash:
#  hosts: ["127.0.0.1:9900"]
output.elasticsearch: 
  hosts: ["192.168.56.10:9200"]  
  1. 发动Filebeat
 docker run -d -v /data/elk/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
 -v /home/logs:/usr/share/filebeat/logs
 --name filebeat docker.elastic.co/beats/filebeat:8.1.0

指令可能存在换行的问题,执行有问题,可以先复制出来去掉换行

  1. 生成索引,有生成才算成功

经过docker logs来看Filebeats的操作

咱们可以看到 Filebeats 内部发动了 go程序 去咱们所装备的文件日志拉取数据

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具

查询是否生成索引

curl http://localhost:9200/_cat/indices?v 

看到filebeat开头的那个索引,就表示成功了

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具

  1. 上Kibana上增加索引

为了能看到日志,咱们必须手动增加索引

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具

再回到查询页面的时分咱们就可以进行挑选的操作了

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具

装备

Filebeat提供给咱们的装备是非常丰富的,咱们可以将搜集到的数据写入许多不同的当地

这里我总结了部分常用到的,更多的装备信息咱们可以到官网上去查询。

// 输出
filebeat.inputs:
// 类型
- type: filestream   
  id: my-filestream-id
  paths:
    - /var/log/*.log
// 模块装备 设置发动模块
filebeat.modules:
- module: nginx
  access:
  error:
- module: mysql
  slowlog:
// 输出到Es
output.elasticsearch:
  hosts: ["https://myEShost:9200"]
  username: "filebeat_writer"
  password: "YOUR_PASSWORD"
  index: "%{[fields.log_type]}-%{[agent.version]}-%{+yyyy.MM.dd}" 
  // 默许行为,当一个事情被 elasticsearch 清晰拒绝时,它会被丢掉。
  non_indexable_policy.drop: ~
  indices:
    - index: "warning-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "WARN"
    - index: "error-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "ERR"
// 输出到logstash
output.logstash:
    hosts: ["localhost:5044", "localhost:5045"]
// 假如设置为 true 并且装备了多个 Logstash 主机,则输出插件会将已发布的事情负载平衡到一切 Logstash 主机上。
// 假如设置为 false,则输出插件将一切事情仅发送到一个主机(随机确认),
// 假如所选主机无呼应,则将切换到另一台主机。默许值为假。
  loadbalance: true
  index: filebeat
  proxy_url: socks5://user:password@socks5-proxy:2233
  enabled: true
 output.kafka:
  # initial brokers for reading cluster metadata
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
  # message topic selection + partitioning 用于生产事情的 Kafka 主题。
  topic: '%{[fields.log_topic]}'
  partition.round_robin:
    reachable_only: false
// 署理要求的 ACK 可靠性等级。0=无呼应,1=等候本地提交,-1=等候一切副本提交。默许值为 1
  required_acks: 1
// 设置输出紧缩编解码器
  compression: gzip
// JSON 编码音讯的最大答应巨细
  max_message_bytes: 1000000 

总结

咱们主要完结在Docker环境下布置 Filebeat 日志搜集东西,他是搭建ELK日志非常重要的一部分,咱们利用Filebeat日志搜集完结之后,将数据写入 Elasticsearch 后用 Kibana 进行可视化展示,目前咱们已经完结了Fliebeat + Es +Kibana部分。

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具


欢迎大家评论、点赞、保藏~

如有不对的当地欢迎指出!

不得不学!从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具