
影刀RPA Grafana可视化自动化看板截图与监控报告生成作者林焱什么情况用什么运维团队的Grafana大屏上挂着一堆监控面板但老板想看的是每天早上9点收到一封邮件里面有昨天的所有核心指标和图表截图。手动截Grafana面板再贴到邮件里运维同学每天早上要花20分钟。用影刀RPA可以把这个流程全自动化打开Grafana → 逐面板截图 → 生成汇总报告 → 发送邮件。适合场景运维日报服务器CPU、内存、磁盘、网络流量面板截图业务日报订单量、GMV、转化率、客单价面板值班交接每天自动生成昨日运行状态报告怎么做店群矩阵自动化突破运营极限第一步配置Grafana访问Grafana一般有登录保护先搞定登录。影刀操作步骤1. 【打开网页】打开Grafana登录页 2. 【填写】输入用户名和密码 3. 【点击】Log in 4. 【等待元素】等待Dashboard加载完成踩过的坑Grafana的Dashboard加载时间取决于数据量。如果你的时间范围选Last 7 days且数据量很大加载可能要30秒以上。用【等待元素】等待具体面板标题出现而不是等固定秒数。第二步截取指定面板Grafana一个Dashboard里可能有十几个面板不是每个都要。只截需要的。影刀操作步骤1. 【打开网页】打开目标Dashboard的URL 2. 【切换】时间范围到昨天或需要的范围 3. 【等待】所有面板加载完成 4. 对每个需要截图的面板 - 【截图元素】定位到面板标题所在的div截取该区域 - 【保存图片】命名为20260627_CPU使用率.png 5. 所有面板截完后【关闭网页】进阶写法Grafana支持URL参数直接指定时间范围。在URL后面加?from{timestamp}to{timestamp}就能跳过手动改时间的步骤url fhttp://grafana.company.com/d/xxx?from{start_ts}to{end_ts}用Python算出昨天0点到24点的时间戳拼到URL里影刀直接打开这个URL即可。第三步生成汇总报告截图有了需要把它们拼成一个HTML报告。importosfromdatetimeimportdatetime,timedelta yesterday(datetime.now()-timedelta(days1)).strftime(%Y-%m-%d)screenshot_dirrC:\screenshotshtmlf html headmeta charsetutf-8title运维日报 -{yesterday}/title style body {{ font-family: Microsoft YaHei; max-width: 800px; margin: auto; }} .panel {{ margin: 20px 0; border: 1px solid #ddd; padding: 10px; }} .title {{ font-size: 16px; font-weight: bold; color: #333; }} img {{ width: 100%; }} /style/head body h1运维日报/h1 p日期{yesterday}/p forimginsorted(os.listdir(screenshot_dir)):ifimg.endswith(.png):titleimg.replace(.png,).replace(_, )htmlfdiv classpaneldiv classtitle{title}/divimg srccid:{img}/divhtml/body/htmlwithopen(rC:\screenshots\report.html,w,encodingutf-8)asf:f.write(html)第四步发送报告邮件影刀操作步骤1. 【发送邮件】带附件和内嵌图片 收件人运维团队 部门负责人 主题运维日报 - {日期} 正文HTML格式的报告内容  附件report.html 内嵌图片添加截图文件夹中所有PNGtemu店群自动化报活动案例有什么坑坑1Grafana面板自适应宽度不同分辨率的显示器截出来的面板宽度不一样。建议在影刀中固定浏览器窗口大小为1920x1080保证截图一致性。坑2面板数据为空节假日某些业务指标可能为0或空Grafana面板显示No data。这时候截图还是照常截但在报告中加一行备注该指标昨日无数据。坑3邮件图片太大一张Grafana面板截图可能2-3MB10张就20-30MB发邮件直接被退。截完图后用Python批量压缩到300KB以内fromPILimportImagedefcompress_image(input_path,output_path,max_size_kb300):imgImage.open(input_path)quality95whilequality10:img.save(output_path,PNG,optimizeTrue,qualityquality)ifos.path.getsize(output_path)/1024max_size_kb:breakquality-10坑4Grafana版本差异不同版本的Grafana面板DOM结构有差异。如果升级了Grafana之前抓取元素的选择器可能失效。建议用面板标题文本去定位而非CSS类名。总结运维报告自动化的核心是截图稳定性。把浏览器窗口固定尺寸、用标题而非类名定位、加足够的等待时间这三个做到基本不会出问题。