向日志消息添加集群/实例/作业执行 ID¶
https://blueprints.launchpad.net/sahara/+spec/logs-improvement
本规范建议向 Sahara 日志添加更多信息。
问题描述¶
查看一些 Sahara 日志时,很难确定它们指的是哪个集群/实例/作业执行。
应添加额外信息
与集群创建/扩展/删除相关的日志应包含集群 ID;
与作业执行/取消/删除相关的日志应包含作业执行 ID;
与在特定实例上执行的操作相关的日志应包含该实例的 ID。
提议的变更¶
可以将信息添加到 context resource_uuid 字段,然后由 openstack.common.log 中的 ContextAdapter 用于一组日志。
此更改需要在 openstack.common.local.store 中额外保存 context,以便从 openstack.common.log 访问 context
我们只需要设置集群 ID 和作业执行 ID 一次。因此,可以使用添加到 sahara.context 的 2 个方法来完成:set_current_cluster_id(cluster_id) 和 set_current_job_execution_id(je_id)
此外,实例及其 ID 在线程期间会发生变化。因此,仅当操作在此实例上执行时才应设置实例 ID。它将由类 SetCurrentInstanceId 提供,并以这种方式与包装函数 set_current_instance_id(instance_id) 一起使用
with set_current_instance_id(instance_id):
“with”语句内部的代码将使用新的 context(其中包含 resource_uuid 字段中的实例 ID)执行,但外部的 context 将保持不变。
如果指定了实例和集群,日志消息将如下所示
2014-12-22 13:54:19.574 23128 ERROR sahara.service.volumes [-] [instance:
3bd63e83-ed73-4c7f-a72f-ce52f823b080, cluster: 546c15a4-ab12-4b22-9987-4e
38dc1724bd] message
如果仅指定了集群
2014-12-22 13:54:19.574 23128 ERROR sahara.service.volumes [-] [instance:
none, cluster: 546c15a4-ab12-4b22-9987-4e38dc1724bd] message
如果指定了作业执行
2014-12-22 13:54:19.574 23128 ERROR sahara.service.edp.api [-] [instance:
none, job_execution: 9de0de12-ec56-46f9-80ed-96356567a196] message
由于 instance_format=’[instance: %(uuid)s] ‘的默认值无法在不更改配置的情况下修复,因此字段“instance:”存在于每条消息中(即使它不是必需的)。
实施这些更改后,应检查并修复 Sahara 日志消息,以避免信息重复。
替代方案¶
可以将信息手动添加到每条日志消息。
数据模型影响¶
无
REST API 影响¶
无
其他最终用户影响¶
无
部署者影响¶
无
开发者影响¶
无
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
apavlov-n
工作项¶
添加从 openstack.common.log 访问 context 的能力;
将有关集群/实例/作业执行 ID 的信息添加到 context;
修复日志消息以避免信息重复。
依赖项¶
无
测试¶
无
文档影响¶
无
参考资料¶
无