背景随着技术的成熟,应用开发方式也在不断变化。开发各类功能的专用程序段已经成为主要趋势。 在微服务架构中,每个服务运行在独立的进程中,服务与服务间通过轻量级的通信机制(一般是基于HTTP协议的API)互相协作。API主要依赖于ESB、基于文件系统的资源、云解决方案及保留系统的集成。 客户端一般通过JavaScript框架搭建展示层,处理与API的交互。 根据“XX即代码”设计思路,大量底层服务能够通过git仓库和生成机制将源码转换为功能系统。 这便是应用设计机制。经过合理的设计,各个组件便能够正常运转,提供各项功能。但应用一旦发生故障,却很难定位到问题根源。 不同组件在提供应用服务的过程中都能产生日志,但日志格式和结构各不相同,因此需要建立统一日志管理机制。 下方的统一日志管理方案可处理各个组件的日志,实现了日志的统一查看与分析。 出现故障后,开发人员可根据统一格式的日志文件查找问题,不需要在不同系统之间来回切换。 哪些人员需要用到统一日志管理功能?运维开发人员 如果应用突然出现故障,各组件的日志按照不同格式存储在文件系统中。即便收集到所有日志,按照时间顺序一一查询所有日志也耗时耗力。有了统一日志管理系统,日志不仅能够集中存储,还能保证格式统一,极大地方便了运维开发人员排查故障,而上下文信息也有助于找到问题的根源。 安全人员 统一日志管理系统能够帮助安全团队发现未授权的访问:从统一日志管理系统导出相关报告,比对日志,可发现可疑活动。例如,通过统一日志管理系统可发现如下错误: 通过统一日志管理系统导出报告后,可设置仅展示36209错误,显示日期/时间信息等相关消息。 IT运维人员 采用统一日志管理系统后,能够减少监控等任务对IT基础设施的侵入。IT运维人员可通过统一日志管理系统理解系统之间的交互关系,从而更加合理地安排日常巡检任务。 基本流程统一日志管理系统的基本流程如下:
在解析正确的前提下,上方日志可以升级为如下格式: 升级后的日志采用了标准格式,提高了日志分析效率。
上方日志可优化如下: 经过优化,将时间戳转换成标准时间格式;在IP地址中添加主机系统;锁定错误码,查看更多信息。
日志中需要记录哪些信息日志信息的时效性很强,因此采集过程中必须做好取舍。在文章开头的例子中,发生故障后,运维开发人员需要查看应用的全部日志,包括微服务、数据块、客户端和安全层的日志。如果日志中的部分数据与故障无关,就需要另外花时间剔除这类信息。 下图为授权服务日志: 虽然日志中的所有信息都很重要,但最好还是只保留下列信息: 这样,发生故障时,需要查看的日志量就会大大减少。 敏感信息 统一日志管理系统不能存储访问密钥、数据库连接串、加密密钥、账户信息、用户信息等敏感信息。上述案例中的tokenGoesHere消息就不应该保存在统一日志管理系统中。如确有需要,可采集下列信息: 达成约定 要基于统一日志管理系统所有用户的需求达成约定,即明确日志事件数量的上限和下限。 统一日志管理系统选择标准要根据功能需求选择统一日志管理系统。以下为参考建议:
结论开发运维人员、IT运维人员以及安全/合规人员都会用到统一日志管理解决方案。合理使用统一日志解决方案不仅有助于定位故障根源,还能在故障发生之前及时发送预警。部署统一日志解决方案时,需合理配置记录权限,按照监管规定避开敏感信息。优秀的统一日志管理解决方案应该能够快速提供分析所需信息,通过内置报告和相关功能帮助各类用户迅速响应常规请求。 |
|