04.Filebeat简介原理及配置⽂件和⼀些案例
简介
Beats轻量型数据采集器
Beats 平台集合了多种单⼀⽤途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。
Beats系列
全品类采集器,搞定所有数据类型
Beats 可以直接将数据发送到 Elasticsearch 或通过 Logstash,在Kibana 中可视化之前,可以进⼀步处理和增强数据。
平时我们在查看⽇志时,使⽤ tail -f xxx.log 命令来实时查看⽇志,⽽当我们要⾯对成百上千、甚⾄成千上万的服务器、虚拟机和容器⽣成的⽇志时,再使⽤上⾯的命令来操作⼏乎是完全不可能的。Filebeat 为我们提供⼀种轻量型⽅法,⽤于转发和汇总⽇志与⽂件,让简单的事情不再繁杂。
Filebeat 内置有多种模块(Apache、Cisco ASA、Microsoft Azure、Nginx、MySQL 等等),可针对常见格式的⽇志⼤⼤
简化收集、解析和可视化过程,只需⼀条命令即可。之所以能实现这⼀点,是因为它将⾃动默认路径(因操作系统⽽异)与 Elasticsearch 采集节点管道的定义和 Kibana 仪表板组合在⼀起。
Filebaet⼯作原理
⽆论在任何环境中,随时都潜伏着应⽤程序中断的风险。Filebeat 能够读取并转发⽇志⾏,如果出现中断,还会在⼀切恢复正常后,从中断前停⽌的位置继续开始。
Filebeat由两个主要组件组成: Prospector(收割者)和 Harvester(勘探者)。
# Harvester
# 负责读取单个⽂件的内容
# 如果⽂件在读取时被删除或重命名,Filebeat 将继续读取⽂件
# Prospector
# Prospector 负责管理 Harvester 并到所有要读取的⽂件来源
# 如果输⼊类型为⽇志,则查器将查路径匹配的所有⽂件,并为每个⽂件启动⼀个 Harvester。
# Filebeat ⽬前⽀持两种 Prospector 类型: log 和 stdin
# Filebeat 如何保持⽂件的状态
# Filebeat 保存每个⽂件的状态并经常将状态刷新到磁盘上的注册⽂件中。
# 该状态⽤于记住 Harvester 正在读取的最后偏移量,并确保发送所有⽇志⾏。
# 如果输出(例如 Elasticsearch 或 Logstash )⽆法访问,Filebeat 会跟踪最后发送的⾏,并在输出再次可⽤时继续读取⽂件。
# 在 Filebeat 运⾏时,每个 Prospector 内存中也会保存的⽂件状态信息,当重新启动 Filebeat 时,
# 将使⽤注册⽂件的数据来重建⽂件状态,Filebeat 将每个 Harvester 在从保存的最后偏移量继续读取。
# ⽂件状态记录在 data/registry ⽂件中。
配置详解
input配置段
#每⼀个prospectors,起始于⼀个破折号”-“
filebeat.prospectors:
#默认log,从⽇志⽂件读取每⼀⾏。stdin,从标准输⼊读取
- input_type: log
#⽇志⽂件路径列表,可⽤通配符,不递归
paths:    - /var/log/*.log
#编码,默认⽆,plain(不验证或者改变任何输⼊), latin1, utf-8, utf-16be-bom, utf-16be, utf-16le, big5, gb18030, gbk, hz-gb-2312, euc-kr, euc-jp, iso-2022-jp, shift-jis encoding: plain
#匹配⾏,后接⼀个正则表达式列表,默认⽆,如果启⽤,则filebeat只输出匹配⾏,如果同时指定了多⾏匹配,仍会按照include_lines做过滤
include_lines: [‘^ERR’, ‘^WARN’]
#排除⾏,后接⼀个正则表达式的列表,默认⽆
#排除⽂件,后接⼀个正则表达式的列表,默认⽆
exclude_lines: [“^DBG”]
#排除更改时间超过定义的⽂件,时间字符串可以⽤2h表⽰2⼩时,5m表⽰5分钟,默认0
ignore_older: 5m
#该type会被添加到type字段,对于输出到ES来说,这个输⼊时的type字段会被存储,默认log
document_type: log
#prospector扫描新⽂件的时间间隔,默认10秒
scan_frequency: 10s
#单⽂件最⼤收集的字节数,单⽂件超过此字节数后的字节将被丢弃,默认10MB,需要增⼤,保持与⽇志输出配置的单⽂件最⼤值⼀致即可
max_bytes: 10485760
multiline.pattern: ^[
#多⾏匹配模式后配置的模式是否取反,默认false
#定义多⾏内容被添加到模式匹配⾏之后还是之前,默认⽆,可以被设置为after或者before
multiline.match: after
#单⼀多⾏匹配聚合的最⼤⾏数,超过定义⾏数后的⾏会被丢弃,默认500
multiline.max_lines: 500
#多⾏匹配超时时间,超过超时时间后的当前多⾏匹配事件将停⽌并发送,然后开始⼀个新的多⾏匹配事件,默认5秒
multiline.timeout: 5s
#可以配置为true和false。配置为true时,filebeat将从新⽂件的最后位置开始读取,如果配合⽇志轮循使⽤,新⽂件的第⼀⾏将被跳过tail_files: false
#当⽂件被重命名或被轮询时关闭重命名的⽂件处理。注意:潜在的数据丢失。请务必阅读并理解此选项的⽂档。默认false
close_renamed: false
#如果⽂件不存在,⽴即关闭⽂件处理。如果后⾯⽂件⼜出现了,会在scan_frequency之后继续从最后⼀个已知position处开始收集,默认true close_removed: true
#每个prospectors的开关,默认true
enabled: true
#后台事件计数阈值,超过后强制发送,默认2048
filebeat.spool_size: 2048
#后台刷新超时时间,超过定义时间后强制发送,不管spool_size是否达到,默认5秒
filebeat.idle_timeout: 5s
#注册表⽂件,同logstash的sincedb,记录⽇志⽂件信息,如果使⽤相对路径,则意味着相对于⽇志数据的路径
#定义filebeat配置⽂件⽬录,必须指定⼀个不同于filebeat主配置⽂件所在的⽬录,⽬录中所有配置⽂件中的全局配置会被忽略
通⽤配置段
#配置发送者名称,如果不配置则使⽤hostname
name:
#标记tag,可⽤于分组
tags: [“service-X”, “web-tier”]
#添加附件字段,可以使values,arrays,dictionaries或者任何嵌套数据
fields:
#处理管道中单个事件内的队列⼤⼩,默认1000
queue_size: 1000
#设置最⼤CPU数,默认为CPU核数
max_procs:
Output.elasticsearch
#启⽤模块
enabled: true
#ES地址
hosts: [“localhost:9200”]
#gzip压缩级别,默认0,不压缩,压缩耗CPU
compression_level: 0
#每个ES的worker数,默认1
worker: 1
#可选配置,ES索引名称,默认filebeat-%{+yyyy.MM.dd}
index: “filebeat-%{+yyyy.MM.dd}”
#可选配置,输出到ES接收节点的pipeline,默认⽆
pipeline: “”
#可选的,HTTP路径,默认⽆
path: “/elasticsearch”
#http代理服务器地址,默认⽆
proxy_url: proxy:3128
#ES重试次数,默认3次,超过3次后,当前事件将被丢弃
max_retries: 3
#对⼀个单独的ES批量API索引请求的最⼤事件数,默认50
bulk_max_size: 50
#到ES的http请求超时时间,默认90秒
timeout: 90
#启⽤模块
enabled: true
#logstash地址
hosts: [“localhost:5044”]
#每个logstash的worker数,默认1
worker: 1
#压缩级别,默认3
compression_level: 3
#负载均衡开关,在不同的logstash间负载
loadbalance: true
#在处理新的批量期间,异步发送⾄logstash的批量次数
pipelining: 0
#可选配置,索引名称,默认为filebeat
index: ‘filebeat’
#socks5代理服务器地址
proxy_url: socks5://user:password@socks5-server:2233
#使⽤代理时是否使⽤本地解析,默认false
proxy_use_local_resolver: false
#启⽤模块
enabled: true
#logstash地址
hosts: [“localhost:6379”]
#redis地址,地址为⼀个列表,如果loadbalance开启,则负载到⾥表中的服务器,当⼀个redis服务器不可达,事件将被分发到可到达的redis服务器worker: 1
#redis端⼝,如果hosts内未包含端⼝信息,默认6379
port: 6379
#事件发布到redis的list或channel,默认filebeat
key: filebeat
#redis密码,默认⽆
password:
#redis的db值,默认0
db: 0
#发布事件使⽤的redis数据类型,如果为list,使⽤RPUSH命令(⽣产消费模式)。如果为channel,使⽤PUBLISH命令{发布订阅模式}。默认为list datatype: list
#为每个redis服务器启动的⼯作进程数,会根据负载均衡配置递增
worker: 1
#负载均衡,默认开启
loadbalance: true
#redis连接超时时间,默认5s
timeout: 5s
#filebeat会忽略此设置,并⼀直重试到全部发送为⽌,其他beat设置为0即忽略,默认3
max_retries: 3
#对⼀个redis请求或管道批量的最⼤事件数,默认2048
bulk_max_size: 2048
#socks5代理地址,必须使⽤socks5://
proxy_url:
#使⽤代理时是否使⽤本地解析,默认false
proxy_use_local_resolver: false
1
Path配置段
filebeat安装⽬录,为其他所有path配置的默认基本路径,默认为filebeat⼆进制⽂件的本地⽬录
path.home:
#filebeat配置路径,主配置⽂件和es模板的默认基本路径,默认为filebeat家⽬录
#filebeat数据存储路径,默认在filebeat家⽬录下
path.data: ${path.home}/data
#filebeat⽇志存储路径,默认在filebeat家⽬录下
正则匹配原理
path.logs: ${path.home}/logs
#有3个可配置的filebeat⽇志输出选项:syslog,file,stderr
#windows默认输出到file
#设定⽇志级别,可设置级别有critical, error, warning, info, debug
logging.level: info
#开启debug输出的选择组件,开启所有选择使⽤[“*”],其他可⽤选择为”beat”,”publish”,”service”
logging.selectors: [ ]
#输出所有⽇志到syslog,默认为false
<_syslog: true
#定期记录filebeat内部性能指标,默认true
#记录内部性能指标的周期,默认30秒
#输出所有⽇志到file,默认true
<_files: true
#⽇志输出的⽂件配置
logging.files:
#配置⽇志输出路径,默认在家⽬录的logs⽬录
path: /var/log/filebeat
#filebeat #⽇志⽂件名
name:
#⽇志轮循⼤⼩,默认10MB
rotateeverybytes: 10485760
#⽇志轮循⽂件保存数量,默认7
keepfiles: 7
常⽤例⼦
输出到kafka集中
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/admin/taobao-tomcat-production-7.0.59.3/logs/catalina.out
fields:
local_type: 'tomcat' #这些都是附加的标签
local_ip: 1.1.1.1
local_host: 'prod_商品_1'
fields_under_root: true #将标签放到顶头,不然在message字段⾥
multiline.pattern: '^20' #20开头和20开头之间的算作⼀⾏,具体根据⽇志情况
multiline.match: after
path: ${fig}/modules.d/*.yml
index.number_of_shards: 3
output.kafka:
enabled: true
hosts: ["1.1.1.1:9092","1.1.1.2:9092","1.1.1.3:9092"] #kafka集地址
topic: 'tomcat-server-log' #topic名
Output.elasticsearch
#启⽤模块
enabled: true
#ES地址
hosts: [“localhost:9200”]
#gzip压缩级别,默认0,不压缩,压缩耗CPU
compression_level: 0
#每个ES的worker数,默认1
worker: 1
#可选配置,ES索引名称,默认filebeat-%{+yyyy.MM.dd}
index: “filebeat-%{+yyyy.MM.dd}”
#可选配置,输出到ES接收节点的pipeline,默认⽆
pipeline: “”
#可选的,HTTP路径,默认⽆
path: “/elasticsearch”
#http代理服务器地址,默认⽆
proxy_url: proxy:3128
max_retries: 3
#对⼀个单独的ES批量API索引请求的最⼤事件数,默认50
bulk_max_size: 50
#到ES的http请求超时时间,默认90秒
timeout: 90
Output.logstash
#启⽤模块
enabled: true
#logstash地址
hosts: [“localhost:5044”]
#每个logstash的worker数,默认1
worker: 1
#压缩级别,默认3
compression_level: 3
#负载均衡开关,在不同的logstash间负载
loadbalance: true
#在处理新的批量期间,异步发送⾄logstash的批量次数
pipelining: 0
#可选配置,索引名称,默认为filebeat
index: ‘filebeat’
#socks5代理服务器地址
proxy_url: socks5://user:password@socks5-server:2233
#使⽤代理时是否使⽤本地解析,默认false
proxy_use_local_resolver: false
#启⽤模块
enabled: true
#logstash地址
hosts: [“localhost:6379”]
#redis地址,地址为⼀个列表,如果loadbalance开启,则负载到⾥表中的服务器,当⼀个redis服务器不可达,事件将被分发到可到达的redis服务器worker: 1
#redis端⼝,如果hosts内未包含端⼝信息,默认6379
port: 6379
#事件发布到redis的list或channel,默认filebeat
key: filebeat
#redis密码,默认⽆
password:
#redis的db值,默认0
db: 0
#发布事件使⽤的redis数据类型,如果为list,使⽤RPUSH命令(⽣产消费模式)。如果为channel,使⽤PUBLISH命令{发布订阅模式}。默认为list datatype: list
#为每个redis服务器启动的⼯作进程数,会根据负载均衡配置递增
worker: 1
#负载均衡,默认开启
loadbalance: true
#redis连接超时时间,默认5s
timeout: 5s
#filebeat会忽略此设置,并⼀直重试到全部发送为⽌,其他beat设置为0即忽略,默认3
max_retries: 3
#对⼀个redis请求或管道批量的最⼤事件数,默认2048
bulk_max_size: 2048
#socks5代理地址,必须使⽤socks5://
proxy_url:
#使⽤代理时是否使⽤本地解析,默认false
proxy_use_local_resolver: fals
安装配置
下载安装
curl -L -O /downloads/beats/filebeat/filebeat-7.6.2-linux-x86_
# 将下载包解压到 /usr/local ⽬录下

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。