1. 程式人生 > >使用filebeat收集日誌到elasticsearch

使用filebeat收集日誌到elasticsearch

1.引言

  • 環境:

elastic stack 版本:6.5.1
使用以下元件
--elasticsearch 
--kibana
--filebeat

服務程式日誌儲存目錄:/home/liujg/dev/crush-backend-cpp/crush/gateway/bin/Debug.
有多個rotation日誌檔案,日誌檔名字尾".log".
日誌記錄格式:行號|時間戳|程序ID|執行緒ID|日誌級別|訊息內容

 

  • 目標

利用filebeat把服務日誌逐條提取,寫入elasticsearch,通過kibana檢視.


2.配置filebeat

filebeat配置/etc/filebeat/filebeat.yml內容如下:

filebeat.inputs:
- input_type: log
  paths:
    - /home/liujg/dev/crush-backend-cpp/crush/gateway/bin/Debug/*.log
  tags: ["my-service", "hardware", "test"]
  fields: {project: "myproject", instance-id: "574734885120952459"}
  
output.elasticsearch:
  hosts: ["localhost:9200"]
  pipeline: "test-pipeline"

paths:提取的日誌檔案,所有*.log檔案
tags,fields: 都用於標記日誌,供日誌查詢過濾。可用於區分日誌的服務型別,服務例項.(傾向用fields)


tags和fields的區別可參考(未見權威定論,僅供參考)
Tags vs Fields
https://discuss.elastic.co/t/tags-vs-fields/24014

可以配置多個input.每個有自己的fields,tags. (一個filebeat可以處理多個服務的日誌)
Configure inputs
https://www.elastic.co/guide/en/beats/filebeat/master/configuration-filebeat-options.html


https://www.elastic.co/guide/en/beats/filebeat/master/filebeat-input-log.html


3.清除elasticsearch資料

操作elasticsearch索引.

  • 檢視索引
$curl 'localhost:9200/_cat/indices?v'

返回內容:

health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_1                 3lHZbBZDTYKJbw6dT0wWBQ   1   0          3            0      9.1kb          9.1kb
yellow open   filebeat-6.5.1-2018.12.04 NxDy6YLPTb-dWC8ldOlD_w   3   1          2            0     12.4kb         12.4kb
  • 刪除索引

刪除指定索引.

$ curl -XDELETE 'localhost:9200/filebeat-6.5.1-2018.12.04

刪除file-*索引後,通過瀏覽器檢視kibana,提示Looks like you don't have any logging indices.
表明日誌已清空.


4.生成日誌

啟動程式生成日誌檔案,檔名為2018-12-05_0000.log。
內容如下:

1|2018-12-05, 17:12:16.823414|8020|140509537564864|debug|A debug severity messag
2|2018-12-05, 17:12:16.833594|8020|140509242611456|error|connect to host:192.168.88.135port:3079failed.error:Connection refused

5.驗證

驗證資料進入elasticsearch.
分別通過api和kibana檢視.

  • 檢視索引
curl 'localhost:9200/_cat/indices?v'

返回內容:

health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_1                 3lHZbBZDTYKJbw6dT0wWBQ   1   0          3            0      9.1kb          9.1kb
yellow open   filebeat-6.5.1-2018.12.05 tFzyRYRcTPKVRnVY0ekzaA   3   1          2            0      6.7kb          6.7kb

開啟kibana頁面
http://192.168.21.190:5601

檢視日誌,可見新增的日誌內容.
提取出的欄位,tags,fields都可以在發現頁面進行過濾。


6.索引查詢命令

  • 查詢索引

查詢全部內容

$ curl 'localhost:9200/filebeat-6.5.1-2018.12.04/_search?q=*&pretty'

q=*表示查詢所有內容.
pretty:漂亮的格式

  • 統計
$ curl 'localhost:9200/filebeat-6.5.1-2018.12.04/_count?pretty'
$ curl 'localhost:9200/filebeat-*/_count?pretty'
  • 條件查詢
$ curl -H'Content-Type: application/json'  -XGET 'http://localhost:9200/filebeat-6.5.1-2018.12.04/_search?pretty=true' -d'
{
  "query" : { "match" : { "message" : "info目錄" }}
}
'