在OpenStack的,可以說,例如,我輸入命令,我使用圖像MYIMAGE啓動一個實例,並用香精1.我如何追蹤特定的終端命令?
nova boot --image myimage --flavor 1 server1
我怎樣才能真正追溯這一命令,並得到像什麼細節函數執行,因爲代碼是在Python中,它執行命令時輸入的文件等,
對不起,我是一個linux noob,我試圖找到方法來追蹤幾個調用。而不是通過瀏覽所有文件並執行此操作來完成此操作。
有沒有簡單的方法來做到這一點?
在OpenStack的,可以說,例如,我輸入命令,我使用圖像MYIMAGE啓動一個實例,並用香精1.我如何追蹤特定的終端命令?
nova boot --image myimage --flavor 1 server1
我怎樣才能真正追溯這一命令,並得到像什麼細節函數執行,因爲代碼是在Python中,它執行命令時輸入的文件等,
對不起,我是一個linux noob,我試圖找到方法來追蹤幾個調用。而不是通過瀏覽所有文件並執行此操作來完成此操作。
有沒有簡單的方法來做到這一點?
如果你想跟蹤一個普通的Python程序,看一看的Python trace module。
不過,我不認爲你會發現跟蹤有用的瞭解OpenStack的在你提供的例子是這樣做的:
nova boot --image myimage --flavor 1 server1
OpenStack的未實現爲一個單一的Python程序。它被實現爲Python程序的集合,它們在不同的進程中作爲Linux服務運行,並且通常這些進程分佈在多個機器上。
nova
程序只是一個小型的客戶端程序,它通過HTTP向OpenStack端點發出請求。當您執行上述請求時,涉及以下服務。請注意,大多數OpenStack「服務」實際上是由多個Linux「服務」(aka daemons)實現的。這些是您執行nova boot
時涉及的OpenStack服務和Linux服務/守護進程。
請注意,如果涉及新的網絡服務(量子),則會涉及更多的服務。
開棧確實使用兩種機制的進程間通信:
該服務還通過數據庫共享信息,但如果您有興趣追蹤控制線程,則這並不重要。
對於你nova boot
給的例子,注意所有不同服務所發生的相互作用:
glance-api通過HTTP請求glance-registry從圖像後端檢索文件。
如果您想生成一個包含所有涉及的OpenStack代碼的跟蹤,則必須跟蹤所涉及的每個服務。
我建議你只是閱讀代碼而不是試圖做自動化的痕跡。您還可以查看日誌文件,因爲它們包含大量的調試信息。查看最近發佈的OpenStack Operations Guide,瞭解如何閱讀日誌文件的一些指導。
如果您可以獲取進程ID,則可以使用strace
。
這裏是鏈接,介紹瞭如何:
http://www.cyberciti.biz/tips/linux-strace-command-examples.html
除了Lorin說你可以運行「nova --debug boot ...」以查看nova CLI對keystone和nova-api所做的REST API調用。
非常感謝您的詳細解答! – Pavan 2013-03-10 16:16:27