filebeat-7.9.1学习

个人学习笔记,谢绝转载!!!

原文: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   ##将不匹配到的行和上一行合并
原文地址:https://www.cnblogs.com/wshenjin/p/13652361.html