阿里雲 官方 Log-Pilot + Elasticsearch + Kibana
https://help.aliyun.com/document_detail/86552.html
log-Pilot 有兩種工具對日志進行收集
- fluentd
- filebeat
我使用的是filebeat 對日志文件進行采集。
為了更好的對java 的日志進行采集 需要進行多行的日志收集
公司java 日志 一般以"^[" 進行段落區分
操作如下:
1. 拉取代碼 修改模板
git clone https://github.com/AliyunContainerService/log-pilot.git
cd log-pilot
vim log-pilot/assets/filebeat/filebeat.tpl
添加以下行
{{range .configList}}
- type: log
enabled: true
paths:
- {{ .HostDir }}/{{ .File }}
multiline.pattern: '^\[' #新增正則條件,以[開頭
multiline.negate: true #新增
multiline.match: after #新增
multiline.max_lines: 10000 #新增
scan_frequency: 10s
fields_under_root: true
{{if .Stdout}}
docker-json: true
{{end}}
{{if eq .Format "json"}}
json.keys_under_root: true
{{end}}
fields:
{{range $key, $value := .Tags}}
{{ $key }}: {{ $value }}
{{end}}
{{range $key, $value := $.container}}
{{ $key }}: {{ $value }}
{{end}}
tail_files: false
close_inactive: 2h
close_eof: false
close_removed: true
clean_removed: true
close_renamed: false
{{end}}
2. 打包鏡像
cd log-pilot/ && ./build-image.sh
打包成功后,鏡像打tag ,並push到私有倉庫
docker tag 原鏡像名稱 新鏡像名稱
docker push 新鏡像名稱
3. 部署
根據阿里雲的官方文檔操作即可
注意鏡像需要替換成我們自己制作的鏡像。