LogTool 是一組 Python 腳本,可幫助你找出 Overcloud 節點中問題的根本緣由。python
OpenStack 在其 Overcloud 節點和 Undercloud 主機上存儲和管理了一堆日誌文件。所以,使用 OSP 日誌文件來排查遇到的問題並非一件容易的事,尤爲在你甚至都不知道是什麼緣由致使問題時。linux
若是你正處於這種狀況,那麼 LogTool 可使你的生活變得更加輕鬆!它會爲你節省本須要人工排查問題所需的時間和精力。LogTool 基於模糊字符串匹配算法,可提供過去發生的全部惟一錯誤和警告信息。你能夠根據日誌中的時間戳導出特定時間段(例如 10 分鐘前、一個小時前、一天前等)的這些信息。git
LogTool 是一組 Python 腳本,其主要模塊 PyTool.py
在 Undercloud 主機上執行。某些操做模式使用直接在 Overcloud 節點上執行的其餘腳本,例如從 Overcloud 日誌中導出錯誤和警告信息。github
LogTool 支持 Python 2 和 Python 3,你能夠根據須要更改工做目錄:LogTool_Python2 or LogTool_Python3。算法
此模式用於從過去發生的 Overcloud 節點中提取 錯誤 和 警告 信息。做爲用戶,系統將提示你提供「開始時間」和「調試級別」,以用於提取錯誤或警告消息。例如,若是在過去 10 分鐘內出了問題,你則能夠只提取該時間段內的錯誤和警告消息。docker
此操做模式將爲每一個 Overcloud 節點生成一個包含結果文件的目錄。結果文件是通過壓縮的簡單文本文件(*.gz
),以減小從 Overcloud 節點下載所需的時間。將壓縮文件轉換爲常規文本文件,可使用 zcat
或相似工具。此外,Vi 的某些版本和 Emacs 的任何最新版本均支持讀取壓縮數據。結果文件分爲幾部分,並在底部包含目錄。bash
LogTool 能夠即時檢測兩種日誌文件:標準和非標準。在標準文件中,每條日誌行都有一個已知的和已定義的結構:時間戳、調試級別、信息等等。在非標準文件中,日誌的結構未知。例如,它多是第三方的日誌。在目錄中,你能夠找到每一個部分的「名稱 --> 行號」例如:python2.7
全部 Overcloud 節點的日誌將被壓縮並下載到 Undercloud 主機上的本地目錄。ssh
該模式「grep」(搜索)由用戶在全部 Overcloud 日誌上提供的字符串。例如,你可能但願查看特定請求的全部日誌消息,例如,「Create VM」的失敗的請求 ID。ide
該模式顯示每一個 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 pip
sudo 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 LogTool
python PyTool.py
複製代碼
在運行時會建立兩個日誌文件:Error.log
和 Runtime.log
。請在你要打開的問題的描述中添加二者的內容。
LogTool 進行硬編碼以處理最大 500 MB 的文件。
在 github.com/zahlabut/Lo… 獲取。
via: opensource.com/article/20/…
做者:Arkady Shtempler 選題:lujun9972 譯者:Morisun029 校對:wxy