背景

目前项目查看日志的方式较为朴素,人工线上查看 log 的方式也较为麻烦。一套能查看全链路日志的系统,对每位开发来说无疑是雪中送炭的。

其次,目前的业务日志中的数据是可供二次利用和开发的,而非目前仅是排查问题使用。

目标

  1. 打造全员可实时查看生产日志,并能提取调用链日志
  2. 应用到后续的业务发展中(BI)
  3. APM

价值

为 BI 业务(other/计算)做准备

夯实服务架构

便利开发查看日志,不仅是业务日志,Filebeat 提供了各种 module 以支持监控各种中间件的日志

初步设想架构图

改动点

  1. 服务
    1. 保持原有日志格式
    2. 各日志加字段 ['traceId', 'localIp', 'module'] - 以便有问题可以确定到某台机器上的某个服务
    3. 各模块 traceId 通过 REST 接口传递 header(Rest 插件改造)
    4. 由(网关生成 traceid)orange 向下传递 traceId(uuid/snowflake)
  2. ELK(单点)
    1. Filebeat 和服务部署在同台机器上
    2. ES index 格式暂定:${环境/(dev/prod/release)}-${区分开各业务字段(比如bi/gateway/biz)}-${日期(YYYYMM)}
    3. Logstash 分割 message,add-field['traceId']
    4. ELK 部署在另外一台机器