04 . Filebeat简介原理及配置文件和一些案例

简介

Beats轻量型数据采集器

Beats 平台聚集了多种单一用途数据采集器。它们从成百上千或成千上万台机械和系统向 Logstash 或 Elasticsearch 发送数据。

Beats系列

全品类采集器,搞定所有数据类型

4

Beats 可以直接将数据发送到 Elasticsearch 或通过 Logstash,在Kibana 中可视化之前,可以进一步处置和增强数据。

4

平时我们在查看日志时,使用 tail -f xxx.log 下令来实时查看日志,而当我们要面临成百上千、甚至成千上万的服务器、虚拟机和容器天生的日志时,再使用上面的下令来操作几乎是完全不可能的。Filebeat 为我们提供一种轻量型方式,用于转发和汇总日志与文件,让简朴的事情不再繁杂。

盘点 6 个被淘汰的 Java 技术,它们都曾经风光过!

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
multiline.negate: 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.registry_file: ${path.data}/registry

#界说filebeat设置文件目录,必须指定一个差别于filebeat主设置文件所在的目录,目录中所有设置文件中的全局设置会被忽略
filebeat.config_dir
通用设置段
#设置发送者名称,若是不设置则使用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: http://proxy:3128

#ES重试次数,默认3次,跨越3次后,当前事宜将被抛弃
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
Output.redis
#启用模块
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家目录
path.config: ${path.home}

#filebeat数据存储路径,默认在filebeat家目录下
path.data: ${path.home}/data

#filebeat日志存储路径,默认在filebeat家目录下
path.logs: ${path.home}/logs
logging设置段
#有3个可设置的filebeat日志输出选项:syslog,file,stderr
#windows默认输出到file

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

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

#输出所有日志到syslog,默以为false
logging.to_syslog: true

#定期纪录filebeat内部性能指标,默认true
logging.metrics.enabled: true

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

#输出所有日志到file,默认true
logging.to_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.negate: true
  multiline.match: after

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  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: http://proxy:3128

#ES重试次数,默认3次,跨越3次后,当前事宜将被抛弃
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
Output.redis
#启用模块
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 https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-linux-x86_64.tar.gz

# 将下载包解压到 /usr/local 目录下
tar xzvf filebeat-7.6.2-linux-x86_64.tar.gz -C /usr/local
设置

监听stdin 输入,并输出到控制台上

filebeat.inputs:
- type: stdin
  enabled: true
output.console:
  pretty: true
  enable: true
启动执行
cd /usr/local/filebeat-7.6.2-linux-x86_64

./filebeat -e -c filebeat-std.yml

# 参数说明
-e: 输出到尺度输出,默认输出到syslog和logs下 
-c: 指定设置文件

网络Nginx设置

读取设置文件
# 设置读取日志文件 filebeat-log.yml
filebeat.inputs: 
- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/*.log 
setup.template.settings:
  index.number_of_shards: 3 
output.console:
  pretty: true
  enable: true
启动执行测试
systemctl start filebeat
filebeat -e -c filebeat-log.yml 

# 参数说明
-e: 输出到尺度输出,默认输出到syslog和logs下 
-c: 指定设置文件
  
curl 192.168.43.205
  
{
  "@timestamp": "2020-07-21T01:45:56.008Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.2.0"
  },
  "log": {
    "offset": 95,
    "file": {
      "path": "/var/log/nginx/access.log"
    }
  },
  "message": "192.168.43.176 - - [21/Jul/2020:09:45:52 +0800] \"GET / HTTP/1.1\" 200 612 \"-\" \"curl/7.29.0\" \"-\"",
  "input": {
    "type": "log"
  },
  "ecs": {
    "version": "1.0.0"
  },
  "host": {
    "name": "nginx"
  },
  "agent": {
    "version": "7.2.0",
    "type": "filebeat",
    "ephemeral_id": "bf9cd048-7041-4167-b8a2-46485a5028ec",
    "hostname": "nginx",
    "id": "cf47c715-17f2-48d5-9f10-866f10eba0cf"
  }
}
设置nginx输出到Elasticsearch
(vim /etc/filebeat/filebeat.yml) shift + : 输入set nu 显示行号
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
    filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true  
24:   enabled:  true                         # 更改为true以启用输入设置
28:   - /data/*.log                   # 替换为要抓取的日志文件路径,若是抓取nginx日志,修改为/var/log/nginx/access.log,若是是日志服务器,在下面再加上多行其他地方的日志目录即可
73:  reload.enabled:  true                  # 启动Filebeat模块
output.elasticsearch:
  hosts: ["192.168.43.176:9200","192.168.43.205:9200","192.168.43.215:9200"]

4

4

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/23826.html