OpenStack在其Overcloud节点和Undercloud主机上存储和管理一堆日志文件。 因此,使用OSP日志文件来调查您遇到的问题并不容易,尤其是当您甚至不知道是什么引起问题时。
如果是这种情况, LogTool可使您的生活变得更加轻松! 这样可以节省您的时间和精力,而这将需要手工进行根本原因调查。 LogTool基于模糊字符串匹配算法,可提供过去发生的所有唯一错误和警告消息。 您可以根据日志中的时间戳,在特定时间段(例如10分钟前,一个小时前,一天前等等)导出这些消息。
PyTool.py ,在Undercloud主机上执行。 某些操作模式使用直接在Overcloud节点上执行的其他脚本,例如从Overcloud日志中导出错误和警告。LogTool支持Python 2和3,您可以根据需要更改工作目录: LogTool_Python2或LogTool_Python3 。
操作方式
1.从Overcloud日志中导出错误和警告
此模式用于从过去发生的Overcloud节点中提取所有唯一的ERROR和WARNING消息。 作为用户,系统将提示您提供“自从开始”和调试级别,以用于提取错误或警告。 例如,如果在最近10分钟内出了点问题,您就可以在该时间段内提取错误和警告消息。
该操作模式将为每个Overcloud节点生成一个包含结果文件的目录。 结果文件是经过压缩的简单文本文件( * .gz ),以减少从Overcloud节点下载文件所需的时间。 要将压缩文件转换为常规文本文件,可以使用zcat或类似工具。 此外,Vi的某些版本和Emacs的任何最新版本均支持读取压缩数据。 结果文件分为几部分,并在底部包含目录。
LogTool可以即时检测两种日志文件: Standard和Not Standard 。 在Standard中 ,每条日志行都有一个已知的已定义结构:时间戳,调试级别,msg等。 在“ 非标准”中 ,日志的结构未知。 例如,它可能是第三方的日志。 在目录中,您可以找到每个部分的“部分名称->行号”,例如:
- 原始数据-从标准OSP日志中提取的错误/警告,因为:本节按原样包含所有提取的错误/警告消息,无需进行任何修改或更改。 这些消息是LogTool用于模糊匹配分析的原始数据。
- 统计信息-每个标准OSP日志的错误/警告数量,因为:在此部分,您将找到每个标准日志文件的错误和警告数量。 这可以帮助您了解用于搜索问题根本原因的潜在组件。
- 统计信息-每个STANDARD OSP日志文件的唯一消息,因为:本节介绍自您提供的时间戳以来唯一的错误和警告消息。 有关每个唯一错误或警告的更多详细信息,请在“原始数据”部分中搜索相同的消息。
- 统计信息-任意时间,每个NON STANDARD日志文件的唯一消息:此部分包含非标准日志文件中的唯一消息。 不幸的是,LogTool无法以与标准日志文件相同的方式处理这些日志文件。 因此,您在提取时提供的“自从时间”将被忽略,并且您将看到曾经创建的所有唯一的错误/警告消息。 因此,首先,向下滚动到结果文件底部的目录并查看其各部分-使用目录中的行索引跳到相关部分,其中数字3、4和5最重要。
2.从Overcloud节点下载所有日志
来自所有Overcloud节点的日志将被压缩并下载到Undercloud主机上的本地目录。
3.在所有Overcloud日志中使用Grep表示字符串
此模式“捕获”(搜索)用户在所有Overcloud日志上提供的字符串。 例如,您可能希望查看所有记录的特定请求ID的消息,例如失败的“创建VM”的请求ID。
4.检查Overcloud上的当前CPU,RAM和磁盘
此模式显示每个Overcloud节点上的当前CPU,RAM和磁盘信息。
5.执行用户脚本
这使用户可以在Overcloud节点上运行自己的脚本。 例如,假设Overcloud部署失败,因此您需要在每个Controller节点上执行相同的过程来修复该问题。 您可以实现“替代方法”脚本,并使用此模式在Controller上运行它。
6.仅按给定的时间戳下载相关日志
此模式仅下载“上次修改时间”>“按用户时间戳记给出”的Overcloud日志。 例如,如果10分钟前出现错误,则旧的日志文件将不相关,因此无需下载它们。 此外,您不能(或不应该)在某些错误报告工具中附加大文件,因此此模式可能有助于编写错误报告。
7.从Undercloud日志中导出错误和警告
这与上面的模式#1相同,但是对于Undercloud日志。
8.在Overcloud上检查不健康的docker
该模式用于在节点上搜索不健康的Docker。
9.下载OSP日志并在本地运行LogTool
此模式允许您从Jenkins或Log Storage下载OSP日志(例如cougar11.scl.lab.tlv.redhat.com ),并在本地分析下载的日志。
10.在Undercloud上分析部署日志
此模式可以帮助您了解在Overcloud或Undercloud部署过程中出了什么问题。 当使用--log选项时,例如在overcloud_deploy.sh脚本中,会生成部署日志。 问题在于此类日志不是“友好的”,并且很难理解出了什么问题,尤其是当详细程度设置为vv或更高时,因为这样会使日志中无法读取大量数据。 此模式提供有关所有失败任务的一些详细信息。
11.分析Gerrit(Zuul)失败的门日志
此模式用于分析Gerrit(Zuul)日志文件。 它会自动从远程Gerrit门下载所有文件(HTTP下载)并在本地分析所有文件。
安装
LogTool在GitHub上可用。 使用以下命令将其克隆到您的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
排除LogTool故障
在运行时创建两个日志文件:Error.log和Runtime.log 。 请在您要打开的问题的说明中添加两者的内容。
局限性
LogTool进行了硬编码以处理最大500 MB的文件。
LogTool_Python3脚本
在github.com/zahlabut/LogTool上获取它
翻译自: https://opensource.com/article/20/1/logtool-root-cause-identification