当前位置: 首页 > 科技观察

使用Python脚本发现OpenStackOvercloud中的问题

时间:2023-03-16 16:16:23 科技观察

LogTool是一组Python脚本,可帮助您找到Overcloud节点中问题的根本原因。OpenStack在其Overcloud节点和Undercloud主机上存储和管理一堆日志文件。因此,使用OSP日志文件来解决您遇到的问题并不是一件容易的事,尤其是当您甚至不知道问题的原因时。如果您是这种情况,那么LogTool可以让您的生活变得更加轻松!它将为您节省手动解决问题所需的时间和精力。LogTool基于模糊字符串匹配算法,提供过去发生的所有唯一错误和警告消息。您可以根据日志中的时间戳导出特定时间段(例如10分钟前、一小时前、一天前等)的此信息。LogTool是一组Python脚本,其主要模块PyTool.py在Undercloud主机上执行。一些操作模式使用直接在Overcloud节点上执行的其他脚本,例如从Overcloud日志中导出错误和警告消息。LogTool支持Python2和Python3,您可以根据需要更改工作目录:LogTool_Python2或LogTool_Python3。操作模式1.从Overcloud日志中导出错误和警告信息这种模式用于从过去发生的Overcloud节点中提取错误和警告信息。作为用户,系统会提示您提供“开始时间”和“调试级别”以提取错误或警告消息。例如,如果过去10分钟出现问题,您可以只提取该时间段的错误和警告消息。这种操作模式将生成一个目录,其中包含每个Overcloud节点的结果文件。生成的文件是经过压缩的简单文本文件(*.gz),以减少从Overcloud节点下载所需的时间。要将压缩文件转换为常规文本文件,您可以使用zcat或类似工具。此外,某些版本的Vi和任何最新版本的Emacs都支持读取压缩数据。生成的文件被分成几个部分,并在底部包含一个目录。LogTool可以即时检测两种日志文件:标准和非标准。在标准文件中,每个日志行都有一个已知和定义的结构:时间戳、调试级别、信息等。在非标准文件中,日志的结构是未知的。例如,它可能是第三方的日志。在目录中,您可以找到每个部分的“名称–>行号”示例:原始数据-从标准OSP日志中提取的错误/警告消息:此部分包含所有提取的错误/警告消息,没有任何修改或更改。这些消息是LogTool用于模糊匹配分析的原始数据。Statistics-Numberoferrors/warningsperstandardOSPlog:在本节中,您将找到每个标准日志文件的错误和警告数。此信息可以帮助您了解用于解决问题根本原因的潜在组件。Statistics-UniqueMessagesperStandardOSPLogFile:此部分提供特定时间戳特有的错误和警告消息。有关每个独特错误或警告的更多详细信息,请在“原始数据”部分查找相同的消息。Statistics-Uniquemessagesatanytimepernon-standardlogfile:此部分包含来自非标准日志文件的独特消息。遗憾的是,LogTool无法像处理标准日志文件那样处理这些日志文件。因此,当您在“特定时间”提取日志消息时,它会被忽略,您会看到过去创建的所有独特错误/警告消息。因此,首先,向下滚动到结果文件底部的目录并查看其部分-使用目录中的行索引跳转到相关部分,其中包含第3、4和5行的信息是最重要的。2.从Overcloud节点下载所有日志来自所有Overcloud节点的日志将被压缩并下载到Undercloud主机上的本地目录。3.在所有Overcloud日志中搜索字符串这种模式“greps”(搜索)用户在所有Overcloud日志中提供的字符串。例如,您可能希望查看特定请求的所有日志消息,例如“CreateVM”的失败请求ID。4.检查Overcloud上当前的CPU、RAM和磁盘使用情况此模式显示每个Overcloud节点上当前的CPU、RAM和磁盘信息。5.执行用户脚本这种模式允许用户在Overcloud节点上运行他们自己的脚本。例如,如果Overcloud部署失败,您需要在每个控制器节点上执行相同的过程来修复问题。您可以实施“解决方法”脚本并使用此模式在控制器上运行它。6.Onlydownloadrelevantlogsbygiventimestamp此模式仅下载Overcloud上具有“给定时间戳”的“最后修改时间”的日志。比如10分钟前发生了错误,旧的日志文件就没有关系了,就不用下载了。此外,您不能(或不应该)在某些错误报告工具中附加大文件,因此此模式可能有助于编写错误报告。7.从Undercloud日志中导出错误和警告信息这个和上面的方式一是一样的。8.CheckforunhealthydockersonOvercloud此模式用于搜索节点上不健康的Dockers。9.下载OSP日志并在本地运行LogTool这种模式允许您从Jenkins或LogStorage(例如cougar11.scl.lab.tlv.redhat.com)下载OSP日志并在本地进行分析。10.分析Undercloud上的部署日志这种模式可以帮助您了解在Overcloud或Undercloud部署过程中出了什么问题。例如,在overcloud_deploy.sh脚本中,使用--log选项时会生成部署日志;此类日志的问题在于它们“不友好”,您很难理解哪里出了问题,尤其是当verbosity设置为vv或更高时,会使日志中的数据难以阅读。此模式提供有关所有失败任务的详细信息。11.AnalyzeGerrit(Zuul)failedlogs此模式用于分析Gerrit(Zuul)日志文件。它会自动从远程Gerritgates(HTTP下载)下载所有文件并在本地进行分析。在GitHub上安装LogTool,使用以下命令将其克隆到您的Undercloud主机:gitclonehttps://github.com/zahlabut/LogTool.git该工具还使用了一些外部Python模块:Paramiko默认情况下,SSH模块通常安装在暗云。使用以下命令验证它是否已安装:ls-a/usr/lib/python2.7/site-packages|grepparamiko如果需要安装模块,在Undercloud上执行如下命令:sudoeasy_installpipsudopipinstallparamiko==2.1。1BeautifulSoup此HTML解析器模块仅用于使用HTTP下载日志文件的模式。它用于解析ArtifactsHTML页面中的所有链接。要安装BeautifulSoup,请输入以下命令:pipinstallbeautifulsoup4您还可以通过执行以下命令使用requirements.txt文件安装所有必需的模块:pipinstall-rrequirements.txtconfiguration所有必需的参数都直接在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/'用法此工具是交互式的,因此要启动它,只需键入:cdLogToolpythonPyTool.py故障排除LogTool在运行时创建两个日志文件:Error.log和Runtime.log。请将两者都添加到您打开的问题的描述中。限制LogTool被硬编码以处理最大500MB的文件。LogTool_Python3脚本位于github.com/zahlabut/LogTool。