具体:http://www.verydemo.com/demo_c122_i34285.html
1
|
sudo apt-
get
install python-rrdtool
|
二、创建rrd文件
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
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
sys
import
rrdtool
/
/
创建net.rrd,数据获取间隔是
300
秒
rrdtool.create(“
/
opt
/
rrdtool
/
net.rrd”, “–step”, “
300
″, “–start”, ’
0
′,
/
/
变量
input
,类型COUNTER,超时时间
600
秒,U最小值无,U最大值无。
“DS:
input
:COUNTER:
600
:U:U”,
“DS:output:COUNTER:
600
:U:U”,
/
/
0.5
: 一个CDP里所有PDP值超过一半为UNKNOWN,则该CDP的值也为UNKNOWN。
“RRA:AVERAGE:
0.5
:
1
:
600
″,
/
/
6
表示对
6
个PDP合成一个CDP,取
6
个PDP的平均值(
6
*
300
=
半个小时的平均值)
“RRA:AVERAGE:
0.5
:
6
:
700
″,
/
/
755
便是RRA记录的条数
“RRA:AVERAGE:
0.5
:
24
:
775
″,
“RRA:AVERAGE:
0.5
:
288
:
797
″,
“RRA:
MAX
:
0.5
:
1
:
600
″,
“RRA:
MAX
:
0.5
:
6
:
700
″,
“RRA:
MAX
:
0.5
:
24
:
775
″,
“RRA:
MAX
:
0.5
:
444
:
797
″
“RRA:
MIN
:
0.5
:
1
:
600
″,
“RRA:
MIN
:
0.5
:
6
:
700
″,
“RRA:
MIN
:
0.5
:
24
:
775
″,
“RRA:
MIN
:
0.5
:
444
:
797
″)
|
三、更新rrd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
sys
import
rrdtool
input
=
0
output
=
0
/
/
读取proc里网卡数据
F
=
open
(‘
/
proc
/
net
/
dev’)
for
line
in
F.readlines():
/
/
过去eth0的数据
if
‘eth0′
in
line:
input
=
line.split()[
1
]
output
=
line.split()[
9
]
/
/
eth0的进出流量更新到net.rrd里。
rrdtool.update(‘
/
opt
/
rrdtool
/
net.rrd’,'N:’
+
input
+
‘:’
+
output)
|
四、画图
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
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
sys
import
rrdtool
/
/
生成net.png图片,
-
8h
起始时间
8
小时以前。
rrdtool.graph( “
/
tmp
/
net.png”, “–start”, “
-
8h
”,
/
/
Y轴说明
“–vertical
-
label
=
Bytes
/
s”,
/
/
将net.rrd里
input
的平均数据赋值给inoctets
“DEF:inoctets
=
/
opt
/
rrdtool
/
net.rrd:
input
:AVERAGE”,
“DEF:outoctets
=
/
opt
/
rrdtool
/
net.rrd:output:AVERAGE”,
/
/
用面积表示inoctets数据,颜色为绿色
“AREA:inoctets
#00FF00:In traffic”,
/
/
用
1
像素线表示outoctets数据,颜色为蓝色。
“LINE1:outoctets
#0000FF:Out traffic\\r”,
/
/
inbits
=
inoctets
*
8
将小b换成大B
“CDEF:inbits
=
inoctets,
8
,
*
”,
“CDEF:outbits
=
outoctets,
8
,
*
”,
/
/
换行
“COMMENT:\\n”,
“GPRINT:inbits:AVERAGE:Avg In traffic\:
%
6.2lf
%
Sbps”,
“COMMENT: ”,
“GPRINT:inbits:
MAX
:
Max
In traffic\:
%
6.2lf
%
Sbps\\r”,
“GPRINT:outbits:AVERAGE:Avg Out traffic\:
%
6.2lf
%
Sbps”,
“COMMENT: “,
“GPRINT:outbits:
MAX
:
Max
Out traffic\:
%
6.2lf
%
Sbps\\r”)
|