Adding cluster/instance/job_execution ids to log messages

https://blueprints.launchpad.net/sahara/+spec/logs-improvement

This specification proposes to add more information to Sahara logs.

Problem description

Looking at some Sahara logs it is difficult to determine what cluster/instance/job_execution to which they refer.

Extra information should be added:

  • logs associated with cluster creation/scaling/deletion should contain cluster id;
  • logs associated with job execution/canceling/deletion should contain job execution id;
  • logs associated with operations executed on specific instance should contain id of this instance.

Proposed change

Information can be added to context resource_uuid field and then can be used by ContextAdapter in openstack.common.log for a group of logs.

This change requires additional saving of context in openstack.common.local.store to access context from openstack.common.log

We need to set cluster id and job execution id only once. So, it could be done with 2 methods that will be added to sahara.context: set_current_cluster_id(cluster_id) and set_current_job_execution_id(je_id)

Additionally, instances and their ids are changing during the thread. So, instance id should be set only when operation executes on this instance. It will be provided by class SetCurrentInstanceId and will be used with wrapping function set_current_instance_id(instance_id) this way:

with set_current_instance_id(instance_id):

Code inside “with” statement will be executed with new context (which includes instance id in resource_uuid field) but outside of it context will stay the same.

If instance and cluster specified, log message will looks like:

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

If only cluster specified:

2014-12-22 13:54:19.574 23128 ERROR sahara.service.volumes [-] [instance:
none, cluster: 546c15a4-ab12-4b22-9987-4e38dc1724bd] message

If job execution specified:

2014-12-22 13:54:19.574 23128 ERROR sahara.service.edp.api [-] [instance:
none, job_execution: 9de0de12-ec56-46f9-80ed-96356567a196] message

Field “instance:” is presented in every message (even if it’s not necessary) because of default value of instance_format=’[instance: %(uuid)s] ‘ that cannot be fixed without config changing.

After implementation of this changes, Sahara log messages should be checed and fixed to avoid information duplication.

Alternatives

Information can be added manually to every log message.

Data model impact

None

REST API impact

None

Other end user impact

None

Deployer impact

None

Developer impact

None

Sahara-image-elements impact

None

Sahara-dashboard / Horizon impact

None

Implementation

Assignee(s)

Primary assignee:
apavlov-n

Work Items

  • Adding ability to access context from openstack.common.log;
  • Adding information about cluster/instance/job execution ids to context;
  • Fixing log messages to avoid information duplication.

Dependencies

None

Testing

None

Documentation Impact

None

References

None