• Filebeat

  • Output

  • Shipper

  • Logging(可選)

  • Run Options(可選)

這個Blog主要講解Filebeat的配置部分,其他部分后續會有新的Blog介紹。

Filebeat的部分主要定義prospector的列表,定義監控哪里的日志文件,關於如何定義的詳細信息可以參考filebeat.yml中的注釋,下面主要介紹一些需要注意的地方。

filebeat.prospectors:

- input_type: log

  paths:

    - /log/channelserver.log

    #- /home/wang/data/filebeat-5.0.2-linux-x86_64/test.log

  encoding: gbk

  symlinks: true

  include_lines: ['\[.*?統計\]','\[.*?結算\]']

  document_type: channelserver

  fields_under_root: true

  fields:

    host: 192.168.10.155

 

processors:

- drop_fields:

    #fields: ["beat.hostname", "beat.name", "beat.version", "input_type", "beat"]

    fields: ["input_type", "beat", "offset", "source"]

 

output.redis:

  enabled: true

  hosts: ["192.168.10.188"]

  port: 6379

  datatype: list

  key: "filebeat"

  db: 0

 

output.file:

  enabled: true

  path: "/tmp/filebeat"

 

output.console:

  enabled: false

  • paths:指定要監控的日志,目前按照Go語言的glob函數處理。沒有對配置目錄做遞歸處理,比如配置的如果是:

