前言
在https://rorschachchan.github.io/2018/02/24/阿里云获取DTS服务延迟的脚本/ 文章里已经说了“领导要求每天查看阿里云dts同步的延迟情况和同步速率情况”,并且在https://rorschachchan.github.io/2018/02/27/使用matplotlib画图的一个脚本/ 里面也放了一个使用python matplotlib
画图的demo,这篇文章的目的就是把整个过程实现,并且把dts图形以每日邮件的形式发送给领导的效果!
实现需求的思路
本次需求有四个动作,分别是获取一天以内的DTS延迟和同步速率
、将获取到的DTS值做成PNG图像
、将生成的PNG图像上传到阿里云云存储OSS
、把图片展示到邮件里并发送给相关领导
。由于第一步获取一天以内的DTS延迟和同步速率
需要将这个脚本每小时执行一次,执行24次,才可以执行生成png图像
这一步,所以后三个其实可以写成一个大脚本。不过在本文为了表述的清楚,就把各自不同用途写成了不同的脚本。
获取阿里云DTS延迟和同步速率的脚本
这个脚本之前写过了,这里再拿出来晒一遍:
1 |
|
将获取到的值做成图片的脚本
由于脚本执行环境是无图像的阿里云服务器,系统是centos 7
,ps.slow
这一步会爆错RuntimeError: could not open display
,所以只能采取把生成的PNG图像文件保存到本地路径里的方法。脚本内容如下:
1 |
|
将生成的图片上传到阿里云OSS的脚本
由于不想让“领导去手动点开附件查看图像”,所以我们干脆把图片作为邮件的正文展示出来,那么就在html里就需要img src=图片的网络地址
的方法。于是就把刚刚生成的图片上传到阿里云OSS里,这样就可以获得图片的网络地址。而且阿里云OSS是“相同文件名会覆盖”,所以不用再去删除。整个脚本内容如下:
1 | # -*- coding: utf-8 -*- |
将图片作为内容发邮件的脚本
整个脚本内容如下:
1 |
|
参考资料
https://github.com/aliyun/aliyun-oss-python-sdk/blob/master/examples/object_basic.py
https://hk.saowen.com/a/fe355cb5cc3ab17dbc84e9489621d2ab31da72b511092839832bc9e89d63bf71
http://blog.csdn.net/baoli1008/article/details/47980779
https://www.digglife.net/articles/html-mail-with-inline-images-python-perl.html