向日志消息添加集群/实例/作业执行 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;

  • 修复日志消息以避免信息重复。

依赖项

测试

文档影响

参考资料