/var/log/* /*.log

則只會去/var/log目錄的所有子目錄中尋找以”.log”結尾的文件,而不會尋找/var/log目錄下以”.log”結尾的文件。

  • encoding:指定被監控的文件的編碼類型,使用plain和utf-8都是可以處理中文日志的。

  • input_type:指定文件的輸入類型log(默認)或者stdin。

  • exclude_lines:在輸入中排除符合正則表達式列表的那些行。

  • include_lines:包含輸入中符合正則表達式列表的那些行(默認包含所有行),include_lines執行完畢之后會執行exclude_lines。

  • exclude_files:忽略掉符合正則表達式列表的文件(默認為每一個符合paths定義的文件都創建一個harvester)。

  • fields:向輸出的每一條日志添加額外的信息,比如“level:debug”,方便后續對日志進行分組統計。默認情況下,會在輸出信息的fields子目錄下以指定的新增fields建立子目錄,例如fields.level。

fields: 
level: debug

則在Kibana看到的內容如下:

這里寫圖片描述

  • fields_under_root:如果該選項設置為true,則新增fields成為頂級目錄,而不是將其放在fields目錄下。自定義的field會覆蓋filebeat默認的field。例如添加如下配置:

fields: 
level: debug 
fields_under_root: true

則在Kibana看到的內容如下:

這里寫圖片描述

  • ignore_older:可以指定Filebeat忽略指定時間段以外修改的日志內容,比如2h(兩個小時)或者5m(5分鍾)。

  • close_older:如果一個文件在某個時間段內沒有發生過更新,則關閉監控的文件handle。默認1h。

  • force_close_files:Filebeat會在沒有到達close_older之前一直保持文件的handle,如果在這個時間窗內刪除文件會有問題,所以可以把force_close_files設置為true,只要filebeat檢測到文件名字發生變化,就會關掉這個handle。

  • scan_frequency:Filebeat以多快的頻率去prospector指定的目錄下面檢測文件更新(比如是否有新增文件),如果設置為0s,則Filebeat會盡可能快地感知更新(占用的CPU會變高)。默認是10s。

  • document_type:設定Elasticsearch輸出時的document的type字段,也可以用來給日志進行分類。

  • harvester_buffer_size:每個harvester監控文件時,使用的buffer的大小。

  • max_bytes:日志文件中增加一行算一個日志事件,max_bytes限制在一次日志事件中最多上傳的字節數,多出的字節會被丟棄。

  • multiline:適用於日志中每一條日志占據多行的情況,比如各種語言的報錯信息調用棧。這個配置的下面包含如下配置:

pattern:多行日志開始的那一行匹配的pattern
negate:是否需要對pattern條件轉置使用,不翻轉設為true,反轉設置為falsematch:匹配pattern后,與前面(before)還是后面(after)的內容合並為一條日志
max_lines:合並的最多行數(包含匹配pattern的那一行)timeout:到了timeout之后,即使沒有匹配一個新的pattern(發生一個新的事件),也把已經匹配的日志事件發送出去1234512345
 
  • tail_files:如果設置為true,Filebeat從文件尾開始監控文件新增內容,把新增的每一行文件作為一個事件依次發送,而不是從文件開始處重新發送所有內容。

  • backoff:Filebeat檢測到某個文件到了EOF之后,每次等待多久再去檢測文件是否有更新,默認為1s。

  • max_backoff:Filebeat檢測到某個文件到了EOF之后,等待檢測文件更新的最大時間,默認是10秒。

  • backoff_factor:定義到達max_backoff的速度,默認因子是2,到達max_backoff后,變成每次等待max_backoff那么長的時間才backoff一次,直到文件有更新才會重置為backoff。比如:

這里寫圖片描述

如果設置成1,意味着去使能了退避算法,每隔backoff那么長的時間退避一次。

  • spool_size:spooler的大小,spooler中的事件數量超過這個閾值的時候會清空發送出去(不論是否到達超時時間)。

  • idle_timeout:spooler的超時時間,如果到了超時時間,spooler也會清空發送出去(不論是否到達容量的閾值)。

  • registry_file:記錄filebeat處理日志文件的位置的文件

  • config_dir:如果要在本配置文件中引入其他位置的配置文件,可以寫在這里(需要寫完整路徑),但是只處理prospector的部分。

  • publish_async:是否采用異步發送模式(實驗功能)。

 

Filebeat的基本原理其實就是有一群prospector,每個prospector手下管着一批harvester,每個harvester負責監視一個日志文件,把變動的內容由spooler匯總之后交給Logstash或者Elasticsearch。如果想快速搭建一個可以工作的Filebeat,無非有三點:

1.說明要監視哪些文件

filebeat:
  prospectors:
    -      paths:
        - "/var/log/lmz.log"1234512345
 

2.說明收集的日志發給誰

如果直接發送給Elasticsearch,可以設置如下:

output:
 

如果需要發給Logstash,可以注釋掉Elasticsearch的配置,然后設置Logstash如下:

output:
 

當然,也需要在Logstash的配置中指明要從該端口(5044)監聽來自Filebeat的數據:

/etc/logstash/conf.d/beats-input.conf:
input {
  beats {
    port => 5044
  }
}123456123456
 

這里的配置舉例是把Filebeat、Logstash、Elasticsearch安裝在了一台機器上,實際使用中肯定是分開部署的,需要根據實際情況修改配置文件中的IP地址及端口號。

3.讓Elasticsearch知道如何處理每個日志事件。

默認的Elasticsearch需要的index template在安裝Filebeat的時候已經提供,路徑為/etc/filebeat/filebeat.template.json,可以使用如下命令裝載該模板:

$ curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@/etc/filebeat/filebeat.template.json11
 

當然,也不能忘了,每次修改完Filebeat的配置后,需要重啟Filebeat才能讓改動的配置生效

 

 

1.下載和安裝

https://www.elastic.co/downloads/beats/filebeat11
 

目前最新版本 1.3.0 
這里選擇 Linux 64-BIT 即方式一 
方式一:源碼

wget https://download.elastic.co/beats/filebeat/filebeat-1.3.0-x86_64.tar.gztar -zxvf filebeat-1.3.0-x86_64.tar.gz1212
 

方式二:deb

curl -L -O https://download.elastic.co/beats/filebeat/filebeat_1.3.0_amd64.debsudo dpkg -i filebeat_1.3.0_amd64.deb1212
 

方式三:rpm

curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.3.0-x86_64.rpmsudo rpm -vi filebeat-1.3.0-x86_64.rpm1212
 

方式四:MAC

curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.3.0-darwin.tgztar -xzvf filebeat-1.3.0-darwin.tgz1212
 

2.配置Filebeat

環境說明: 
1)elasticsearch和logstash 在不同的服務器上,只發送數據給logstash 
2)監控nginx日志 
3)監控支付日志 
4)監控訂單日志

2.1配置

編輯filebeat.yml

vim filebeat.yml11
 

默認監控日志配置

filebeat: 
  prospectors:
  -      
        - /var/log/*.log      input_type: log 123456123456
 

按照要求修改為

filebeat: 
  prospectors:
  -      
        - /www/wwwLog/www.lanmps.com_old/*.log        - /www/wwwLog/www.lanmps.com/*.log      input_type: log 
      document_type: nginx-access-www.lanmps.com
 -      paths:
        - /www/wwwRUNTIME/www.lanmps.com/order/*.log      input_type: log 
      document_type: order-www.lanmps.com
  -      paths:
        - /www/wwwRUNTIME/www.lanmps.com/pay/*.log      input_type: log 
      document_type: pay-www.lanmps.com

  #elasticsearch:
  #   hosts: ["localhost:9200"]
   
    hosts: ["10.1.5.65:5044"]

...其他部分沒有改動,不需要修改1234567891011121314151617181920212223242512345678910111213141516171819202122232425
 

2.2 說明

  1. paths:指定要監控的日志,目前按照Go語言的glob函數處理。沒有對配置目錄做遞歸處理,比如配置的如果是:

/var/log/* /*.log11
 

則只會去/var/log目錄的所有子目錄中尋找以”.log”結尾的文件,而不會尋找/var/log目錄下以”.log”結尾的文件。 
2. input_type:指定文件的輸入類型log(默認)或者stdin。 
3. document_type:設定Elasticsearch輸出時的document的type字段,也可以用來給日志進行分類。

把 elasticsearch和其下的所有都注釋掉(這里Filebeat是新安裝的,只注釋這2處即可)

output:  #elasticsearch:  #   hosts: ["localhost:9200"]123123
 

開啟 logstash(刪除這兩行前的#號),並把localhost改為logstash服務器地址

 logstash:
    hosts: ["10.1.5.65:5044"]1212
 

如果開啟logstash了,那么Logstash配置中要設置監聽端口 5044: 
這個是默認文件位置,如果不存在請自行查找

vim /etc/logstash/conf.d/beats-input.conf11
 

增加端口

input {
  beats {
    port => 5044
  }
}1234512345
 

3.啟動

3.1 測試

-d "Publish"11
 

如果能看到一堆東西輸出,表示正在向elasticsearch或logstash發送日志。 
如果是elasticsearch可以瀏覽:http://localhost:9200/_search?pretty 如果有新內容返回,表示ok 
測試正常后,Ctrl+C結束

3.2啟動

nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &11
 

上面會轉入后台運行

3.3停止

查找進程 ID

ps -ef |grep filebeat11
 

KILL他

kill -9  id11
 

3.X kibana設置

如果使用 kibana 做日志分析, 
在kibana里,創建一個索引,注意pattern為:filebeat-* 
這里寫圖片描述

4.高級配置說明

http://kibana.logstash.es/content/beats/file.html

http://blog.csdn.net/a464057216/article/details/51233375

5.其他說明

5.1Elasticsearch知道如何處理每個日志事件

默認的Elasticsearch需要的index template在安裝Filebeat的時候已經提供,路徑為/etc/filebeat/filebeat.template.json,可以使用如下命令裝載該模板:

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@/etc/filebeat/filebeat.template.json11
 

如果運行成功則返回如下,表示模板已被接收

{
  "acknowledged" : true}123123
 

每次修改Filebeat配置,重啟Filebeat才能生效