个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/13652361.html
filebeat简介
Beats家族的6个成员:
- Packetbeat:网络数据(收集网络流量数据)
- Metricbeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)
- Filebeat:日志文件(收集文件数据)
- Winlogbeat:windows事件日志(收集Windows事件日志数据)
- Auditbeat:审计数据(收集审计日志)
- Heartbeat:运行时间监控(收集系统运行时的数据)
早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。Beats在是一个轻量级日志采集器,相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。Filebeat是Beats中的一员,是用于收集转发日志数据的轻量级传送工具。Filebeat监视日志文件,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Filebeat的工作方式如下:启动Filebeat时,它会启动一个或多个探测器去检测指定的日志目录或文件。对于找到的每个日志,Filebeat都会启动收集器,每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到output指定的输出。
filebeat安装
[root@ ]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.1-x86_64.rpm
[root@ ]# rpm -ivh filebeat-7.9.1-x86_64.rpm
filebeat配置文件
常用的选项解释,基于7.9.1版本:
## ================================= filebeat input配置块 ==================================
filebeat.inputs:
## 每个-都是一个输入
- type: log
## 是否启用该输入
enabled: true
## 日志路径
paths:
- /data/logs/*.log
- /data/logs/*/*.log
##是否从日志末尾开始读取日志
tail_files: true
##排除行。排除匹配正则表达式列表的行
exclude_lines: ['^DBG']
##包括行。导出匹配的正则表达式列表的行
include_lines: ['^ERR', '^WARN']
##排除文件。排除匹配正则表达式列表的文件
exclude_files: ['.gz$','nginx_error.log']
##可选附加字段。可以自由选择这些字段,将附加信息添加网日志文件中进行筛选
fields:
level: debug
review: 1
### 多行选项,多行可以用于跨越多行的日志消息。这对于Java堆栈跟踪或C-Line延续来说很常见
##匹配多行的正则表达式
multiline.pattern: '^['
##匹配pattern的行是否合并到上一行,默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行
multiline.negate: false
##合并到上一行的末尾或开头
multiline.match: after
##合并的最大行数
multiline.max_lines: 500
## ================================= filebeat output配置块 ==================================
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
enabled: true
##ES的主机端口列表
hosts: ["localhost:9200"]
##协议 - either `http` (default) or `https`.
#protocol: "https"
##身份验证凭据-API密钥或用户名/密码。
api_key: "id:api_key"
username: "elastic"
password: "changeme"
# ------------------------------ Logstash Output -------------------------------
output.logstash:
enabled: true
## The Logstash hosts
hosts: ["127.0.0.1:5044"]
##使用了负载均衡
loadbalance: true
## Optional SSL. By default is off.
##用于HTTPS服务器验证的根证书列表
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
##SSL客户端身份验证证书
ssl.certificate: "/etc/pki/client/cert.pem"
##客户端证书密钥
ssl.key: "/etc/pki/client/cert.key"
# ================================== Logging ===================================
##设置日志级别。默认日志级别为info。
## Available log levels are: error, warning, info, debug
logging.level: info
logging.to_files: true
##日志路径和切割、保留个数、权限
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0644
# ================================= 其他 ==================================
## filebeat的程序名称
name: localhost
## 标签
tags: ["nginx_log"]
## 可选字段,可以指定将附加信息添加到输出中
fields:
env: staging
配置实例
1、将/data/logs/*.log的日志文件输出到文件
配置:
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0644
filebeat.inputs:
- type: log
enabled: true
tail_files: true
paths:
- /data/logs/*.log
exclude_files: ['nginx_error.log']
output.file:
enabled: true
codec.json:
pretty: true
escape_html: true
path: "/data/logs/filebeat"
filename: filebeat_output.log
rotate_every_kb: 10000
number_of_files: 7
permissions: 0600
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
tags: ["nginx_access_log"]
name: web_server_1.2.3.4
2、将/data/logs/*.log的日志文件输出到Logstash
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0644
filebeat.inputs:
- type: log
enabled: true
tail_files: true
paths:
- /data/logs/*.log
exclude_files: ['nginx_error.log']
output.logstash:
hosts: ["127.0.0.1:5044"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
tags: ["nginx_access_log"]
name: web_server_1.2.3.4
multiline小结
multiline.negate: false
multiline.match: after ##将匹配到的行和上一行合并
multiline.negate: false
multiline.match: before ##将匹配到的行和下一行合并
multiline.negate: true
multiline.match: before ##将不匹配到的行和下一行合并
multiline.negate: true
multiline.match: after ##将不匹配到的行和上一行合并