准备工作
之前在https://rorschachchan.github.io/2018/02/24/阿里云获取DTS服务延迟的脚本/ 里已经可以获取到阿里云DTS服务的延迟时长和同步速率。下一步就是把这些值以24小时为周期作一个图像,然后每天在固定时间发送到领导们的邮件里。
python作图的第三方工具叫matplotlib
,安装步骤如下:
1
2
3
4pip install matplotlib #画图模块
pip install numpy #依赖的库
pip install scipy #又一个依赖的库
yum install -y Tkinter #如果是python3,那么就是yum install -y tkinter
脚本内容
由于我是在centos 7
里进行脚本操作,而linux服务器有没有安装图像,所以在执行import matplotlib.pyplot as plt
的时候可能会爆错:RuntimeError: could not open display
,这个时候需要在前面改成如下样式(注意先后顺序):
1
2
3import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
举一个简单的脚本例子如下,就是给予(x,y)然后连成曲线图的效果,脚本里数字的部分不加引号也是可以识别的,当然使用变量也可以。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# -*- coding: utf-8 -*-
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import pylab as pl
x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
#横坐标的内容
labels=['10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','1','2','3','4','5','6','7','8','9']
a = '1'
b = '2'
c = '3'
d = '4'
#y1是延迟
y1=['2','3','5','4','2','1','2','2','3','5','4','2','1','2','2','3','5','4','2','1','2','2','3','5']
#y2是同步速率
y2=[a,b,c,d,0.13,0.12,0.14,0.14,0.14,0.16,0.15,0.13,0.12,0.14,0.14,0.14,0.16,0.15,0.13,0.12,0.14,0.22,0.18,0.11]
#输入对应的坐标,后面是颜色
plot1,=pl.plot(x,y1,'r') #这里是有逗号的,用于参数解包
plot2,=pl.plot(x,y2,'b')
pl.xticks(x,labels)
#图片的标题以及对应的字号大小
pl.title('The DTS status of Shenzhen VPC',size=20)
#X轴的标题和字号大小
pl.xlabel('Time', size=14)
#Y轴的标题,字号大小和长度
pl.xlabel('Time', size=14)
pl.ylim(0.0,5.0)
#曲线对应注释
pl.legend([plot1,plot2],('Delay','Sync rate'),'best',numpoints=1)
#图片保存路径
plt.savefig('/tmp/dts.png', format='png')
脚本执行效果之后,会在对应的路径里生成一个图片文件,然后把这个图片转移到windows,打开就看到效果了,如图:
这个图是全英文的,如果是中文的话,就会出现乱码,研究了半天也没搞明白,这一点让我很郁闷。
参考资料
http://python.jobbole.com/81182/
https://absentm.github.io/2017/03/18/Python-matplotlib-数据可视化/
https://liam0205.me/2014/09/11/matplotlib-tutorial-zh-cn/
https://morvanzhou.github.io/tutorials/data-manipulation/plt/1-1-why/
https://www.lookfor404.com/%E8%BF%90%E8%A1%8Cggplot%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98no-display-name-and-no-display-environment-variable/