O029、教你看懂OpenStack日志


 
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
 
關於日志的幾點說明
 
    1、學習OpenStack 需要看日志嗎?這個問題的答案取決於你是誰。如果你是OpenStack的最終用戶,那么日志對你不重要。你只需要愛GUI 上操作就可以了,出過出了問題直接找管理員處理。但如果你是OpenStack的運維和管理人員,日志對你就非常重要了。因為OpenStack操作如果出錯,GUI上給出的錯誤信息是非常籠統和簡要的,日志則提供了大量的線索,特別是當debug選項打開之后。如果你正處於OpenStack的學習階段,正如我們現在的狀態,那么也強烈建議你多看日志。日志能夠幫助你更加深入理解 OpenStack 的運行機制
 
    2、日志能夠幫助我們深入學習OpenStack 和排查問題。但要想高效的使用日志還有個前提:必須先掌握OpenStack的運行機制,然后針對性的查看日志。就拿Instance Launch 的操作來說,如果之前不了解 nova-* 各子服務在操作中的協作關系,如果沒有理解流程圖,面對如此多而且分散的日志文件,我們也很難下手。
 
    3、對於OpenStack 的運維和管理員來說,在大部分情況下,我們不需要看源代碼。因為OpenStack的日志記錄的很詳細了,足以幫助我們分析和定位問題。但還是有一些細節日志沒有記錄,必要時可以通過查看源代碼來來接得更清楚。即便如此,日志也會為我們提供源代碼查看的線索,不需要我們大海撈針。這一點我們會在后面的操作分析中看到。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM