Learning Openstack part3 Openstack日志详解

在深入了解Openstack各个组件操作之前,我们来学习一个重要的内容:Openstack日志。
Openstack的日志记录了非常详细的细节信息,是我们学习和troubleshoting的利器。


Why?

  1. 学习 OpenStack 需要看日志吗?这个问题的答案取决于你是谁。
    如果你只是 OpenStack 的最终用户,那么日志对你不重要。你只需要在 GUI上 操作,如果出问题直接找管理员就可以了。
    但如果你是 OpenStack 的运维和管理人员,日志对你就非常重要了。因为 OpenStack 操作如果出错,GUI 上给出的错误信息是非常笼统和简要的,日志则提供了大量的线索,特别是当 debug 选项打开之后。
    如果你正处于 OpenStack 的学习阶段,正如我们现在的状态,那么也强烈建议你多看日志。日志能够帮助你更加深入理解 OpenStack 的运行机制。
  2. 日志能够帮助我们深入学习 OpenStack 和排查问题。但要想高效的使用日志还得有个前提:
    必须先掌握 OpenStack 的运行机制,然后针对性的查看日志。
    就拿 Instance Launch 操作来说,如果之前不了解 nova-* 各子服务在操作中的协作关系,如果没有理解流程图,面对如此多而且分散的日志文件,我们也很难下手不是。
  3. 对于 OpenStack 的运维和管理员来说,在大部分情况下,我们都不需要看源代码。
    因为 OpenStack 的日志记录得很详细了,足以帮助我们分析和定位问题。
    但还是有一些细节日志没有记录,必要时可以通过查看源代码理解得更清楚。
    即便如此,日志也会为我们提供源代码查看的线索,不需要我们大海捞针。
    这一点我们会在后面的操作分析中看到。

What?

如何开启debug日志

openstack开启debug日志的方式十分简单,只要在相关服务的配置文件的DEFAULT部分下配置"debug=true"配置项后重启服务即可:

openstack-config --set /etc/nova/nova.conf DEFAULT debug true

日志位置

Openstack日志一般放在/var/log下,例如nova的日志就位于/var/log/nova下,每个服务都有自己的日志文件,从命名上很容易区分:

Learning Openstack part3 Openstack日志详解_第1张图片
nova-log-dir.png

每个子服务都以“nova-”开头:
“nova-api.log”就是“openstack-nova-api”服务的的日志,依次类推。

日志格式

Opentack日志格式都是统一的,如下:

<时间戳><日志等级><代码模块><日志内容><源代码位置>

说明

  • 时间戳 日志记录的时间,包括 年 月 日 时 分 秒 毫秒
  • 日志基本 有INFO WARNING ERROR DEBUG等
  • 代码模块 当前运行的模块
  • Request ID 日志会记录连续不同的操作,为了便于区分和增加可读性,每个操作都被分配唯一的Request ID,便于查找
  • 日志内容 这是日志的主体,记录当前正在执行的操作和结果等重要信息
  • 源代码位置 日志代码的位置,包括方法名称,源代码文件的目录位置和行号。这一项不是所有日志都有

下面我们来举例说明:


image.png

这条日志我们可以得知:

  • 代码模块是nova.api.openstack.wsgi,由此可以得知是nova API请求的的日志内容
  • 日志的内容是json格式,内容是api送了请求的创建instance的申请,申请中包含了instance的基本信息
  • 如果要跟踪源代码,可以到“/usr/lib/python2.7/site-packages/nova/api/openstack/wsgi.py”的789行,方法是“_process_stack”
Learning Openstack part3 Openstack日志详解_第2张图片
track.png

你可能感兴趣的:(Learning Openstack part3 Openstack日志详解)