设计目标

  • 接入方式收敛
  • 日志格式规范
  • 日志解析对日志系统透明
  • 系统高吞吐、低延迟
  • 系统高可用、容量可扩展、高可运维性

    架构演进

  1. 本地磁盘日志
  2. syslog udp协议
  3. app>log agent>flume>kafka>ES>log ui
  4. app>disk log>log agent>flume>kafka>ES>log ui

    格式规范

  • time:日志产生时间,ISO8601格式
  • level:日志等级,FATAL,ERROR,WARN,INFO,DEBUG
  • app_id:应用id,用于标示日志来源
  • instance_id:实例id,用于区分同一应用不同实例,即hostname

    设计与实现

  • 生产&采集

    • logstash
      • 监听tcp/udp
      • 适用于通过网络上报日志的方式
    • filebeat
      • 直接采集本地生成的日志文件
      • 适用于日志无法定制化输出的应用
    • logagent
      • 物理机部署,监听unixsocket
      • 日志系统提供各种语言SDK
  • 传输&切分
    • 基于flume+kafka统一传输平台
    • 基于logid做日志分流
      • 一般级别
      • 低级别
      • 高级别(ERROR)
    • 从kafka消费日志,解析日志,写入elasticsearch
  • 存储&检索
    • elasticsearch多集群架构
      • 日志分级,高可用
    • 单数据集群内
      • master node + data node(hot/stale) + client node
      • 每日固定时间进行热>冷迁移
      • index提前一天创建,基于template进行mapping管理
    • 检索基于kibana

      技术选型

      ELK:
      Elastic Search
      Logstash
      Kinbana
      日志中心(记录系统业务/异常日志,统一分析)
      1、日志收集
      2、日志分析
      3、异常告警