Filebeat收集日志

2020-08-20  本文已影响0人  阿fong

一、概述

Filebeat是一个日志文件托运工具,做为一个agent安装到服务器上,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

*Filebeat包含两个主要的组件,prospectors(探测器)和harvesters(收割机)。

1. harvesters(收割机)

harvesters负责一行一行地读取日志文件,并将内容发送到指定的输出。

2. prospectors(探测器)

prospectors负责管理所有的harvesters,和发现所有的需要读取的日志源。
如果输入源是log(日志),prospectors根据配置路径,查找驱动器上的所有匹配的日志文件,并为每个文件启动一个收割机。
此组件一般情况下默认就行,不用做配置。

*Filebeat内置了很多模块,封装了日志的收集和过滤操作。

二、支持的模块

activemq、apache、auditd、aws、azure、cef、cisco、coredns
elasticsearch、envoyproxy、googlecloud、haproxy、ibmmq、icinga
iis、iptables、kafka、kibana、logstash、misp、mongodb、mssql
mysql、nats、netflow、nginx、o365、okta、osquery、panw
postgresql、rabbitmq、redis、santa、suricata、system、traefik、zeek

三、模块收集日志

*这里以system为例

(一)输出到Elasticsearch中

  1. 配置启动system模块

filebeat modules enable system
filebeat modules list

  1. 找到日志文件
  1. 配置vim /etc/filebeat/modules.d/system.yml文件
    这里system模块默认了路径,一般都是在/var/log/mesagge和/var/log/secure

也可以自己配置路径,只需去掉var.paths的注释,然后添加路径,支持同时写多个路径。(注意缩进)

var.paths:
  - 路径1
  - 路径2
  1. 配置filebeat.yml
    (1) 配置输出源
    *从7.0版本以后,只能配置一个输出源

index表示es的索引
when.eaquals表示比较

when.eaquals
  event:
    module: "system"
#表示event字段下的module字段为system时,使用这个索引。module字段就表示模块,可以设置其他字段来判断。

还有when.contains #包含

(2) 配置kibana

setup.kibana:
  host: "19.130.244.160:5601"
setup.template.name: "logstash-"
setup.template.pattern: "logstash-*"
setup.template.overwrite: true
setup.template.enabled: true
setup.ilm.enabled: false
  1. 启动filebeat
    systemctl start filebeat
    systemctl status filebeat

(二) 输出到logstash(模板收集的日志也可输出到logstash)

  1. 配置filebeat配置文件
    (1) 去除kibana配置
    (2) 配置输出源(端口可自定义,默认5044)
  1. 启动filebeat
    systemctl restart filebeat
    systemctl status filebeat

四、使用file输入源收集日志

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - 日志路径1(可使用通配符*)
- type: log
  enabled: true
  paths:
    - 日志路径2(可使用通配符*)

五、Febeat常用配置说明

yml配置文件严格控制缩进,如果配置顶格,那么应用到全局,如果存在缩进,则只应用到此缩进层级。以下配置根据需要选取

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - 日志路径1(可使用通配符*)
  tags: ["标记1","标记2"]  #向日志中添加tags标记,tags字段为数组类型
  fields: 
    test1: test1_value  #向日志中添加test1字段,默认在fields字段下
    test2: 2
  encoding: utf-8  #指定编码
  fields_under_root: true  #默认为false,为true是将添加的字段放在根路径,不放在fields字段下
  include_lines: ["^正则表达式1","^正则表达式2"]  #只收集开头匹配上此正则表达式的行
  exclude_files: ["^正则表达式1","^正则表达式2"]  #排除,不收集开头匹配上此正则表达式的行
  #多行匹配,将多行日志合并成一条日志,比如java日志、tomcat的catalina日志等。
  multiline.pattern: '正则表达式'  #多行匹配使用的正则表达式
  multiline.negate: true  #开启匹配模式,为true则以匹配上的为分隔,为false则以不匹配上的为分隔。
  multiline.match: after  #上一条配置为true,则将匹配不上的追加在匹配上的后面;
                          #为false,则将匹配上的追加在匹配不上的后面。
                          #此配置为before,则追加在前面。
  

如果想要重新从头读取日志文件,可以删除/var/lib/filebeat/registry目录,然后重启filebeat

rm -rf /var/lib/filebeat/registry && systemctl restart filebeat
上一篇下一篇

猜你喜欢

热点阅读