1. 程式人生 > 實用技巧 >ELK6.3.2搭建配置檔案篇(filebeat版)

ELK6.3.2搭建配置檔案篇(filebeat版)

https://zhuanlan.zhihu.com/p/161007340

應用下載地址

Elasricsearch版本:6.3.2 ,下載地址:

Kibana版本:6.3.2 ,下載地址:

FileBeat版本6.3.2,下載地址:

FileBeat比logstash更輕量級,這裡以filebeat收集Java應用日誌為例;

★★★★★:es6.3.2需要分配使用者,不能使用root啟動,同時,安裝過程中會遇到各種各樣的問題,一點點解決吧;

啟動方式:

1、Elasticsearch
./bin/elasticsearch -d   # 後臺啟動

2、kibana
nohup ./bin/kibana &   # 後臺啟動
關閉kibana使用 netstat -tunlp|grep 5601   然後kill pid
如:tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      13082/./bin/../node
pid為 13082

3、filebeat
nohup ./filebeat -e -c filebeat-01.yml -d "Publish" & > nohup.out  # 後臺啟動
關閉  kill pid

ElasticSearch配置檔案elasticsearch.yml

cluster.name: ard-es # 叢集中的名稱
node.name: master-node # 該節點名稱
node.master: true  # 意思是該節點為主節點
node.data: false  # 表示這是資料節點 
discovery.zen.ping.unicast.hosts: ["192.168.1.1", "192.168.1.2", "192.168.1.3"] # 配置自動發現
http.cors.enabled: true # sticsearch中啟用CORS
http.cors.allow-origin: "*"  
xpack.security.enabled: True
xpack.ml.enabled: true
network.host: 0.0.0.0
http.port: 9200

# 在這裡我做了三臺叢集,另外兩臺的配置檔案
node.name: node-data-01/02
node.master: false  # 意思是該節點為主節點
node.data: true  # 表示這是資料節點 

# 一主兩從,主節點不作為資料節點

Kibana配置檔案kibana.yml

server.port: 5601  # 配置kibana的埠
server.host: "0.0.0.0"
elasticsearch.url: "http://127.0.0.1:9200"  # 配置es伺服器的ip,如果是叢集則配置該叢集中主節點的ip
logging.dest: /data/ELK6.3.0/kibana-6.3.2-linux-x86_64/logs/kibana.log  # 配置kibana的日誌檔案路徑,不然預設是messages裡記錄日誌

filebeat配置檔案filebeat.yml

#最頭疼的就是filebeat的配置檔案了,也遇到了各種各樣的問題,配置檔案如下:
# 是否開啟自定義欄位作為頂級欄位儲存到文件中,如果自定義欄位名稱與其他欄位名稱衝突,則自定義欄位將覆蓋其他欄位
fields_under_root: true
# 自定義欄位(我這裡是定義的當前應用的ip地址,用於應用多節點部署時,明確日誌輸入來源,嘗試過修改beat.name和hostname,均以失敗告終)
fields:
  applyIp: 192.168.1.2

filebeat.inputs:
- type: log  # 日誌輸入型別,檔案日誌以log標記
  paths:
    - /htdocs/my-base/logs/my-base.log  # 日誌在伺服器的絕對位置
  fields:
    type: my-base  # 相當於標籤的意思,在這裡給打一個標籤,在輸入到ES的時候可以用來區分輸送的ES索引
  tail_files: true   # 配置為true時,filebeat將從新檔案的最後位置開始讀取
  #指定正則表示式去匹配指定的行,例如multiline.pattern: '^\[',意思是去匹配以[開頭的行,下面的正則是 以日期開頭的、以空格開頭的、以Caused by開頭的、以INFO開頭的等.....
  #下面這正則有很多問題,關於多行日誌這一塊,參考了很多的文章,目前專案中的那種列印的json串多行的,filebeat還沒解決
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}|^[[:space:]]|^Caused by:|^INFO|^at'
  #定義pattern是否被否認,預設值是false,若為true,意思是對上面的匹配進行反轉(就是實際去匹配不以pattern的行)
  multiline.negate: false
  # 將上面的匹配條件的(或者是不匹配的,取決上面是true還是false) 結果,是放到行首 還是放到行位  after和before
  multiline.match: after

- type: log
  paths:
    - /htdocs/my-gateway/logs/my-gateway.log
  fields:
    type: my-gateway
  tail_files: true
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}|^[[:space:]]|^Caused by:|^INFO|^at'
  multiline.negate: false
  multiline.match: after
  
#-------------------------- Elasticsearchbled output ------------------------------  
output.elasticsearch:
  hosts: ["192.168.1.1:9200"]    # 指定es伺服器的ip埠
  indices:
    - index: "my-gateway"   # es索引
      when.equals:
        fields.type: "my-gateway" # filebeat中的標籤 區分索引
    - index: "my-base"
      when.equals:
        fields.type: "my-base"
        
#============================= Filebeat modules ===============================
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
#==================== Elasticsearch template setting ==========================
setup.template.settings:
  index.number_of_shards: 5
  index.number_of_replicas: 1
  index.codec: best_compression

在filebeat的配置檔案中,遇到的問題比較多,並且都還沒有解決,不過不影響ELK的使用;

1、多行日誌問題

異常日誌目前已經解決完畢,不過json串輸出的多行日誌這種還是沒有得到解決

2、記錄日誌所屬伺服器

在文件中說的修改beat.name和beat.hostname,嘗試了各種寫法,目前還是沒有得到解決;最後是使用的自定義欄位來解決的這個問題;

看看最終的成效

釋出於 07-16