instance 從建立到刪除的整個生命週期都是有 Nova 管理的,後面各小節咱們以instance生命週期中不一樣操做場景爲例,詳細分析 Nova不一樣組件如何協調工做,並經過日誌分析加深你們對 Nova 的理解
在研究 Nova 各個操做以前,咱們先來學習一個重要的內容:OpenStack 日誌。OpenStack 的日誌記錄了很是詳細的細節信息,是咱們學習和Troubleshooting的利器。
日誌的位置
咱們實驗環境使用的是DevStack ,日誌統一放在 /opt/stack/logs 下面,每一個服務都有本身的日誌文件,從命名上很容易區分。
對於非 DevStack 安裝的OpenStack ,日誌通常放在 /var/log/xxx/ 目錄下
各個子服務的日誌文件也是單獨保存的,命名也很規範,容易區分。好比nova-api 的日誌,存放路徑 /var/log/nova/api.log
root@DevStack-Controller:~# ls /opt/stack/logs/ | grep -v 2019
c-api.log # cinder日誌
c-sch.log
c-vol.log
dstat-csv.log
dstat.log
g-api.log # glance-api 日誌
g-reg.log # glance-registry日誌
horizon.log
key-access.log
key.log # keystone日誌
n-api.log # nova-api日誌
n-cauth.log
n-cond.log
n-cpu.log # nova-compute日誌
n-dhcp.log
n-novnc.log
n-sch.log
placement-api.log
q-agt.log
q-dhcp.log # q- 是Neutron日誌
q-l3.log
q-meta.log
q-svc.log
screen
stack.sh.log
stack.sh.log.summary
日誌的格式
OpenStack 的日誌格式都是統一的,以下:
<時間戳><日誌等級><代碼模塊><Request ID><日誌內容><源代碼位置>
簡單說一下:
<時間戳> 日誌記錄的時間點,年月日時分秒
<日誌等級> INFO WARNING ERROR DEBUG 等
<代碼模塊> 當前運行的模塊1
<Request ID> 日誌會記錄連續不一樣的操做,爲了便於區分和增長可讀性,每一個操做都被分配惟一的 Request ID ,便於查找日誌內容
<日誌內容> 這是日誌的主體,記錄當前正在執行的操做和結果等重要信息
<源代碼位置> 日誌代碼的位置,包括方法名稱、源代碼文件的目錄位置和行號,這一項不是全部日誌都有
2019-05-23 16:35:16.430
DEBUG
nova.compute.manager
[req-808daefa-2cd8-4c34-bd34-2730453805da admin admin]
[instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Starting instance...
from (pid=4613) _do_build_and_run_instance /opt/stack/nova/nova/compute/manager.py:1766
2019-05-23 16:35:16.528
INFO
nova.compute.claims
[req-808daefa-2cd8-4c34-bd34-2730453805da admin admin]
[instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Attempting claim: memory 256 MB, disk 0 GB, vcpus 1 CPU
關於日誌的幾點說明
一、學習OpenStack 須要看日誌嗎?這個問題的答案取決於你是誰。若是你是OpenStack的最終用戶,那麼日誌對你不重要。你只須要愛GUI 上操做就能夠了,出過出了問題直接找管理員處理。但若是你是OpenStack的運維和管理人員,日誌對你就很是重要了。由於OpenStack操做若是出錯,GUI上給出的錯誤信息是很是籠統和簡要的,日誌則提供了大量的線索,特別是當debug選項打開以後。若是你正處於OpenStack的學習階段,正如咱們如今的狀態,那麼也強烈建議你多看日誌。日誌可以幫助你更加深刻理解 OpenStack 的運行機制
二、日誌可以幫助咱們深刻學習OpenStack 和排查問題。但要想高效的使用日誌還有個前提:必須先掌握OpenStack的運行機制,而後針對性的查看日誌。就拿Instance Launch 的操做來講,若是以前不瞭解 nova-* 各子服務在操做中的協做關係,若是沒有理解流程圖,面對如此多並且分散的日誌文件,咱們也很難下手。
三、對於OpenStack 的運維和管理員來講,在大部分狀況下,咱們不須要看源代碼。由於OpenStack的日誌記錄的很詳細了,足以幫助咱們分析和定位問題。但仍是有一些細節日誌沒有記錄,必要時能夠經過查看源代碼來來接得更清楚。即使如此,日誌也會爲咱們提供源代碼查看的線索,不須要咱們大海撈針。這一點咱們會在後面的操做分析中看到。