前言
日志统一规范化方便开发人员查看日志和排查问题,在进行容器化部署时,例如k8s内的日志查询,通常是用于运维层面进行查看日志的,而开发人员需要一套属于自己的日志工具。
方案一:普罗米修斯那套,包括洛基(日志收集),Grafana可视化。比较轻量级而且与k8s兼容友好,在此不介绍,自行百度
方案二:有钱上收费,类似阿里的sls等
方案三:elk,这里介绍elk
一、项目开发日志规范
首先保证以下几点:
1、日志格式json,方便格式化
2、运维层面日志清洗阶段
3、logstash基于jvm,比较消耗资源,可以选择go开发的filebeat,我们将日志统一映射到某个磁盘,因此不再进行pod内filebeat,直接使用logstash
二、logstash配置:
下载es对应的logstash版本,非docker,docker部署需要挂载容器内部文件
tar -zxvf xxx.tar.gz //解压 mv xxx logstash //重命名
进入config目录修改jvm.options,xms等配置合适参数
随便什么位置新建一个启动配置文件logstash.conf,重要参数都在这里
input {
file {
path => "/usr/local/my.log"
start_position => "beginning"
type => "infolog"
sincedb_path => "/dev/null"
}
file {
path => "/usr/local/my1.log"
start_position => "beginning"
type => "errlog"
sincedb_path => "/dev/null"
}
}
filter {
json {
source => "message"
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] #匹配timestamp字段
target => "@timestamp" #将匹配到的数据写到@timestamp字段中
}
}
output {
if [type] == "infolog" {
elasticsearch {
hosts => ["test:9200"]
index => "infolog-%{+YYYY.MM.dd}"
}
} else if [type] == "errlog" {
elasticsearch {
hosts => ["test:9200"]
index => "errlog-%{+YYYY.MM.dd}"
}
}
}
./bin/logstash -f /usr/local/mydata/logstash/logstash.conf 启动后到kibana配置索引
创建索引模式,输入对应索引名称 ->下一步->选择时间戳->finish
然后到仪表盘查看即可