openstack日志格式说明
devstack,日志都统一放在 /opt/stack/logs 目录下
非 devstack 安装的 OpenStack,日志一般放在 /var/log/xxx/ 目录下。 比如 Nova 放在 /var/log/nova/ 下,Glance 放在/var/log/glance下……
OpenStack 的日志格式都是统一的: <时间戳><日志等级><代码模块><Request ID><日志内容><源代码位置> 时间戳: 日志记录的时间,包括 年 月 日 时 分 秒 毫秒 日志等级: 有INFO WARNING ERROR DEBUG等 代码模块: 当前运行的模块 Request ID:日志会记录连续不同的操作,为了便于区分和增加可读性,每个操作都被分配唯一的Request ID,便于查找日志内容 这是日志的主体,记录当前正在执行的操作和结果等重要信息 日志内容: 源代码位置:日志代码的位置,包括方法名称,源代码文件的目录位置和行号。(这一项不是所有日志都有)
[req-e7d63060-061e-426e-b3b3-4cec1c0a784c - - - - -]
[req-a5a09023-75d6-48c3-88be-98dafc64b023 7ad71a9654d447419cb6e0cf449a9d8e 45405654b7704f28a28d83815d936dc5 - default default]
Request ID;user ID;project ID;- default default
在日志文件中快速查找有用信息的小窍门: 1.确定一个日志范围:比如tail -f 文件;通过时间戳确定日志范围 2.利用“代码模块”快速定位。比如nova-*自服务都有自己特定的代码模块 nova-api:nova.api.openstack.compute.servers、nova.compute.api、nova.api.openstack.wsgi nova-compute:nova.compute.manager、nova.virt.libvirt.* nova-schedulernova.scheduler.* 3.利用Request ID查找相关的日志信息。 注意:Request ID是跨日志文件的。
日志与源码;源码方法xxx_rpcapi.yyy()与消息队列 ==================================================================================================== 在OpenStack源码中,以xxx_rpcapi命名的对象,表示的就是xxx的消息队列。 xxx_rpcapi.yyy() 方法则表示向 xxx 的消息队列发送 yyy 操作的消息。 self.compute_rpcapi.stop_instance() 的作用就是向 RabbitMQ 上 nova-compute 的消息队列里发送一条 stop instance 的消息。 -------------------------------------------------------------------------------------------------------------------------------------------- 2021-11-20 15:03:56.440 15855 DEBUG nova.compute.api [req-e7f161a9-1a19-44a1-b185-0035c8aa0409 80f373269d7a481b931a9352b42b28b8 f911df6b22d54d34b716efd7a97edf92 - default default] [instance: b78ce7ba-268d-40dd-88c8-4b516e14e4a3] Going to try to stop instance force_stop /usr/lib/python2.7/site-packages/nova/compute/api.py:2442 def force_stop(self, context, instance, do_cast=True, clean_shutdown=True): LOG.debug("Going to try to stop instance", instance=instance) #这里触发dbug日志 instance.task_state = task_states.POWERING_OFF instance.progress = 0 instance.save(expected_task_state=[None]) self._record_action_start(context, instance, instance_actions.STOP) self.compute_rpcapi.stop_instance(context, instance, do_cast=do_cast, clean_shutdown=clean_shutdown) #在OpenStack源码中,以xxx_rpcapi命名的对象,表示的就是 xxx 的消息队列。 xxx_rpcapi.yyy() 方法则表示向 xxx 的消息队列发送 yyy 操作的消息。

浙公网安备 33010602011771号