Nova日志不应包含ERROR或TRACE信息¶
https://blueprints.launchpad.net/nova/+spec/clean-logs
Nova日志应该易于阅读、有意义,并且只在特殊情况下包含错误和跟踪信息。
问题描述¶
在OpenStack gate中正常且成功的Tempest运行期间,我们会在日志中获得大量的ERROR和堆栈跟踪信息。这是对于通过的测试结果,这意味着云应该正常运行。
在正常情况下日志中出现堆栈跟踪和错误,使得操作员很难真正确定OpenStack云中何时发生实际问题。即使在正常的开发过程中,人们也会被ERROR误导,从而在调试OpenStack问题时,真正的错误被掩盖。
提议的变更¶
我们应该清理所有在正常Tempest运行期间发生的堆栈跟踪和错误实例。这意味着解决当前暴露的这些错误,以及更改一些日志级别,我们将以log.exception级别记录实际上是预期的异常(因此应该使用log.debug或完全删除)。
有关完成标准,请参见下面的测试部分。
备选方案¶
无。
数据模型影响¶
无。
REST API 影响¶
无。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
这将更改一些日志消息以提高清晰度。构建了围绕旧错误消息的过滤器的用户将需要调整他们的过滤器。由于他们可能正在过滤掉这些消息,因此应该将其降至最低。
性能影响¶
无。(可能微小,且难以察觉的提升,因为不再转储那么多堆栈跟踪。)
其他部署者影响¶
无。
开发人员影响¶
一旦强制执行,开发人员将不得不更加小心地在Nova代码中进行任意log.exception调用,并且需要更加小心地捕获预期条件的适当异常。
实现¶
负责人¶
- 主要负责人
sdague
工作项¶
应该按照以下顺序处理这些服务(将每个服务的清理视为一个工作项)
n-sched
n-net
n-api
n-cpu
n-sched和n-net目前是最需要清理的,因为它们是测试不会直接访问的服务(仅通过n-api调用间接访问)。确保它们在转储堆栈跟踪方面没有意外行为,将提供额外的验证,证明这些服务按预期工作。
依赖项¶
无
测试¶
测试将通过当前在gate中运行的tempest check_logs.py脚本完成。一旦我们确信已经清理了某个服务,我们将从allowed_dirty列表中删除该服务 https://github.com/openstack/tempest/blob/master/tools/check_logs.py#L33。此后,任何导致该服务日志中出现堆栈跟踪或错误的更改都将导致Tempest测试失败,从而阻止更改合并。
文档影响¶
将有一项相关的整体日志记录标准工作(将在Juno跨项目会议上提出),需要与此同步完善。