用 Python 腳本發現 OpenStack Overcloud 中的問題

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 日誌中導出錯誤和警告信息

此模式用於從過去發生的 Overcloud 節點中提取 錯誤警告 信息。做爲用戶,系統將提示你提供「開始時間」和「調試級別」,以用於提取錯誤或警告消息。例如,若是在過去 10 分鐘內出了問題,你則能夠只提取該時間段內的錯誤和警告消息。docker

此操做模式將爲每一個 Overcloud 節點生成一個包含結果文件的目錄。結果文件是通過壓縮的簡單文本文件(*.gz),以減小從 Overcloud 節點下載所需的時間。將壓縮文件轉換爲常規文本文件,可使用 zcat 或相似工具。此外,Vi 的某些版本和 Emacs 的任何最新版本均支持讀取壓縮數據。結果文件分爲幾部分,並在底部包含目錄。bash

LogTool 能夠即時檢測兩種日誌文件:標準和非標準。在標準文件中,每條日誌行都有一個已知的和已定義的結構:時間戳、調試級別、信息等等。在非標準文件中,日誌的結構未知。例如,它多是第三方的日誌。在目錄中,你能夠找到每一個部分的「名稱 --> 行號」例如:python2.7

  • 原始數據 - 從標準 OSP 日誌中提取的錯誤/警告消息: 這部分包含全部提取的錯誤/警告消息,沒有任何修改或更改。這些消息是 LogTool 用於模糊匹配分析的原始數據。
  • 統計信息 - 每一個標準 OSP 日誌的錯誤/警告信息數量: 在此部分,你將找到每一個標準日誌文件的錯誤和警告數量。這些信息能夠幫助你瞭解用於排查問題根本緣由的潛在組件。
  • 統計信息 - 每一個標準 OSP 日誌文件的惟一消息: 這部分提供指定時間戳內的惟一的錯誤和警告消息。有關每一個惟一錯誤或警告的更多詳細信息,請在「原始數據」部分中查找相同的消息。
  • 統計信息 - 每一個非標準日誌文件在任意時間的惟一消息: 此部分包含非標準日誌文件中的惟一消息。遺憾的是,LogTool 沒法像標準日誌文件那樣的處理方式處理這些日誌文件。所以,在你提取「特定時間」的日誌信息時會被忽略,你會看到過去建立的全部惟一的錯誤/警告消息。所以,首先,向下滾動到結果文件底部的目錄並查看其部分-使用目錄中的行索引跳到相關部分,其中第 三、4 和 5 行的信息最重要。

二、從 Overcloud 節點下載全部日誌

全部 Overcloud 節點的日誌將被壓縮並下載到 Undercloud 主機上的本地目錄。ssh

三、全部 Overcloud 日誌中搜索字符串

該模式「grep」(搜索)由用戶在全部 Overcloud 日誌上提供的字符串。例如,你可能但願查看特定請求的全部日誌消息,例如,「Create VM」的失敗的請求 ID。ide

四、檢查 Overcloud 上當前的 CPU、RAM 和磁盤使用狀況

該模式顯示每一個 Overcloud 節點上的當前 CPU、RAM 和磁盤信息。

五、執行用戶腳本

該模式使用戶能夠在 Overcloud 節點上運行本身的腳本。例如,假設 Overcloud 部署失敗,你就須要在每一個控制器節點上執行相同的過程來修復該問題。你能夠實現「替代方法」腳本,並使用此模式在控制器上運行它。

六、僅按給定的時間戳下載相關日誌

此模式僅下載 Overcloud 上 「給定的時間戳」的「上次修改時間」的日誌。例如,若是 10 分鐘前出現錯誤,則與舊日誌文件就沒有關係,所以無需下載。此外,你不能(或不該)在某些錯誤報告工具中附加大文件,所以此模式可能有助於編寫錯誤報告。

七、從 Undercloud 日誌中導出錯誤和警告信息

這與上面的模式 1 相同。

八、在 Overcloud 上檢查不正常的 docker

此模式用於在節點上搜索不正常的 Docker。

九、下載 OSP 日誌並在本地運行 LogTool

此模式容許你從 Jenkins 或 Log Storage 下載 OSP 日誌(例如,cougar11.scl.lab.tlv.redhat.com),並在本地分析。

十、在 Undercloud 上分析部署日誌

此模式能夠幫助你瞭解 Overcloud 或 Undercloud 部署過程當中出了什麼問題。例如,在overcloud_deploy.sh 腳本中,使用 --log 選項時會生成部署日誌;此類日誌的問題是「不友好」,你很難理解是什麼出了問題,尤爲是當詳細程度設置爲 vv 或更高時,使得日誌中的數據難以讀取。此模式提供有關全部失敗任務的詳細信息。

十一、分析 Gerrit(Zuul)失敗的日誌

此模式用於分析 Gerrit(Zuul)日誌文件。它會自動從遠程 Gerrit 門下載全部文件(HTTP 下載)並在本地進行分析。

安裝

GitHub 上有 LogTool,使用如下命令將其克隆到你的 Undercloud 主機:

git clone https://github.com/zahlabut/LogTool.git
複製代碼

該工具還使用了一些外部 Python 模塊:

Paramiko

默認狀況下,SSH 模塊一般會安裝在 Undercloud 上。使用如下命令來驗證是否已安裝:

ls -a /usr/lib/python2.7/site-packages | grep paramiko
複製代碼

若是須要安裝模塊,請在 Undercloud 上執行如下命令:

sudo easy_install pip
sudo pip install paramiko==2.1.1
複製代碼

BeautifulSoup

此 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
複製代碼

排除 LogTool 故障

在運行時會建立兩個日誌文件:Error.logRuntime.log。請在你要打開的問題的描述中添加二者的內容。

侷限性

LogTool 進行硬編碼以處理最大 500 MB 的文件。

LogTool_Python3 腳本

github.com/zahlabut/Lo… 獲取。


via: opensource.com/article/20/…

做者:Arkady Shtempler 選題:lujun9972 譯者:Morisun029 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索