少帅的天空 2020-02-13
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 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
。请在你要打开的问题的描述中添加两者的内容。