简介

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
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"]

04 . Filebeat简介原理及配置文件和一些案例的更多相关文章

  1. LeakCanary 内存泄漏 监测 性能优化 简介 原理 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. (二)ELK Filebeat简介

    Filebeat简介   轻量级的日志传输工具,是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且 ...

  3. 5、Filebeat工作原理

    Filebeat工作原理 Filebeat由两个主要组件组成:inputs和harvesters. 这些组件协同工作来查看最新文件内容并将事件数据发送到指定的输出.(注意与之前版本的不同,之前版本是p ...

  4. RxJava RxPermissions 动态权限 简介 原理 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. ubuntu 14.04安装 DevStack的脚本配置文件——localrc

    本文ubuntu 14.04安装 DevStack的脚本配置文件——localrc,本文件名已经逐渐被取代,但是出于后向兼容性,使用该文件仍然可以为stack.sh安装脚本指定安装DevStack时的 ...

  6. WebService的简介, 原理, 使用,流程图

    WebService的简介, 原理, 使用   第一部分: 直观概述 WebService的几种概念: 以HTTP协议为基础,通过XML进行客户端和服务器端通信的框架/组件 两个关键点: 1.     ...

  7. Python网络编程04 /recv工作原理、展示收发问题、粘包现象

    Python网络编程04 /recv工作原理.展示收发问题.粘包现象 目录 Python网络编程04 /recv工作原理.展示收发问题.粘包现象 1. recv工作原理 2. 展示收发问题示例 发多次 ...

  8. 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结

    038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...

  9. 01 . ELK Stack简介原理及部署应用

    简介 ELK并不是一款软件,是一整套解决方案,是由ElasticSearch,Logstash和Kibana三个开源工具组成:通常是配合使用,而且先后归于Elastic.co公司名下,简称ELK协议栈 ...

随机推荐

  1. Java WebService学习笔记 - Axis进阶(二)

    上一篇  Java WebService学习笔记 - Axis(一) 前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性 Axis中Handler的使用 Handler ...

  2. weblogic高级进阶之ssl配置证书

    1.首先需要明白ssl的原理 这里我们使用keytool的方式为AdminServer配置ssl证书 配置证书的方式如下所示: C:\Users\Administrator\Desktop\mykey ...

  3. android handle详解

    我们来看一个简单的代码: package com.mly.panhouye.handlerdemo; import android.content.Intent; import android.os. ...

  4. Java中时间加减的比较

    public class TestDate{ public static void main(String[] args){try{ Date date=new Date(); DateFormat  ...

  5. linux test tool--"ab"

    install(ubuntu os): sudo apt-get install apache2-utils usage: ab -c 200 -t 100 http://localhost:8001 ...

  6. Kubernetes实战总结 - Ingress选型与应用

    一.概述 Ingress 是对集群中服务的外部访问进行管理的 API 对象,可以提供负载均衡.SSL 终结和基于名称的虚拟托管. 典型的访问方式是 HTTP,用于将不同URL的访问请求转发到后端不同的 ...

  7. 深入Mybatis源码——配置解析

    @ 目录 前言 正文 配置解析 1. cacheRefElement/cacheElement 2. resultMapElements 3. sqlElement 4. buildStatement ...

  8. MySQL CodeFirst的配置与注意事项

    mysql+ef的配置相比较mssql+ef来说复杂一些.我的感受就是配置难度在于插件版本造成的各种不兼容问题.另外参考了很多博客,将多个博客里的经验综合才得以实现,因为不是每个人的操作都和那些博客作 ...

  9. appium移动端自动化测试环境搭建windows-appium-android

    第一步:安装jdk 安装jdk(1.7版本以上) 安装完成设置jdk环境变量(百度查询) cmd命令下键入 java -version命令检查jdk是否安装成功且设置环境变量成功,如下图所示: 第二步 ...

  10. SpringBoot+Mybatis一级缓存和二级缓存详解

    本文主要介绍在SpringBoot项目中如何使用Mybatis的一级.二级缓存,为了演示方便,本文的数据库采用H2内存数据库,数据库连接池默认使用SpringBoot2.X自带的hikariCP. 正 ...