(三)beats轻量化采集工具

beats官网介绍

1:beats简介

以下同es6.8版本对应的版本进行测试使用

1.1:什么是beats

beats是安装在服务器上以将数据发送到Logstash 或者Elasticsearch的开源数据采集工具
根据不同的功能有不同的子功能使用,用不同的字功能需要安装不同的软件包和配置
在这里插入图片描述
从上面我们可以看出来,Beats 的数据可以有如下的三种方式导入到 Elasticsearch 中:

Beats ==> Elasticsearch
Beats ==> Logstash ==> Elasticsearch
Beats ==> Kafka ==> Logstash ==> Elasticsearch

2:使用beats

根据不同的组件安装不同的beats,需要将采集数据的所有服务器上都安装beats。以下根据不同的beats进行使用安装说明
如果想结合kibana进行可视化展示,可参考:kibana可视化展示
beats包含的常用组件如下:

packetbeat(用于服务器间监控网络流量,程序性能等)

filebeat(用于监听日志数据,比如文件。可以替代logstash-input-file)

topbeat(用于搜集进程的信息、负载、内存、磁盘等数据)

winlogbeat(用于搜集windows事件日志)

2.1:Filebeat 文件采集器

filebeat支持的正则表达

1:Filebeat 入门

Filebeat 具有如下的一些特性:

正确处理日志:针对每隔一个时间段生产一个新的日志的案例,Filebeat 可以帮我们正确地处理新生产的日志,并重新启动对新生成日志的处理

背压敏感:如果日志生成的速度过快,从而导致 Filebeat 生产的速度超过 Elasticsearch 处理的速度,那么 Filebeat 可以自动调节处理的速度,以达到 Elasticsearch 可以处理的范围内

“至少一次”保证:每个日志生成的事件至少被处理一次

结构化日志:可以处理结构化的日志数据数据

多行事件:如果一个日志有多行信息,也可以被正确处理,比如错误信息往往是多行数据

条件过滤:可以有条件地过滤一些事件

1.1:安装filebeat

根据不同的系统安装方式包括多种

linux:
	curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.13-linux-x86_64.tar.gz
网站手动下载上传:https://elasticsearch.cn/download/ 
	tar xzvf filebeat-6.8.13-linux-x86_64.tar.gz
解压后目录介绍:
	filebeat.reference.yml      是配置文件的示例,包含全部的参数使用
	filebeat.yml				是我们真正修改生效的配置文件
	module						filebeat支持的日志格式
	modules.d					我们指定module时运行的
	data/registry               该文件存处理文件元数据,可以删除
1.2:配置 filebeat.yml

配置在filebeat.yml配置文件中。可以配置监控的文件目录,输出的es或者logstash服务中
配置文件分为输入,输出模块,同时想使用该组件需要配置logstash进行配置修改
vim filebeat.yml

1:输入配置模块:Filebeat inputs

若需要监控多个路径,path多个路径即可,或者写多个输入模块即可,见demo

