在Openstack中,比方说,我正在输入命令,我使用图像myimage启动一个实例并使用flavor 1。
nova boot --image myimage --flavor 1 server1
我如何实际跟踪此命令并获取详细信息,例如代码在python中执行的函数,执行命令时输入的文件等。
抱歉,我是一个Linux菜鸟,我正试图找到跟踪几个电话的方法。而不是通过浏览所有文件并执行此操作。
有一种简单的方法吗?
答案 0 :(得分:2)
如果要跟踪常规Python程序,请查看Python trace module。
但是,我认为您不会发现跟踪对于了解OpenStack在您提供的示例中所做的事情有用:
nova boot --image myimage --flavor 1 server1
OpenStack不是作为单个Python程序实现的。它是作为一组Python程序实现的,这些程序在不同的进程中作为Linux服务运行,通常这些进程分布在多台机器上。
nova
程序只是一个小型客户端程序,它通过HTTP向OpenStack端点发出请求。当您执行上述请求时,涉及以下服务。请注意,大多数OpenStack“服务”实际上是由多个Linux“服务”(也称为守护进程)实现的。这些是执行nova boot
时涉及的OpenStack服务和Linux服务/守护程序。
请注意,如果涉及新的网络服务(量子),则此处将涉及更多服务。
OpenStack使用两种机制进行进程间通信:
服务还通过数据库共享信息,但如果您对跟踪控制线程感兴趣,这并不重要。
对于您使用nova boot
提供的示例,请注意服务中发生的所有互动:
glance-api 通过HTTP针对 glance-registry 发出请求,以从图像后端检索文件。
如果您想生成包含所涉及的所有OpenStack代码的跟踪,则必须跟踪所涉及的每个服务。
我建议只阅读代码而不是尝试自动跟踪。您还可以查看日志文件,因为它们包含大量调试信息。请查看最近发布的OpenStack Operations Guide,以获取有关如何读取日志文件的一些指导。
答案 1 :(得分:1)
除了Lorin所说的你可以运行“nova --debug boot ...”之外,还可以看到nova CLI对keystone和nova-api进行的REST API调用。
答案 2 :(得分:0)
如果您可以获取进程ID,则可以使用strace
。
以下链接说明了如何:
http://www.cyberciti.biz/tips/linux-strace-command-examples.html