通用组件系统设计之日志系统.docx
《通用组件系统设计之日志系统.docx》由会员分享,可在线阅读,更多相关《通用组件系统设计之日志系统.docx(11页珍藏版)》请在冰点文库上搜索。
![通用组件系统设计之日志系统.docx](https://file1.bingdoc.com/fileroot1/2023-6/9/c5b1044a-e474-49c6-885f-5139b5243489/c5b1044a-e474-49c6-885f-5139b52434891.gif)
通用组件系统设计之日志系统
通用组件系统设计之日志系统
1.文档历史
日期
作者
备注
2017-10-14
阳荣安
创建
2017-10-17
高勇
增加系统概述一节
2.系统概述
针对目前从运维侧看到的一些问题(文件过大,打印信息缺乏标准),希望对日志系统进行规范。
提供统一的API,定义一定的规则,并为有效支撑后续日志系统的发展提供支撑。
1.
2.
2.1.功能定义
日志的主要作用是用来还原现场,协助我们分析问题,帮助重现历史。
在日常具体工作中,用得最多的是协助我们直接定义问题的系统维护类日志,以及用来统计分析系统的运行状态的数据上报类日志。
我们的日志未来也要具备这类能力。
2.1.1.系统维护类日志
系统维护类日志界别的分类如下。
编号
级别
描述
1
DEBUG
调试应用程序使用
2
INFO
突出强调关键动作
3
WARN
出现了预知的错误
4
ERROR
出现不期望的故障,还能hold住
5
FATAL
严重问题,搞不定了
为了辅助我们回溯相关问题,考虑到多个模块、多机器、多进程、多线程的问题,对日志进行区分,并设定一些参考格式,便于日志检索,如下供开发人员参考。
编号
内容
备注
1
日志级别
DEBUG
2
日期时间
20171017-155600-123
3
机器节点
192.168.0.1
4
模块名
ORDER
5
文件名
Main.cpp
6
文件行号
12
7
进程号
123
8
线程号
11
9
日志消息体
灵活定义,建议控制大小在一定范围内
2.1.2.数据上报类日志
数据上报类日志严格遵从制定的格式,便于分析汇总。
如下是以调用者身份上报被调用服务使用状态的日志格式。
每一项之间用|分割,供参考。
编号
内容
例子
1
版本
1
2
日期时间
1508227752
3
调用方ID
CGI
4
调用方所在节点ID
WX1
5
被调方ID
ORDERSVR
6
被调方节点ID
LG1
7
服务与方法ID
Create
8
返回码
0
9
耗时
10ms
2.2.性能定义
后端日志应该统一规范,通过API达成共识,并实现易用性。
并发保持不交叉,写入能力应该发挥系统能力,并不再并发时降低。
日志的格式应该统一。
验收办法,如下表:
编号
并发
用例场景
完成时长(ms)
检查
1
1线程
单线程打印1000万行日志
2
10线程
每线程打印100万行日志
3
10进程
每进程打印100万行日志
4
100线程
每线程打印10万行日志
5
100进程
每线程打印10万行日志
2.3.系统设计
日志整体如下图,
编号
模块
职责
1
日志API
按统一规范打印日志,确保单台节点并发不乱,性能高
2
系统维护日志
应用借助日志API输出的日志文件,用于系统维护
3
数据上报日志
应用借助日志API输出的日志文件,用于数据上报
4
日志AGENT
在单台节点上,处理并上报结果到队列
1.对数据上报日志进行汇总处理,并形成结果
2.对系统维护日志践行检查预处理,并形成结果
5
日志收集队列
Kafuka,用来汇总分散的日志
6
日志分析服务器
从队列获取单节点日志结果,形成最终日志结果,输出到日志仓库
7
日志仓库
按制定格式存放日志,并建立索引
8
模块间调用门户
呈现模块健康状态,供管理参考
9
集中日志呈现门户
集中检索日志,供定位分析问题
2.4.门户UI参考
2.4.1.集中日志呈现门户
输入日志文件名,或者模块名,日期范围,给出所有日志列表。
2.4.2.模块间调用门户
用来描述系统间调用健康状态,同样也可以用来表达掉级的
2.4.2.1.查询指定服务间调用情况
2.4.2.2.查看调用者依赖的被调使用情况
2.4.2.3.查看按返回码和服务节点分布的情况
2.4.2.4.系统调用关系图
3.建设范围
编号
内容
备注
1
一期
搞定日志API,解决系统维护日志的输出问题
4.系统设计
日志库功能设计要点
1.日志通用组件满足的需求。
1.C++和PHP统一日志目录和格式规范。
2.依据IP/服务名称/上下文编号,聚合和追溯日志。
3.记录服务接口,请求返回数据,正确性,响应时间等信息。
4.记录调用方,请求返回数据,正确性,响应时间等信息。
2.日志库的未来架构图。
1.规划设计图
3.日志库概要设计。
1.日志级别
1.所有级别的日志输出到同一个日志文件中;
2.DEBUG(开发人员调试日志)/INFO(业务流程日志)/WARN(警告信息日志)/ERROR(系统错误日志);
3.ERROR级别日志,属于严重错误,需要开发人员及时处理,反映系统服务质量和稳定性的重要指标;
2.定义通用返回码
3.接口调用方日志记录
1.log_client_req(客户端请求接口数据)
2.log_client_rsp(客户端请求后返回数据)
4.接口服务方日志记录
1.log_server_req(服务端接收请求数据)
2.log_server_rsp(服务端返回请求数据)
4.开发阶段分解和本期实现内容。
1.日志基础组件库开发(C++\PHP统一调用)(一期,本期实现)
2.日志分析上报和聚合(统一查询多台服务器日志,区分IP/hostname)(二期)
3.日志分析统计运行质量(接口调用次数,正确率,响应时间等)(三期)
日志库目录结构设计
∙自动读取etc目录下的所有xml配置文件,xml文件以业务系统模块划分,新增的xml文件,在重启服务后,可以自动生成写日志文件。
∙xml配置文件起到,服务日志先注册后使用。
∙日志文件采用,日期自动更换回滚的写入方式。
接口通用返回码
返回码类型
返回码编码
返回码说明
成功
0
调用成功
请求方错误
1xxx
请求方错误
1001
请求参数字段缺失
1002
请求参数字段类型错误
1003
请求参数字段为空
1004
请求接口未找到
1005
请求接口报文格式解析错误
1006
请求接口版本号错误
1007
请求接口报文头字段错误
11xx
业务处理错误码
返回方错误
2xxx
返回方错误
2001
请求接口超时
2002
请求接口无响应
21xx
业务处理错误码
日志基础库开发方式:
C++和log4cplus开发,PHP扩展库,生成C++和PHP的so库文件。
感谢下载!
欢迎您的下载,资料仅供参考