filebeat.inputs:    
- type: log               
  enabled: true
  paths:
    - /var/log/*.log        

详解input模块

filebeat.inputs:    
	- type: log          #type:输入日志格式类型,具体选项如下
                    	 	 #log:从日志文件提取数据,最常用的
                    	 	 #stdin:从控制台读取数据,一般是我们测试时用
                    	 	 以及redis等类型
  enabled: true         #表示启用该模块
  tags:          		#给输入数据打标签,后续可以进行判断使用,处理数据更方便  	tags:appname					
  paths:				#采集文件的路径,支持模糊匹配,也可以写多个路径
    - /var/log/*.log 
  tail_files:		#读取文件的方式,默认是从最新的读取,true/false,false是从头
  recursive_glob.enabled  #路径使用模糊匹配时,是否使用递归查询
  fields: 				  #通过fields属性我们可以添加字段到输出的日志文件中
    apache: true          #key:value的形式
  encoding:				  #指定文件的编码格式。utf-8等  
  	#可以通过exclude_lines和include_lines属性对数据进行过滤,支持正则表达
  exclude_lines: ['^DBG']    	 #去除以DBG开头数据
  include_lines:[ 'sometext' ]  #只要以some开头数据
  max_bytes: 			#传输一条日志消息可以具有的最大字节数,默认最大10m,超过的被抛弃
  close_inactive:		#控制读取文件文件句柄的占用时间。如1m,即1分钟
  
  multiline:			#如何处理多行数据,比如error或者异常时就是多行数据,具体使用看4.1章节
	multiline.pattern: '^\['   #判断什么样的数据是异常数据,比如[开头的,支持正则表达
	multiline.negate: true		#定义了数据合并的模式。true或者false
	multiline.match: after		#判断从multiline.pattern开始那些是异常数据,进行合并,和negate属性配合使用
2:输出配置模块

输出可以选择Elasticsearch或者 Logstas等,一般不建议直接到es。留一个即可,其他注释

2.1:Elasticsearch

当您为输出指定Elasticsearch时,默认Filebeat使用Elasticsearch HTTP API将事务直接发送到Elasticsearch。
创建索引时根据模板会创建索引,存储es时会有默认的索引,我们也可以指定我们自己的template

output.elasticsearch:
  hosts: ["myEShost1:9200","myEShost2:9200"]        数组类型,写多台服务器
  username: "filebeat_internal"     username和password是有安全认证登录时配置
  password: "YOUR_PASSWORD" 
  compression_level:				gzip压缩级别。将此值设1-9,默认0禁用
  indices:							指定索引名字的格式,也可以在template指定
    - index: "warning-%{[beat.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "WARN"
    - index: "error-%{[beat.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "ERR"
        
指定Template
setup.template.name: "filebeat"       	es中模板的名称
setup.template.pattern: "filebeat-*"  	模板的模式,通配符-*用于匹配所有每日索引

如果es或者kibana添加了登录验证,需要进行配置用户和密码

output.elasticsearch:
  hosts: ["myEShost:9200"]
  username: "filebeat_internal"
  password: "YOUR_PASSWORD" 
setup.kibana:
  host: "mykibanahost:5601"
  username: "my_kibana_user"  
  password: "YOUR_PASSWORD"
2.2:logstash

如果输出为logstash则template模板加载需要手动执行,配置文件中的不会去加载。需要在配置文件配置后手动执行

output.logstash:
  hosts: ["logstaship:5044"]

手动加载模板:

./filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
2.3:kafka
output.kafka:
  # initial brokers for reading cluster metadata
  hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]

  # message topic selection + partitioning
  topic: '%{[fields.log_topic]}'
  partition.round_robin:        Kafka输出代理程序事件分区策略。random, round_robin或hash。默认使用hash分区。
    reachable_only: false

  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000
3:日志格式module配置

Filebeat modules 简化了公共日志格式的收集、解析和可视化,用于替代input输入。简化了我们使用filebeat,以及后续数据解析和可视化等的配置过程,对于这些服务,我们可以直接使用对应的module。

查看filebeat支持的module:	./filebeat modules list

模型提供了多种配置启动方式,启动时会去modules.d目录下去加载,也可以指定某个moudle对应的日志路径
1:启用module

方式1:在modules.d目录中启用模块配置,后面跟module,在module目录下有
	./filebeat modules enable apache2 mysql
	
方式2:在 filebeat.yml配置文件指定
	filebeat.modules:
		- module: nginx                             #module 启用的模块名
			access:
    		var.paths: ["/var/log/nginx/access.log*"]		#采集模块的日志路径
		- module: mysql
方式3:直接修改modules.d目录下对应的模块后缀,去除.disabled后缀即可

2:让module生效

 ./filebeat setup

setup的具体使用后续讲解

4:kibana可视化

Filebeat随附了示例Kibana仪表板,可视化文件,并提供了搜索以可视化Kibana中的Filebeat数据。

要加载仪表板,可以在filebeat.yml配置文件的setup.dashboards部分中启用仪表板加载 ,也可以运行setup命令。默认情况下,仪表板加载是禁用的。

4.1:输出es

此时直接开启配置即可
1:开启配置

1:配置文件修改		setup.dashboards.enabled: true         #开启kibana的仪表盘,可视化功能
2:使用setup初始化配置		./filebeat setup --dashboards

在这里插入图片描述

4.2:filebeat输出是logstash

1:开启配置

方式1:配置文件修改		setup.dashboards.enabled: true         #开启kibana的仪表盘,可视化功能
方式2:启动时指定:		./filebeat setup --dashboards

2:初始化仪表盘配置
在仪表板加载期间,Filebeat连接到Elasticsearch以检查版本信息,要在启用Logstash输出时加载仪表板,你需要临时禁用Logstash输出并启用Elasticsearch,要连接到安全的Elasticsearch集群,还需要传递Elasticsearch凭据。

./filebeat setup -e \
  -E output.logstash.enabled=false \
  -E output.elasticsearch.hosts=['localhost:9200'] \
  -E setup.kibana.host=localhost:5601

执行结果
在这里插入图片描述
执行后kibana即可看到会出现多个可视化选项
结果
选项对应的filebeat可视化插件进行查看
如果是安全认证需要输入用户,密码

./filebeat setup -e \
  -E output.logstash.enabled=false \
  -E output.elasticsearch.hosts=['localhost:9200'] \
  -E output.elasticsearch.username=filebeat_internal \
  -E output.elasticsearch.password=YOUR_PASSWORD \
  -E setup.kibana.host=localhost:5601
4.3:kibana仪表盘完善

要用数据填充示例仪表板,需要 定义接收节点管道或使用Logstash将数据解析到仪表板期望的字段中。
在这里插入图片描述

4.4:使用pipelines解析数据

对于filebeat读取数据是module中的直接输出到es,可以在此直接使用对应的管道解析

加载解析通道组件:	filebeat setup --pipelines --modules nginx,system  #module 名字
启动filebeat
4.5:logstash可视化配置示例

如果使用的是Logstash,需要配置Logstash,来解析仪表板支持的日志格式进行展示。
若filebeat使用的读取数据是module的,则配置logstash解析即可使用
使用filebeat moudule读取输出logstash解析管道数据进行可视化示例

5:设置日志输出

我们可以控制filebeat运行的日志级别。

logging.level: info   		 最低日志级别。一debug,info,warning,或error。默认日志级别为info。
logging.to_files: true
logging.files:			
  path: /var/log/filebeat	日志输出的路径
  name: filebeat			文件名
6:template模板配置

加载索引模板需要连接到Elasticsearch,如果输出不是Elasticsearch,则必须手动加载模板。

setup.template.enabled: true	设置模板true自动加载,设置false需要手动加载自己模板
setup.template.name: "filebeat-%{[beat.version]}"   设置模板的名字,模板必须已经在es中建立
setup.template.fields: "${path.config}/fields.yml"   设置fields.yml路径
setup.template.overwrite: false      是否覆盖现有模板
setup.dashboards.index: "customname-*"   如果使用的是预先构建的Kibana仪表板,可是设置索引模式
6.1:手动加载模板

如果输出不是es,则模板必须手动加载

./filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
1.3:检查filebeat.yml配置文件

我们可以用测试命令,测试我们的配置是否正确。

./filebeat -c filebeat.yml test config

正确会输出:Config OK

1.4:启动关闭filebeat

启动默认会加载filebeat配置文件
验证:filebeat -version

启动   ./filebeat -e -c filebeat.yml
后台启动 nohup ./filebeat -e
关闭  如果是命令窗口直接ctrl +c 如果是后台ps -ef |grep filebeat 再kill -9 pid
1.5:设置kibana

已经完成filebeat中的kibana配置

1:kibana可视化

kibana必须先创建我们的索引模式来使用,仪表盘,可视化等功能,索引模式就是决定我们后续的操作对那些索引进行仪表盘和可视化

步骤1:kibana-----management–kibana–index patterns界面:点击create indexpatterns

步骤2:discover发现界面:即可以看到我们创建的索引模型,点击就可以看到数据的存储

步骤3:visualize视图界面:可以指定各种图表进行展示我们的索引模型统计

步骤4:dashboard仪表盘界面

2:modules详解

Filebeat模块简化了常见日志格式的收集,Ingest Node pipeline解析数据和可视化,用于快速使用filebea和elk
使用流程:启用模块--------------初始化模块------------启动filebeat

查看可用模块:		./filebeat modules list

1:启用模块均有多种方式

方式1:在modules.d目录中启用模块配置,后面跟module,在module目录下有
	./filebeat modules enable apache2 mysql
	
方式2:在 filebeat.yml配置文件指定
	filebeat.modules:
		- module: nginx
			access:
    		var.paths: ["/var/log/nginx/access.log*"]
		- module: mysql

通过path路径去指定我们监控的模块对应的日志,会覆盖input输入模块的输入路径
2:初始化模块
通过./filebeat setup -e 命令
3:启动filebeat
./filebeat -e
也可以nohup后台运行

2.1:apache2模块

该apache2模块解析由Apache HTTP服务器创建的访问和错误日​​志 。
对于Elasticsearch <6.7,此模块需要 ingest-user-agent和 ingest-geoip Elasticsearch插件
启用模块:./filebeat modules enable apache2

3:在docker中运行filebeat

我们可以运用docker中封装好的镜像,不需要自己去配置安装filebeat,具体docker使用查看docker概述

3.1:拉取镜像文件
docker pull docker.elastic.co/beats/filebeat:6.8.13
3.2:运行镜像文件
docker run \
docker.elastic.co/beats/filebeat:6.8.13 \
setup -E setup.kibana.host=kibana:5601 \
-E output.elasticsearch.hosts=["elasticsearch:9200"] 

4:使用demo

4.1:多行合并
1:Exception +Caused by
Exception in thread "main" java.lang.IllegalStateException: A book has a null property
       at com.example.myproject.Author.getBookIds(Author.java:38)
       at com.example.myproject.Bootstrap.main(Bootstrap.java:14)
Caused by: java.lang.NullPointerException
       at com.example.myproject.Book.getId(Book.java:22)
       at com.example.myproject.Author.getBookIds(Author.java:35)
       ... 1 more

对于这种异常可以使用以下配置

multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
multiline.negate: false
multiline.match: after
2:Java堆栈跟踪

可以使用

multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after

5:filebeat原理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值