使用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目錄" }}
}
'