ELK—Filebeat简介

Posted xiao2er

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK—Filebeat简介相关的知识,希望对你有一定的参考价值。

Filebeat简介

 
轻量级的日志传输工具,是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。
 

filebeat 安装

#deb:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
 
sudo dpkg -i filebeat-5.1.1-amd64.deb
 
#rpm:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
 
sudo rpm -vi filebeat-5.1.1-x86_64.rpm
 
#mac:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-darwin-x86_64.tar.gz
 
tar xzvf filebeat-5.1.1-darwin-x86_64.tar.gz

 

配置实例

#=========================== Filebeat prospectors =============================

filebeat.prospectors:

- type: log
  paths:
    - /var/log/messages

  fields:
    index: syslog_messages
    
- type: log
  paths:
    - /var/log/usermonitor/usermonitor.log

  fields:
    index: syslog_usermonitor

- type: log
  paths:
    - /var/log/secure

  fields:
    index: syslog_secure

- type: log
  paths:
    - /alidata/www.mtrops.com/log/*/*.log


#================================ General =====================================

name: 192.168.1.192
#----------------------------- Logstash output --------------------------------
output.logstash:
  hosts: ["192.168.1.88:5044"]

 

filebeat常见配置整理

#filebeat
 5.2.2
#prospector(input)段配置
filebeat.prospectors:
#每一个prospectors,起始于一个破折号"-"
-
 input_type: log #默认log,从日志文件读取每一行。stdin,从标准输入读取
paths:
#日志文件路径列表,可用通配符,不递归
-
/var/log/*.log

encoding:
 plain #编码,默认无,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

include_lines:
 [‘^ERR‘,
‘^WARN‘]
#匹配行,后接一个正则表达式列表,默认无,如果启用,则filebeat只输出匹配行,如果同时指定了多行匹配,仍会按照include_lines做过滤

exclude_lines:
 ["^DBG"]
#排除行,后接一个正则表达式的列表,默认无

exclude_files:
 [".gz$"]
#排除文件,后接一个正则表达式的列表,默认无

ignore_older:
 0 #排除更改时间超过定义的文件,时间字符串可以用2h表示2小时,5m表示5分钟,默认0

document_type:
 log #该type会被添加到type字段,对于输出到ES来说,这个输入时的type字段会被存储,默认log

scan_frequency:
 10s #prospector扫描新文件的时间间隔,默认10秒

max_bytes:
 10485760 #单文件最大收集的字节数,单文件超过此字节数后的字节将被丢弃,默认10MB,需要增大,保持与日志输出配置的单文件最大值一致即可

multiline.pattern:
 ^[ #多行匹配模式,后接正则表达式,默认无

multiline.negate:
false

#多行匹配模式后配置的模式是否取反,默认false

multiline.match:
 after #定义多行内容被添加到模式匹配行之后还是之前,默认无,可以被设置为after或者before

multiline.max_lines:
 500 #单一多行匹配聚合的最大行数,超过定义行数后的行会被丢弃,默认500

multiline.timeout:
 5s #多行匹配超时时间,超过超时时间后的当前多行匹配事件将停止并发送,然后开始一个新的多行匹配事件,默认5秒

tail_files:
false

#可以配置为true和false。配置为true时,filebeat将从新文件的最后位置开始读取,如果配合日志轮循使用,新文件的第一行将被跳过

close_renamed:
false

#当文件被重命名或被轮询时关闭重命名的文件处理。注意:潜在的数据丢失。请务必阅读并理解此选项的文档。默认false

close_removed:
true

#如果文件不存在,立即关闭文件处理。如果后面文件又出现了,会在scan_frequency之后继续从最后一个已知position处开始收集,默认true

enabled:
true

#每个prospectors的开关,默认true

#filebeat全局配置

filebeat.spool_size:
 2048 #后台事件计数阈值,超过后强制发送,默认2048

filebeat.idle_timeout:
 5s #后台刷新超时时间,超过定义时间后强制发送,不管spool_size是否达到,默认5秒

filebeat.registry_file:
 ${path.data}/registry

#注册表文件,同logstash的sincedb,记录日志文件信息,如果使用相对路径,则意味着相对于日志数据的路径

filebeat.config_dir:
#定义filebeat配置文件目录,必须指定一个不同于filebeat主配置文件所在的目录,目录中所有配置文件中的全局配置会被忽略

#通用配置段

name:
#配置发送者名称,如果不配置则使用hostname

tags:
 ["service-X",
"web-tier"]
#标记tag,可用于分组

fields:
#添加附件字段,可以使values,arrays,dictionaries或者任何嵌套数据

env:
 staging

queue_size:
 1000 #处理管道中单个事件内的队列大小,默认1000

max_procs:
#设置最大CPU数,默认为CPU核数

#processors配置段

#Outputs配置段

output.elasticsearch:
#elasticsearch输出模块

enabled:
true

#启用模块

hosts:
 ["localhost:9200"]
#ES地址

compression_level:
 0 #gzip压缩级别,默认0,不压缩,压缩耗CPU

worker:
 1 #每个ES的worker数?????,默认1

index:
"filebeat-%{+yyyy.MM.dd}"

#可选配置,ES索引名称,默认filebeat-%{+yyyy.MM.dd}

pipeline:
""

#可选配置,输出到ES接收节点的pipeline,默认无

path:
"/elasticsearch"

#可选的,HTTP路径,默认无

proxy_url:
 http://proxy:3128
#http代理服务器地址,默认无

max_retries:
 3 #ES重试次数,默认3次,超过3次后,当前事件将被丢弃

bulk_max_size:
 50 #对一个单独的ES批量API索引请求的最大事件数?????默认50

timeout:
 90 #到ES的http请求超时时间?????默认90秒

output.logstash:
#logstash输出模块

enabled:
true

#启用模块

hosts:
 ["localhost:5044"]
#logstash地址

worker:
 1 #每个logstash的worker数?????,默认1

compression_level:
 3 #压缩级别,默认3

loadbalance:
true

#负载均衡开关,在不同的logstash间负载

pipelining:
 0 #在处理新的批量期间,异步发送至logstash的批量次数?????

index:
‘filebeat‘

#可选配置,索引名称,默认为filebeat

proxy_url:
 socks5://user:[email protected]:2233
#socks5代理服务器地址

proxy_use_local_resolver:
false

#使用代理时是否使用本地解析,默认false

output.kafka:
#kafka输出模块

output.redis:
#redis输出模块

enabled:
true

#启用模块

hosts:
 ["localhost:6379"]
#redis地址,地址为一个列表,如果loadbalance开启,则负载到里表中的服务器,当一个redis服务器不可达,事件将被分发到可到达的redis服务器

port:
 6379 #redis端口,如果hosts内未包含端口信息,默认6379

key:
 filebeat #事件发布到redis的list或channel,默认filebeat

password:
#redis密码,默认无

db:
 0 #redis的db值,默认0

datatype:
 list #发布事件使用的redis数据类型,如果为list,使用RPUSH命令(生产消费模式)。如果为channel,使用PUBLISH命令{发布订阅模式}。默认为list

worker:
 1 #为每个redis服务器启动的工作进程数,会根据负载均衡配置递增

loadbalance:
true

#负载均衡,默认开启

timeout:
 5s #redis连接超时时间,默认5s

max_retries:
 3 #filebeat会忽略此设置,并一直重试到全部发送为止,其他beat设置为0即忽略,默认3次

bulk_max_size:
 2048 ##对一个redis请求或管道批量的最大事件数,默认2048

proxy_url:
#socks5代理地址,必须使用socks5://

proxy_use_local_resolver:
false

#使用代理时是否使用本地解析,默认false

 

#Paths配置段

path.home:
#家目录,filebeat安装目录,为其他所有path配置的默认基本路径,默认为filebeat二进制文件的本地目录

path.config:
 ${path.home} #filebeat配置路径,主配置文件和es模板的默认基本路径,默认为filebeat家目录

path.data:
 ${path.home}/data

#filebeat数据存储路径,默认在filebeat家目录下

path.logs:
 ${path.home}/logs

#filebeat日志存储路径,默认在filebeat家目录下

 

#logging配置段

#有3个可配置的filebeat日志输出选项:syslog,file,stderr

#windows默认输出到file

logging.level:
 info #设定日志级别,可设置级别有critical,
 error, warning, info, debug

logging.selectors:
 [ ] #开启debug输出的选择组件,开启所有选择使用["*"],其他可用选择为"beat","publish","service"

logging.to_syslog:
true

#输出所有日志到syslog,默认为false

logging.metrics.enabled:
true

#定期记录filebeat内部性能指标,默认true

logging.metrics.period:
 30s #记录内部性能指标的周期,默认30秒

logging.to_files:
true

#输出所有日志到file,默认true

logging.files:
#日志输出的文件配置

path:
/var/log/filebeat

#配置日志输出路径,默认在家目录的logs目录

name:
 filebeat #日志文件名

rotateeverybytes:
 10485760 #日志轮循大小,默认10MB

keepfiles:
 7 #日志轮循文件保存数量,默认7

#harvester收割者

#负责读取每个文件的内容,收割者一行一行的读取每个文件并发送内容到output,收割者负责打开和关闭文件

#prospector勘探者

#负责管理收割者和查找所有读取源。目前勘探者支持两个勘探类型,log和stdin,每个勘探类型可以被定义多次。龙勘探者检查每个文件来看是否需要打开一个收割者或收割者是否在运行,诱惑是否忽略这个文件

#filebeat如何保持文件状态?

#filebeat保持每个文件的状态并频繁刷新状态到磁盘上的注册文件

#状态用于记忆收割者读取的最后一个偏移量并确保所有的日志行被发送

#如果一个es或logstash的输出不可达时,filebeat将持续追踪发送的最后一样并继续读取文件,尽快可以变为可用的输出

#当filebeat运行时,状态信息将被每个勘探者保存在内存中

#当filebeat被重启,会使用注册文件读取数据重建状态,并且让每个收割者从一直的最后位置开始

#每个勘探者为他发现的每个文件保持一个状态,因为文件可能被删除或移动,文件名和路径不足以确定一个文件

  

以上是关于ELK—Filebeat简介的主要内容,如果未能解决你的问题,请参考以下文章

ELK+Filebeat 集中式日志解决方案详解

elk

ELK配置之,filebeat更改自定义索引名称

ELK配置之,filebeat更改自定义索引名称

ELK 架构和 Filebeat 工作原理详解

ELK 架构和 Filebeat 工作原理详解