日志系统改造执行方案
日志系统改造执行方案
xukun日志系统完善方案
背景现状
当前业务环境没有统一的日志输出格式,日志文件只能通过HTTP下载,运维人员处理效率低,需要将服务接入日志系统规范及适配性改造等(约150个微服务);服务增加日志采集(约100个微服务)
目标
通过完善日志系统集中收集日志,升级日志链路ID规范,通过打通日志系统链路ID和听云系统链路ID;提高运维效率,缩短问题定位时间由原来的2天降低至1天内
技术栈选择
- 采集层:Filebeat(轻量级日志采集)
- 缓冲层:Kafka(高吞吐消息队列,削峰填谷)
- 处理层:Logstash(日志解析、过滤、富化)
- 存储层:Elasticsearch(分布式搜索与存储)
- 展示层:Kibana(可视化分析与仪表盘)
现状与升级后对比总览
系统设计
- 应用程序日志采集设计
- 业务集群变更:
- 在启动命令中加入听云Agent,日志输出时调用链路ID。
- 统一日志输出模板,升级服务接入日志规范。
- 日志系统收集全部业务日志。
- 修改本地存储日期策略,节省服务器磁盘空间。
- 提供日志收集级别配置,根据实际情况调整日志收集级别。
- 日志滚动生成:定义并规范日志输出的统一格式,确保日志按一定规则滚动生成。
- Filebeat配置:开启Filebeat配置,用于收集服务日志,指定日志地址、Kafka的topic名字及服务名。Filebeat将采集到的日志文件发送到Kafka的指定topic中。
- 业务集群变更:
- 存储策略设计
- Kafka:作为日志的缓冲和分发层,接收来自Filebeat的日志数据。
- Logstash:
- 根据Kafka的topic配置不同的输入、过滤器和输出规则。
- 使用Logstash配置ES索引,并关联不同的索引生命周期,设置数据存储时间。在匹配过滤规则中,配置解析日志内容中的关键字段属性,用于在Kibana上独立展示。
- Elasticsearch:存储经过Logstash过滤和解析后的日志数据。针对协议报文数据量大和业务服务产生的日志,分别设置不同的过期时间(如7天和30天)。
- 可视化及监控设计
- Kibana:结合听云Agent输出的链路ID,进行日志查询,跟踪完整的链路过程。
- 异常监控:实时监控服务日志,提取异常信息(如404、500异常,OOM异常及业务定义的异常码),并通过邮件等方式推送异常、告警信息给运维人员。
- Kibana展示:按照Logstash解析出的关键字段属性(如服务名、服务IP地址、日志文件地址、时间戳、主机名等)进行展示和检索。
详细设计
定义并规范日志输出的统一格式
1)日志格式为
业务日志:【时间+日志级别+线程ID+类名&方法名&行号+日志信息】
协议日志:【TID+CMD(协议号)+时间戳+主机IP+原始报文】
2)协议日志按照协议日志格式,调整输出至ELK
3)业务日志使用 logback-spring.xml
统一日志配置,针对非生产环境输出debug级别,生产环境输出info及以上级别
1 |
|
微服务接入日志平台规范、接入听云SDK及适配性改造
修改应用程序的启动命令,加入听云Agent。
如 java -jar -javaagent:tingyun-agent.jar xxx.jar
$jdk -jar -Xms2g -Xmx2g $jvmops $jvmdump $jarname --spring.config.location=$path/config/${modulename}.properties --logging.config=file:$apps_path/$modulename/config/logback-spring.xml 2>&1 | $cronologpath/cronolog ${logpath}/${logname} >> /dev/null 2>&1 &
更新
logback-spring.xml
文件,统一日志输出模板。配置Filebeat,指定日志采集路径、Kafka topic等信息。
协议相关的服务日志写入到协议topic,业务服务和平台服务写入到业务topic
配置Logstash,定义输入、过滤、输出规则,并关联ES索引生命周期。
配置Elasticsearch,创建相应的索引模板和生命周期策略。
根据logstash配置使用的es索引,关联不同的索引,不同索引设置不同数据存储时间
协议索引过期时间设置为7天,业务索引则可以设置为30天