蚊章汇 - Arkady Shtempler
type: channel
link: https://linuxcn.bwsl.wang/author/1360/
description: Arkady Shtempler
items: 用 Python 脚本发现 OpenStack Overcloud 中的问题

用 Python 脚本发现 OpenStack Overcloud 中的问题
type: item
date: 2020-02-13T05:15:14+08:00
description: 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。操作方式1、从 Overcloud 日志中导出错误和警告信息此模式用于从过去发生的 Overcloud 节点中提取 错误 和 警告 信息。作为用户，系统将提示你提供“开始时间”和“调试级别”，以用于提取错误或警告消息。例如，如果在过去 10 分钟内出了问题，你则可以只提取该时间段内的错误和警告消息。此操作模式将为每个 Overcloud 节点生成一个包含结果文件的目录。结果文件是经过压缩的简单文本文件（*.gz），以减少从 Overcloud 节点下载所需的时间。将压缩文件转换为常规文本文件，可以使用 zcat 或类似工具。此外，Vi 的某些版本和 Emacs 的任何最新版本均支持读取压缩数据。结果文件分为几部分，并在底部包含目录。LogTool 可以即时检测两种日志文件：标准和非标准。在标准文件中，每条日志行都有一个已知的和已定义的结构：时间戳、调试级别、信息等等。在非标准文件中，日志的结构未知。例如，它可能是第三方的日志。在目录中，你可以找到每个部分的“名称 –> 行号”例如：原始数据 - 从标准 OSP 日志中提取的错误/警告消息： 这部分包含所有提取的错误/警告消息，没有任何修改或更改。这些消息是 LogTool 用于模糊匹配分析的原始数据。统计信息 - 每个标准 OSP 日志的错误/警告信息数量： 在此部分，你将找到每个标准日志文件的错误和警告数量。这些信息可以帮助你了解用于排查问题根本原因的潜在组件。统计信息 - 每个标准 OSP 日志文件的唯一消息： 这部分提供指定时间戳内的唯一的错误和警告消息。有关每个唯一错误或警告的更多详细信息，请在“原始数据”部分中查找相同的消息。统计信息 - 每个非标准日志文件在任意时间的唯一消息： 此部分包含非标准日志文件中的唯一消息。遗憾的是，LogTool 无法像标准日志文件那样的处理方式处理这些日志文件。因此，在你提取“特定时间”的日志信息时会被忽略，你会看到过去创建的所有唯一的错误/警告消息。因此，首先，向下滚动到结果文件底部的目录并查看其部分-使用目录中的行索引跳到相关部分，其中第 3、4 和 5 行的信息最重要。2、从 Overcloud 节点下载所有日志所有 Overcloud 节点的日志将被压缩并下载到 Undercloud 主机上的本地目录。3、所有 Overcloud 日志中搜索字符串该模式“grep”（搜索）由用户在所有 Overcloud 日志上提供的字符串。例如，你可能希望查看特定请求的所有日志消息，例如，“Create VM”的失败的请求 ID。4、检查 Overcloud 上当前的 CPU、RAM 和磁盘使用情况该模式显示每个 Overcloud 节点上的当前 CPU、RAM 和磁盘信息。5、执行用户脚本该模式使用户可以在 Overcloud 节点上运行自己的脚本。例如，假设 Overcloud 部署失败，你就需要在每个控制器节点上执行相同的过程来修复该问题。你可以实现“替代方法”脚本，并使用此模式在控制器上运行它。6、仅按给定的时间戳下载相关日志此模式仅下载 Overcloud 上 “给定的时间戳”的“上次修改时间”的日志。例如，如果 10 分钟前出现错误，则与旧日志文件就没有关系，因此无需下载。此外，你不能（或不应）在某些错误报告工具中附加大文件，因此此模式可能有助于编写错误报告。7、从 Undercloud 日志中导出错误和警告信息这与上面的模式 1 相同。8、在 Overcloud 上检查不正常的 docker此模式用于在节点上搜索不正常的 Docker。9、下…