背景
随着单应用的拆分,微服务数量逐渐增长。不可避免的对运维工作产生爆发式的增长,而日志作为日常运维工作中必不可少的环节。由于微服务分布式部署造成日志分散,日志查询较为繁琐,故引出此需求。
需求
收集各个微服务中产生的日志,并将其通过可视化页面进行展示。
项目分解
一期工程
- 日志的集中收集工作
- 日志可视化搜索
- 制定简单日志规范,可按照应用+traceID+业务+日志内容(可能还会包含其他基础数据,以具体设计方案为准)
- traceId单应用单实例内日志追踪ID
- 日志内容暂不拆分具体业务类型下的日志格式
方案
- 每个微服务中增加向kafka推送日志模块,具体通过扩展logback的Appender进行实现,通过MDC增加traceID以及一些其他信息。
- logstash读取kafka数据,过滤信息推送ES。
日志规范设计
基于JSON文本
当前为V1.0字段定义格式
字段名称 | 字段类型 | 说明 |
---|---|---|
version | String | 版本号 |
app_id | String | 应用ID 由日志配置系统分配 |
service_name | String | 服务名称 |
send_time | Date | 日志写出时间 格式:yyyy-MM-dd HH:mm:ss,SSS |
hostname | String | 主机名称 |
trace_id | String | 日志追踪ID |
bus_type | String | 业务类型 |
bus_version | String | 业务类型版本号 |
payload | String | 日志内容 |
ELK安装
版本:7.9.3
ES docker安装
- 搜索仓库镜像
docker pull elasticsearch:7.9.3
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elastics