LogTool 是一組 Python 指令碼,可幫助你找出 Overcloud 節點中問題的根本原因。
OpenStack 在其 Overcloud 節點和 Undercloud 主機上儲存和管理了一堆紀錄檔檔案。因此,使用 OSP 紀錄檔檔案來排查遇到的問題並不是一件容易的事,尤其在你甚至都不知道是什麼原因導致問題時。
如果你正處於這種情況,那麼 LogTool 可以使你的生活變得更加輕鬆!它會為你節省本需要人工排查問題所需的時間和精力。LogTool 基於模糊字串匹配演算法,可提供過去發生的所有唯一錯誤和警告資訊。你可以根據紀錄檔中的時間戳匯出特定時間段(例如 10 分鐘前、一個小時前、一天前等)的這些資訊。
LogTool 是一組 Python 指令碼,其主要模組 PyTool.py
在 Undercloud 主機上執行。某些操作模式使用直接在 Overcloud 節點上執行的其他指令碼,例如從 Overcloud 紀錄檔中匯出錯誤和警告資訊。
LogTool 支援 Python 2 和 Python 3,你可以根據需要更改工作目錄:LogTool_Python2 or LogTool_Python3。
此模式用於從過去發生的 Overcloud 節點中提取 錯誤 和 警告 資訊。作為使用者,系統將提示你提供“開始時間”和“偵錯級別”,以用於提取錯誤或警告訊息。例如,如果在過去 10 分鐘內出了問題,你則可以只提取該時間段內的錯誤和警告訊息。
此操作模式將為每個 Overcloud 節點生成一個包含結果檔案的目錄。結果檔案是經過壓縮的簡單文字檔案(*.gz
),以減少從 Overcloud 節點下載所需的時間。將壓縮檔案轉換為常規文字檔案,可以使用 zcat
或類似工具。此外,Vi 的某些版本和 Emacs 的任何最新版本均支援讀取壓縮資料。結果檔案分為幾部分,並在底部包含目錄。
LogTool 可以即時檢測兩種紀錄檔檔案:標準和非標準。在標準檔案中,每條紀錄檔行都有一個已知的和已定義的結構:時間戳、偵錯級別、資訊等等。在非標準檔案中,紀錄檔的結構未知。例如,它可能是第三方的紀錄檔。在目錄中,你可以找到每個部分的“名稱 –> 行號”例如:
所有 Overcloud 節點的紀錄檔將被壓縮並下載到 Undercloud 主機上的本地目錄。
該模式“grep”(搜尋)由使用者在所有 Overcloud 紀錄檔上提供的字串。例如,你可能希望檢視特定請求的所有紀錄檔訊息,例如,“Create VM”的失敗的請求 ID。
該模式顯示每個 Overcloud 節點上的當前 CPU、RAM 和磁碟資訊。
該模式使使用者可以在 Overcloud 節點上執行自己的指令碼。例如,假設 Overcloud 部署失敗,你就需要在每個控制器節點上執行相同的過程來修復該問題。你可以實現“替代方法”指令碼,並使用此模式在控制器上執行它。
此模式僅下載 Overcloud 上 “給定的時間戳”的“上次修改時間”的紀錄檔。例如,如果 10 分鐘前出現錯誤,則與舊紀錄檔檔案就沒有關係,因此無需下載。此外,你不能(或不應)在某些錯誤報告工具中附加大檔案,因此此模式可能有助於編寫錯誤報告。
這與上面的模式 1 相同。
此模式用於在節點上搜尋不正常的 Docker。
此模式允許你從 Jenkins 或 Log Storage 下載 OSP 紀錄檔(例如,cougar11.scl.lab.tlv.redhat.com
),並在本地分析。
此模式可以幫助你了解 Overcloud 或 Undercloud 部署過程中出了什麼問題。例如,在overcloud_deploy.sh
指令碼中,使用 --log
選項時會生成部署紀錄檔;此類紀錄檔的問題是“不友好”,你很難理解是什麼出了問題,尤其是當詳細程度設定為 vv
或更高時,使得紀錄檔中的資料難以讀取。此模式提供有關所有失敗任務的詳細資訊。
此模式用於分析 Gerrit(Zuul)紀錄檔檔案。它會自動從遠端 Gerrit 門下載所有檔案(HTTP 下載)並在本地進行分析。
GitHub 上有 LogTool,使用以下命令將其克隆到你的 Undercloud 主機:
git clone https://github.com/zahlabut/LogTool.git
該工具還使用了一些外部 Python 模組:
預設情況下,SSH 模組通常會安裝在 Undercloud 上。使用以下命令來驗證是否已安裝:
ls -a /usr/lib/python2.7/site-packages | grep paramiko
如果需要安裝模組,請在 Undercloud 上執行以下命令:
sudo easy_install pipsudo pip install paramiko==2.1.1
此 HTML 解析器模組僅在使用 HTTP 下載紀錄檔檔案的模式下使用。它用於解析 Artifacts HTML 頁面以獲取其中的所有連結。安裝 BeautifulSoup,請輸入以下命令:
pip install beautifulsoup4
你還可以通過執行以下命令使用 requirements.txt 檔案安裝所有必需的模組:
pip install -r requirements.txt
所有必需的引數都直接在 PyTool.py
指令碼中設定。預設值為:
overcloud_logs_dir = '/var/log/containers'overcloud_ssh_user = 'heat-admin'overcloud_ssh_key = '/home/stack/.ssh/id_rsa'undercloud_logs_dir ='/var/log/containers'source_rc_file_path='/home/stack/'
此工具是互動式的,因此要啟動它,只需輸入:
cd LogToolpython PyTool.py
在執行時會建立兩個紀錄檔檔案:Error.log
和 Runtime.log
。請在你要開啟的問題的描述中新增兩者的內容。
LogTool 進行寫死以處理最大 500 MB 的檔案。
在 github.com/zahlabut/LogTool 獲取。