通用组件系统设计之日志系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用组件系统设计之日志系统1.文档历史
2.系统概述
针对目前从运维侧看到的一些问题(文件过大,打印信息缺乏标准),希望对日志系统进行规范。提供统一的API,定义一定的规则,并为有效支撑后续日志系统的发展提供支撑。
2.1.功能定义
日志的主要作用是用来还原现场,协助我们分析问题,帮助重现历史。在日常具体工作
中,用得最多的是协助我们直接定义问题的系统维护类日志,以及用来统计分析系统的运行状态的数据上报类日志。我们的日志未来也要具备这类能力。
2.1.1.系统维护类日志
系统维护类日志界别的分类如下。
为了辅助我们回溯相关问题,考虑到多个模块、多机器、多进程、多线程的问题,对日志进行区分,并设定一些参考格式,便于日志检索,如下供开发人员参考。
2.1.2.数据上报类日志
数据上报类日志严格遵从制定的格式,便于分析汇总。如下是以调用者身份上报被调用服务使用状态的日志格式。每一项之间用|分割,供参考。
2.2.性能定义
后端日志应该统一规范,通过API达成共识,并实现易用性。并发保持不交叉,写入能力应该发挥系统能力,并不再并发时降低。日志的格式应该统一。
验收办法,如下表:
编号并发用例场景完成时长(ms)检查
1 1线程单线程打印1000万行日志
2 10线程每线程打印100万行日志
3 10进程每进程打印100万行日志
每线程打印10万行日志
4 100线
程
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)(二期)
1.日志分析统计运行质量(接口调用次数,正确率,响应时间等)(三
期)
日志库目录结构设计
•自动读取etc目录下的所有xml配置文件,xml文件以业务系统模块划分,新增的xml文件,在重启服务后,可以自动生成写日志文件。
•xml配置文件起到,服务日志先注册后使用。
•日志文件采用,日期自动更换回滚的写入方式。
接口通用返回码
返回码类型返回码编码返回码说明
成功0 调用成功
请求方错误1xxx 请求方错误
1001 请求参数字段缺失
1002 请求参数字段类型错误
1003 请求参数字段为空
1004 请求接口未找到
1005 请求接口报文格式解析错误
1006 请求接口版本号错误
1007 请求接口报文头字段错误
11xx 业务处理错误码