env_check测试报告可视化:如何生成易读的健康检查报告
【免费下载链接】env_checkA tool for "health checking" after operating system upgrade项目地址: https://gitcode.com/openeuler/env_check
前往项目官网免费下载:https://ar.openeuler.org/ar/
在openEuler操作系统升级后,确保系统健康稳定运行至关重要。env_check作为一款专业的系统健康检查工具,能够全面检测系统各项功能,但原始的JSON报告对于普通用户来说可能不够直观。本文将为您详细介绍如何将env_check测试报告进行可视化处理,生成易于理解和分析的健康检查报告,帮助您快速掌握系统状态。
为什么需要测试报告可视化?
env_check工具在执行系统健康检查后会生成JSON格式的原始报告,虽然包含丰富的数据,但对于非技术人员来说阅读和理解这些数据存在困难。通过可视化技术,我们可以:
- 🔍快速识别问题:直观展示检查结果
- 📊数据趋势分析:对比不同时间点的检查结果
- 🎯优先级排序:按重要程度展示问题
- 📈性能监控:跟踪系统健康状态变化
env_check报告生成流程
env_check工具通过执行sut/env_check.py中的检查逻辑,调用各种检查actor来评估系统状态。每个检查actor都位于sut/env_check/check_actor/目录下,负责特定的系统功能检查。
1. 运行env_check生成原始报告
首先,您需要运行env_check工具来生成原始的JSON报告:
python3 sut/env_check.py --outputpath /path/to/results工具会自动执行所有检查actor,包括:
- 系统命令检查(basic_commands_actor.py)
- 网络配置检查(network_configure_actor.py)
- 服务状态检查(service_status_actor.py)
- 安全基线检查(security_baseline_actor.py)
2. 理解JSON报告结构
env_check生成的报告具有以下结构:
{ "result": true, "total_count": 45, "pass": 42, "no_pass": 3, "detail": [ { "result": true, "solution": "", "message": {...}, "failed_reason": "" } ] }可视化方案实现
方案一:HTML报告生成器
创建一个简单的HTML报告生成器,将JSON数据转换为可视化网页:
import json from datetime import datetime def generate_html_report(json_path, output_html): with open(json_path, 'r') as f: data = json.load(f) html_content = f""" <!DOCTYPE html> <html> <head> <title>env_check健康检查报告</title> <style> body {{ font-family: Arial, sans-serif; margin: 40px; }} .summary {{ background: #f5f5f5; padding: 20px; border-radius: 10px; }} .pass {{ color: green; }} .fail {{ color: red; }} .check-item {{ margin: 10px 0; padding: 10px; border-left: 4px solid #ccc; }} </style> </head> <body> <h1>🔍 系统健康检查报告</h1> <div class="summary"> <h2>📊 检查概览</h2> <p>总检查项:{data['total_count']}</p> <p class="pass">✅ 通过:{data['pass']}</p> <p class="fail">❌ 未通过:{data['no_pass']}</p> <p>整体状态:{"✅ 健康" if data['result'] else "❌ 存在问题"}</p> </div> </body> </html> """ with open(output_html, 'w') as f: f.write(html_content)方案二:控制台彩色输出
对于命令行用户,可以使用颜色编码来增强可读性:
import json from colorama import Fore, Style def display_colored_report(json_path): with open(json_path, 'r') as f: data = json.load(f) print(f"{Fore.CYAN}=== env_check健康检查报告 ==={Style.RESET_ALL}") print(f"总检查项:{data['total_count']}") print(f"{Fore.GREEN}通过:{data['pass']}{Style.RESET_ALL}") print(f"{Fore.RED}未通过:{data['no_pass']}{Style.RESET_ALL}") for i, detail in enumerate(data['detail'], 1): status = f"{Fore.GREEN}✅" if detail['result'] else f"{Fore.RED}❌" print(f"{status} 检查项 {i}: {detail.get('failed_reason', '通过')}{Style.RESET_ALL}")方案三:生成统计图表
使用Python的数据可视化库生成图表:
import json import matplotlib.pyplot as plt def generate_charts(json_path): with open(json_path, 'r') as f: data = json.load(f) # 创建饼图 labels = ['通过', '未通过'] sizes = [data['pass'], data['no_pass']] colors = ['#4CAF50', '#F44336'] plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1) plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%') plt.title('检查结果分布') # 创建条形图显示详细结果 plt.subplot(1, 2, 2) categories = [] results = [] for detail in data['detail']: categories.append(detail.get('name', '未知')) results.append(1 if detail['result'] else 0) plt.barh(range(len(categories)), results) plt.yticks(range(len(categories)), categories) plt.title('各项检查结果') plt.tight_layout() plt.savefig('env_check_report.png') plt.show()高级可视化功能
1. 时间趋势分析
通过收集多次检查结果,可以创建时间趋势图来跟踪系统健康状态的变化:
def generate_trend_chart(report_files): """生成时间趋势图""" dates = [] pass_rates = [] for file in report_files: with open(file, 'r') as f: data = json.load(f) dates.append(data.get('timestamp', '未知')) pass_rates.append(data['pass'] / data['total_count'] * 100) plt.plot(dates, pass_rates, marker='o') plt.title('系统健康状态趋势') plt.xlabel('检查时间') plt.ylabel('通过率 (%)') plt.grid(True) plt.savefig('health_trend.png')2. 问题分类统计
将未通过的项目按类别进行分类统计:
def categorize_issues(json_path): """按类别统计问题""" with open(json_path, 'r') as f: data = json.load(f) categories = { '系统命令': 0, '网络配置': 0, '服务状态': 0, '安全基线': 0, '其他': 0 } for detail in data['detail']: if not detail['result']: # 根据检查项名称判断类别 name = detail.get('name', '').lower() if 'command' in name or 'cmd' in name: categories['系统命令'] += 1 elif 'network' in name: categories['网络配置'] += 1 elif 'service' in name: categories['服务状态'] += 1 elif 'security' in name: categories['安全基线'] += 1 else: categories['其他'] += 1 return categories3. 生成PDF报告
使用reportlab库生成专业的PDF报告:
from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas from reportlab.lib import colors def generate_pdf_report(json_path, pdf_path): """生成PDF格式的健康检查报告""" with open(json_path, 'r') as f: data = json.load(f) c = canvas.Canvas(pdf_path, pagesize=letter) width, height = letter # 添加标题 c.setFont("Helvetica-Bold", 16) c.drawString(100, height - 100, "env_check系统健康检查报告") # 添加摘要信息 c.setFont("Helvetica", 12) c.drawString(100, height - 150, f"检查时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") c.drawString(100, height - 170, f"总检查项:{data['total_count']}") c.drawString(100, height - 190, f"通过项:{data['pass']}") c.drawString(100, height - 210, f"未通过项:{data['no_pass']}") c.save()最佳实践建议
1. 自动化报告生成
将报告生成过程集成到CI/CD流程中:
#!/bin/bash # 自动化检查脚本 python3 sut/env_check.py --outputpath /tmp/env_check_result.json python3 generate_report.py /tmp/env_check_result.json python3 send_notification.py2. 定期检查计划
使用cron定时任务进行定期健康检查:
# 每天凌晨2点执行健康检查 0 2 * * * /usr/bin/python3 /path/to/env_check.py --outputpath /var/log/env_check/$(date +\%Y\%m\%d).json3. 告警机制
设置阈值告警,当未通过项超过一定数量时发送通知:
def check_and_alert(json_path, threshold=5): with open(json_path, 'r') as f: data = json.load(f) if data['no_pass'] > threshold: send_alert(f"⚠️ 系统健康检查告警:{data['no_pass']}项未通过")总结
env_check测试报告可视化不仅让健康检查结果更加直观易懂,还能帮助您:
- 快速定位问题:通过颜色编码和图表快速识别问题项
- 历史对比分析:跟踪系统健康状态的变化趋势
- 团队协作:生成易于分享的HTML或PDF报告
- 自动化监控:集成到运维流程中实现自动化健康检查
通过本文介绍的可视化方法,您可以将env_check生成的原始JSON数据转换为各种形式的可视化报告,让系统健康状态一目了然。无论是通过简单的控制台输出、详细的HTML报告,还是专业的统计图表,都能帮助您更好地理解和维护openEuler系统的健康状态。
记住,定期进行系统健康检查并及时可视化报告结果,是确保系统稳定运行的重要保障。开始使用env_check的可视化功能,让您的系统维护工作更加高效和直观吧!🚀
【免费下载链接】env_checkA tool for "health checking" after operating system upgrade项目地址: https://gitcode.com/openeuler/env_check
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考