Filebeat收集日誌

一、概述

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章