openEuler env_check工具开发指南:如何编写自定义检查actor

发布时间:2026/7/1 20:13:51

openEuler env_check工具开发指南:如何编写自定义检查actor openEuler env_check工具开发指南如何编写自定义检查actor【免费下载链接】env_checkA tool for health checking after operating system upgrade项目地址: https://gitcode.com/openeuler/env_check前往项目官网免费下载https://ar.openeuler.org/ar/openEuler env_check是一个专为操作系统升级后健康检查设计的强大工具它通过actor机制提供灵活、可扩展的系统检查能力。本文将为您详细介绍如何编写自定义检查actor帮助您快速掌握env_check工具的开发技巧为openEuler系统升级后的健康检查提供定制化解决方案。 理解env_check的actor架构env_check工具采用模块化的actor架构设计每个检查任务都由一个独立的actor负责执行。这种设计使得系统检查功能高度可扩展开发者可以根据实际需求轻松添加新的检查项目。核心架构特点每个actor对应一个具体的系统检查任务支持多种检查类型系统升级检查、配置迁移检查、系统信息收集评估统一的返回消息格式便于结果处理和展示️ actor基础类详解所有自定义检查actor都需要继承自BaseCheckActor基类该基类定义在sut/env_check/check_actor/base_check_actor.py文件中class BaseCheckActor(object): SUCCESS True FAIL False task_type TaskType name description level priority staticmethod def run(node): result ReturnMessage(resultTrue, solution, message{}, failed_reason) return result关键属性说明name: actor的唯一标识名称description: actor的功能描述level: 检查级别High/Medium/Lowpriority: 检查优先级mandatory/optional/unnecessarytask_type: 检查任务类型 编写您的第一个自定义actor让我们通过一个简单的示例来了解如何创建自定义检查actor。参考sut/env_check/check_actor/example_actor.py# -*- coding: utf-8 -*- actor示例 from sut.env_check.check_actor.base_check_actor import BaseCheckActor, ReturnMessage class ExampleActor(BaseCheckActor): name ExampleActor description this is test level High priority mandatory task_type (BaseCheckActor.task_type.SYSTEM_UPGRADE,) staticmethod def run(node): solution message {node_name: xxxxx} return ReturnMessage(BaseCheckActor.SUCCESS, solution, message, )编写步骤导入必要的基类和工具类创建继承自BaseCheckActor的类设置必要的类属性实现run方法包含具体的检查逻辑 实现具体的检查逻辑在实际开发中您可能需要实现更复杂的检查逻辑。env_check提供了两种主要实现方式方式一直接执行Shell脚本对于需要执行Shell命令的检查可以参考OeBaseActor的实现方式位于sut/env_check/check_actor/oe_base_actor.pyclass OeBaseActor(BaseCheckActor): name OeBaseActor description this is openEuler base test actor. level low priority unnecessary task_type (BaseCheckActor.task_type.SYSTEM_UPGRADE,) sh_dir os.path.join(os.path.abspath(os.path.dirname( os.path.dirname(os.path.abspath(__file__)))), smoke_test/local_sh) sh_file classmethod def run(cls, node): # 执行具体的Shell脚本检查 sh_file_path os.path.join(cls.sh_dir, cls.sh_file) # ... 执行逻辑示例检查系统基本命令的actor查看sut/env_check/check_actor/basic_commands_actor.py中的实现class OeBcActor(OeBaseActor): name OeBcActor description Test the bc command of the openEuler system. sh_file 06_basic_commands/oe_test01_bc.sh class OeCalActor(OeBaseActor): name OeCalActor description Test the cal command of the openEuler system. sh_file 06_basic_commands/oe_test02_cal.sh方式二纯Python检查逻辑对于不需要执行Shell脚本的检查可以直接在run方法中实现Python逻辑class CustomCheckActor(BaseCheckActor): name CustomCheckActor description 检查系统服务状态 level Medium priority mandatory task_type (BaseCheckActor.task_type.SYSTEM_UPGRADE,) staticmethod def run(node): try: # 实现具体的检查逻辑 # 例如检查特定服务是否运行 import subprocess result subprocess.run([systemctl, is-active, sshd], capture_outputTrue, textTrue) if result.returncode 0: message {service_status: active} return ReturnMessage(BaseCheckActor.SUCCESS, , message, ) else: solution 请启动sshd服务sudo systemctl start sshd return ReturnMessage(BaseCheckActor.FAIL, solution, {}, sshd服务未运行) except Exception as e: solution 检查系统服务状态时出现异常 return ReturnMessage(BaseCheckActor.FAIL, solution, {}, str(e)) 检查结果返回规范每个检查actor必须返回标准的ReturnMessage对象包含以下字段字段类型说明resultbool检查结果True/Falsesolutionstr问题解决方案描述messagedict检查详细信息failed_reasonstr失败原因描述成功示例return ReturnMessage( resultTrue, solution, message{disk_usage: 45%, status: normal}, failed_reason )失败示例return ReturnMessage( resultFalse, solution请清理磁盘空间删除不必要的文件, message{disk_usage: 95%, threshold: 80%}, failed_reason磁盘使用率超过阈值 ) 实战创建一个磁盘空间检查actor让我们创建一个实际的磁盘空间检查actor# -*- coding: utf-8 -*- 磁盘空间检查actor 检查系统根分区使用率是否超过阈值 import shutil from sut.env_check.check_actor.base_check_actor import BaseCheckActor, ReturnMessage class DiskSpaceCheckActor(BaseCheckActor): name DiskSpaceCheckActor description 检查系统根分区磁盘空间使用率 level High priority mandatory task_type (BaseCheckActor.task_type.SYSTEM_UPGRADE,) # 磁盘使用率阈值百分比 DISK_USAGE_THRESHOLD 80 staticmethod def run(node): try: # 获取磁盘使用信息 disk_usage shutil.disk_usage(/) total_gb disk_usage.total / (1024**3) used_gb disk_usage.used / (1024**3) free_gb disk_usage.free / (1024**3) usage_percent (used_gb / total_gb) * 100 # 构建返回信息 message { total_gb: round(total_gb, 2), used_gb: round(used_gb, 2), free_gb: round(free_gb, 2), usage_percent: round(usage_percent, 2) } # 检查是否超过阈值 if usage_percent DiskSpaceCheckActor.DISK_USAGE_THRESHOLD: solution ( f磁盘使用率({usage_percent:.1f}%)超过阈值({DiskSpaceCheckActor.DISK_USAGE_THRESHOLD}%)。 f建议\n f1. 清理临时文件sudo rm -rf /tmp/*\n f2. 清理日志文件sudo journalctl --vacuum-time7d\n f3. 删除不必要的软件包 ) return ReturnMessage( BaseCheckActor.FAIL, solution, message, f磁盘使用率超过{DiskSpaceCheckActor.DISK_USAGE_THRESHOLD}%阈值 ) else: return ReturnMessage( BaseCheckActor.SUCCESS, , message, ) except Exception as e: solution 检查磁盘空间时出现异常请手动检查磁盘使用情况 return ReturnMessage( BaseCheckActor.FAIL, solution, {}, f磁盘检查异常{str(e)} ) 测试您的自定义actor开发完成后您可以通过以下步骤测试自定义actor单元测试编写针对actor的单元测试用例集成测试将actor集成到env_check工具中进行测试功能验证确保检查逻辑正确返回格式符合规范测试要点验证actor在正常情况下的行为验证actor在异常情况下的错误处理确保返回消息格式正确检查日志输出是否清晰 最佳实践与开发建议1.保持actor职责单一每个actor应该只负责一个特定的检查任务避免功能过于复杂。2.提供清晰的错误信息当检查失败时提供具体的解决方案和建议帮助用户快速解决问题。3.合理设置检查级别和优先级根据检查的重要性和影响范围合理设置level和priority属性。4.充分利用现有基础设施env_check提供了丰富的工具类和辅助函数如OeBaseActor可以方便地执行Shell脚本检查。5.添加适当的日志记录在关键检查点添加日志记录便于问题排查和调试。6.考虑性能影响避免在检查中执行耗时过长的操作确保检查过程高效。 总结通过本文的学习您已经掌握了openEuler env_check工具中自定义检查actor的开发方法。env_check的actor架构设计简洁而强大使得系统健康检查变得灵活且可扩展。无论是简单的命令检查还是复杂的系统状态验证都可以通过创建自定义actor来实现。关键要点回顾所有actor必须继承自BaseCheckActor基类必须实现run方法并返回标准的ReturnMessage对象可以通过执行Shell脚本或纯Python逻辑实现检查功能合理设置actor的元数据属性name、description、level、priority提供清晰的错误信息和解决方案现在您可以开始为openEuler系统创建自己的自定义检查actor为系统升级后的健康检查贡献您的力量 下一步建议参考现有actor实现了解不同场景下的最佳实践查看sut/env_check/check_actor/目录中的各种actor示例在实际环境中测试您的自定义actor考虑将常用的检查功能抽象为可复用的工具类通过掌握env_check工具的actor开发技能您将能够为openEuler系统的稳定性和可靠性做出重要贡献 【免费下载链接】env_checkA tool for health checking after operating system upgrade项目地址: https://gitcode.com/openeuler/env_check创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