Filebeat安装使用
一、安装
# 下载软件包
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.13.2-linux-x86_64.tar.gz
#解压
tar xf filebeat-7.13.2-linux-x86_64.tar.gz -C /mnt
mv filebeat-7.13.2-linux-x86_64 filebeat
# 做软连接
sudo ln -s /mnt/filebeat /usr/local/filebeat
1、编写配置文件
1.配置文件含义
filebeat.inputs: # 日志来源设置
- type: log
enabled: true # 是否收集此路径下面日志的开关
#为日志类型打标签
# tags: "nginx_log"
paths:
- /var/log/*.log
filebeat.config.modules: # 内置收集日志模块配置文件的存放路径
path: ${path.config}/modules.d/*.yml
reload.enabled: false # 配置文件有更改时是否自动加载
setup.template.settings:
index.number_of_shards: 1
output.console: #输出到屏幕
pretty: true
#setup.kibana:
#output.elasticsearch:
# hosts: ["localhost:9200"]
processors:
- add_host_metadata: #添加主机数据信息
when.not.contains.tags: forwarded
2.启动filebeat测试
sudo /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml
输出信息
{
"@timestamp": "2022-04-19T13:01:05.333Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "7.13.2"
},
"log": {
"file": {
"path": "/tmp/access.log"
},
"offset": 602
},
"message": "111.172.170.33 - - [22/Nov/2015:12:01:01 +0800] \"GET /online/api/mc/order/detail.json?orderId=3507685 HTTP/1.1\" 200 6311 \"http://www.oldboyedu.com.cn/online/ppjonline/account/account.jsp\" \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36\"",
"input": {
"type": "log"
},
"ecs": {
"version": "1.8.0"
},
"host": {
"id": "926b4085550e4fdbafce2eca8190679f",
"containerized": false,
"ip": [
"10.0.0.11",
"fe80::20c:29ff:fe13:612"
],
"mac": [
"00:0c:29:13:06:12"
],
"hostname": "filebeat",
"architecture": "x86_64",
"name": "filebeat",
"os": {
"version": "18.04.6 LTS (Bionic Beaver)",
"family": "debian",
"name": "Ubuntu",
"kernel": "4.15.0-175-generic",
"codename": "bionic",
"type": "linux",
"platform": "ubuntu"
}
},
"agent": {
"type": "filebeat",
"version": "7.13.2",
"hostname": "filebeat",
"ephemeral_id": "54ab1d1b-12e4-4c3f-93c8-fc64350e310f",
"id": "7bf9fc6b-483d-46f7-9303-8cb602580db4",
"name": "filebeat"
}
}
filebeat找不到配置文件时可以指定配置文件
./filebeat -c /usrlocal/filebeat/filebeat.yml
-e 将启动信息输出到屏幕上
filebeat进程日志
filebeat本身运行的日志默认位置${install_path}/logs/filebeat
要修改filebeat的日子路径,可以添加一下内容在filebeat.yml配置文件
#logging.level :debug 日志级别
path.logs: /var/log/
2、专用日志收集模块
查看可用的模块列表
$ sudo ./filebeat modules list
Enabled:
Disabled:
activemq
apache
auditd
aws
awsfargate
azure
barracuda
bluecoat
cef
checkpoint
cisco
coredns
crowdstrike
cyberark
cyberarkpas
cylance
elasticsearch
envoyproxy
f5
fortinet
gcp
google_workspace
googlecloud
gsuite
haproxy
ibmmq
icinga
iis
imperva
infoblox
iptables
juniper
kafka
kibana
logstash
microsoft
misp
mongodb
mssql
mysql
mysqlenterprise
nats
netflow
netscout
nginx
o365
okta
oracle
osquery
panw
pensando
postgresql
proofpoint
rabbitmq
radware
redis
santa
snort
snyk
sonicwall
sophos
squid
suricata
system
threatintel
tomcat
traefik
zeek
zoom
zscaler
模块配置文件保存位置
${install_path}/filebeat/modules.d/
ubuntu@filebeat:/usr/local/filebeat/modules.d$ ls
activemq.yml.disabled f5.yml.disabled misp.yml.disabled radware.yml.disabled
apache.yml.disabled fortinet.yml.disabled mongodb.yml.disabled redis.yml.disabled
auditd.yml.disabled gcp.yml.disabled mssql.yml.disabled santa.yml.disabled
awsfargate.yml.disabled googlecloud.yml.disabled mysqlenterprise.yml.disabled snort.yml.disabled
aws.yml.disabled google_workspace.yml.disabled mysql.yml.disabled snyk.yml.disabled
azure.yml.disabled gsuite.yml.disabled nats.yml.disabled sonicwall.yml.disabled
barracuda.yml.disabled haproxy.yml.disabled netflow.yml.disabled sophos.yml.disabled
bluecoat.yml.disabled ibmmq.yml.disabled netscout.yml.disabled squid.yml.disabled
cef.yml.disabled icinga.yml.disabled nginx.yml.disabled suricata.yml.disabled
checkpoint.yml.disabled iis.yml.disabled o365.yml.disabled system.yml.disabled
cisco.yml.disabled imperva.yml.disabled okta.yml.disabled threatintel.yml.disabled
coredns.yml.disabled infoblox.yml.disabled oracle.yml.disabled tomcat.yml.disabled
crowdstrike.yml.disabled iptables.yml.disabled osquery.yml.disabled traefik.yml.disabled
cyberarkpas.yml.disabled juniper.yml.disabled panw.yml.disabled zeek.yml.disabled
cyberark.yml.disabled kafka.yml.disabled pensando.yml.disabled zoom.yml.disabled
cylance.yml.disabled kibana.yml.disabled postgresql.yml.disabled zscaler.yml.disabled
elasticsearch.yml.disabled logstash.yml.disabled proofpoint.yml.disabled
envoyproxy.yml.disabled microsoft.yml.disabled rabbitmq.yml.disabled
3、示例模块nginx模块
启动nginx模块
sudo ./filebeat modules enable nginx
1.使用模板默认路径
- module: nginx
access:
enabled: true
error:
enabled: true
ingress_controller:
enabled: false
nginx模块配置收集日志的默认路径是
CentOS
/var/log/access.log*
/var/log/error.log*
Ubuntu
/var/log/nginx/access.log*
/var/log/nginx/error.log*
测试
2.nginx日志不在默认存储路径下时
var.paths:
- /data/nginx_log/access.log*
- /data/nginx_log/error.log*
如果不设置此项,filebeat将根据你的操作系统选择使用默认路径
注意:此种方式十一追加的方式和模块默认路径合并在一起的,也就是说使用了此种方式,nginx模块还是回去默认路径下查找。
3.配置ouput
filebeat是用于搜集日志,之后把日志推送到某个接受的系统中,这些系统或者装置在filebeat中称为output。
output类型
-
console
终端屏幕 -
elasticsearch
存放日志,并提供查询 -
logstash
进一步对日志数据进行处理 -
kafia
消息队列
完整的output列表在filebeat官方文档
filebeat在运行的时候,以上的output只可配置其中一种
输出到console
输出完整的json数据
output.console:
pretty: true
前台运行filebeat
sudo ./filebeat
如果只想输出完整json数据中的某些字段
output.console:
codec.format:
string: '%{[@timestamp]} %{[message]}'
其他输出目标:
输出到elasticsearch
output.elasticsearch:
hosts: ["http://es01:9200',"http://es02:9200"]
输出到 logstash
output.logstash :
hosts: ["127.0.0.1:5044"]
4、重读日志文件
有时候处于实验目的,可能需要重新读取日志文件,这个时候需要删除安装目录下的 data
文件夹,重新运行filebeat
即可。
[图片上传失败...(image-c04404-1650615591430)]
报错
假如出现如下报错,请删制除安装目录中的data文件夹
Exiting: data path already locked by another beat.Please make sure that multiple beats are notsharing the same data path (paty.data).
查看一下是否有一个进程已经处于运行状态,尝试杀死此进程,之后重新运行filebeat
5、使用Processors(处理器)过滤和增强数据(扩展部分)
可以在配置中定义处理器,以便在事件发送到配置的输出之前对其进行处理。libbeat库提供以下处理器∶
减少导出字段的数量
使用其他元数据增强事件
执行其他处理和解码
工作方式
每个处理器都接收一个事件,对该事件应用已定义的操作,然后返回该事件。如果定义
处理器列表,则将按照在Filebeat配置文件中定义的顺序执行它们。
去重日志中的某些行
配置位置在filebeat.yml
文件中
删除所有以 DBG:
开头的行
processors:
- drop_event:
when:
regexp:
message: "^DBG:" #message为自定义字段
像输出的信息中添加某些自定义字段
processors:
- add_fields:
target: project #要添加的自定义字段key名称
fields:
name: myproject
id: "574734885120952459"
从事件中删除某些字段
processors:
- drop_fields :
fields: ["field1", "field2",...]
ignore_missing: false
以上配置,将删除字段: field1
和field2
ignore_missing
的值为 false
表示,字段名不存在则会返回错误。为true不会返回错误。
注意: 事件中的"@timestamp
和type
字段是无法删除的。
下面的配置示例是删除顶级字段input
和顶级字段ecs
中的version
字段。
- drop_fields:
fields: ["input", "ecs.version"]