ELK6.3.2搭建配置檔案篇(filebeat版)
阿新 • • 發佈:2020-11-16
https://zhuanlan.zhihu.com/p/161007340
應用下載地址
Elasricsearch版本:6.3.2 ,下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.zip
Kibana版本:6.3.2 ,下載地址:https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz
FileBeat版本6.3.2,下載地址:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-darwin-x86_64.tar.gz
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