使用 rrdtool (和 rrdcollect) 设置监控
安装程序
apk add rrdtool rrdcollect
创建 rrd 数据库
由于我们将使用 rrdcollect 来为我们收集数据,我们将创建 rrdcollect 默认配置尝试使用的所有数据库。
stat.rrd
rrdtool create /var/lib/rrdtool/stat.rrd \ --step 60 \ DS:cpu_user:COUNTER:120:0:U \ DS:cpu_nice:COUNTER:120:0:U \ DS:cpu_system:COUNTER:120:0:U \ DS:cpu_idle:COUNTER:120:0:U \ DS:cpu_iowait:COUNTER:120:0:U \ DS:cpu_irq:COUNTER:120:0:U \ DS:cpu_softirq:COUNTER:120:0:U \ DS:ctxt:COUNTER:120:0:U \ DS:page_in:COUNTER:120:0:U \ DS:page_out:COUNTER:120:0:U \ DS:processes:COUNTER:120:0:U \ DS:swap_in:COUNTER:120:0:U \ DS:swap_out:COUNTER:120:0:U \ RRA:AVERAGE:0.5:1:360 \ RRA:AVERAGE:0.5:10:1008 \ RRA:MAX:0.5:10:1008
memory.rrd
rrdtool create /var/lib/rrdtool/memory.rrd \ --step 60 \ DS:mem_total:GAUGE:120:0:U \ DS:mem_used:GAUGE:120:0:U \ DS:mem_free:GAUGE:120:0:U \ DS:mem_shared:GAUGE:120:0:U \ DS:mem_buffers:GAUGE:120:0:U \ DS:swap_total:GAUGE:120:0:U \ DS:swap_used:GAUGE:120:0:U \ DS:swap_free:GAUGE:120:0:U \ RRA:AVERAGE:0.5:1:360 \ RRA:AVERAGE:0.5:10:1008 \ RRA:MAX:0.5:10:1008
eth0.rrd
rrdtool create /var/lib/rrdtool/eth0.rrd \ --step 60 \ DS:bytes_in:COUNTER:120:0:U \ DS:pkts_in:COUNTER:120:0:U \ DS:bytes_out:COUNTER:120:0:U \ DS:pkts_out:COUNTER:120:0:U \ RRA:AVERAGE:0.5:1:360 \ RRA:AVERAGE:0.5:10:1008 \ RRA:MAX:0.5:10:1008
注意: 如果您选择更改 "--step 60" (它指定了数据将被馈送到 RRD 的基本间隔,以秒为单位),请确保更改 /etc/rrdcollect/rrdcollect.conf 中的 'step' 值以反映上述更改。
提示: 在上面的示例中,每个 .rrd 中的第一个 RRA 更精确(1 分钟间隔),但它保存数据的时间更短。(1x360x60) 等于 21600 秒/6 小时)
第二个 RRA 评估 10 分钟间隔,并保存数据更长时间。(10x1008x60 等于 604800 秒/168 小时/7 天)
第二个 RRA 评估 10 分钟间隔,并保存数据更长时间。(10x1008x60 等于 604800 秒/168 小时/7 天)
收集信息并放入 RRD 中
rc-service rrdcollect start
基于 rrd 创建图表
在下面的示例中,您会注意到 .png 文件导出到 "/var/www/localhost/htdocs/"。
您需要创建 /var/www/localhost/htdocs/ 或更改图像的路径。
Stat
rrdtool graph /var/www/localhost/htdocs/stat.png --start -1800 \ -a PNG -t "Stat" --vertical-label "bits/s" \ -w 1260 -h 400 -r \ DEF:cpu_user=/var/lib/rrdtool/stat.rrd:cpu_user:AVERAGE \ DEF:cpu_nice=/var/lib/rrdtool/stat.rrd:cpu_nice:AVERAGE \ DEF:cpu_system=/var/lib/rrdtool/stat.rrd:cpu_system:AVERAGE \ DEF:cpu_idle=/var/lib/rrdtool/stat.rrd:cpu_idle:AVERAGE \ DEF:cpu_iowait=/var/lib/rrdtool/stat.rrd:cpu_iowait:AVERAGE \ DEF:cpu_irq=/var/lib/rrdtool/stat.rrd:cpu_irq:AVERAGE \ DEF:cpu_softirq=/var/lib/rrdtool/stat.rrd:cpu_softirq:AVERAGE \ DEF:ctxt=/var/lib/rrdtool/stat.rrd:ctxt:AVERAGE \ DEF:page_in=/var/lib/rrdtool/stat.rrd:page_in:AVERAGE \ DEF:page_out=/var/lib/rrdtool/stat.rrd:page_out:AVERAGE \ DEF:processes=/var/lib/rrdtool/stat.rrd:processes:AVERAGE \ DEF:swap_in=/var/lib/rrdtool/stat.rrd:swap_in:AVERAGE \ DEF:swap_out=/var/lib/rrdtool/stat.rrd:swap_out:AVERAGE \ AREA:cpu_user#D7CC00:cpu_user \ AREA:cpu_nice#D7CC00:cpu_nice \ LINE2:cpu_system#D73600:cpu_system \ LINE2:cpu_idle#D73600:cpu_idle \ LINE2:ctxt#0101D6:ctxt \ LINE2:page_in#0101D6:page_in \ LINE2:page_out#D73600:page_out \ LINE2:processes#D73600:processes \ LINE2:swap_in#D73600:swap_in \ LINE2:swap_out#D73600:swap_out
Memory
rrdtool graph /var/www/localhost/htdocs/memory.png --start -1800 \ -a PNG -t "Memory" --vertical-label "" \ -w 1260 -h 400 -r \ DEF:mem_total=/var/lib/rrdtool/memory.rrd:mem_total:AVERAGE \ DEF:mem_used=/var/lib/rrdtool/memory.rrd:mem_used:AVERAGE \ DEF:mem_free=/var/lib/rrdtool/memory.rrd:mem_free:AVERAGE \ DEF:mem_shared=/var/lib/rrdtool/memory.rrd:mem_shared:AVERAGE \ DEF:mem_buffers=/var/lib/rrdtool/memory.rrd:mem_buffers:AVERAGE \ DEF:swap_total=/var/lib/rrdtool/memory.rrd:swap_total:AVERAGE \ DEF:swap_used=/var/lib/rrdtool/memory.rrd:swap_used:AVERAGE \ DEF:swap_free=/var/lib/rrdtool/memory.rrd:swap_free:AVERAGE \ CDEF:mem_total_x=mem_total,1024,\* \ CDEF:mem_used_x=mem_used,1024,\* \ CDEF:mem_free_x=mem_free,1024,\* \ CDEF:mem_shared_x=mem_shared,1024,\* \ CDEF:mem_buffers_x=mem_buffers,1024,\* \ CDEF:swap_total_x=swap_total,1024,\* \ CDEF:swap_used_x=swap_used,1024,\* \ CDEF:swap_free_x=swap_free,1024,\* \ LINE1:mem_total_x#000000:mem_total \ LINE2:mem_used_x#D7CC00:mem_used \ LINE2:mem_free_x#00CC00:mem_free \ LINE2:mem_shared_x#D73600:mem_shared \ LINE2:mem_buffers_x#D73600:mem_buffers \ LINE2:swap_total_x#000000:swap_total \ LINE2:swap_used_x#0101D6:swap_used \ LINE2:swap_free_x#0101D6:swap_free
eth0
rrdtool graph /var/www/localhost/htdocs/eth0.png --start -1h \ -a PNG -t "eth0" --vertical-label "bits/s" \ -w 1260 -h 400 -r \ DEF:bytes_in=/var/lib/rrdtool/eth0.rrd:bytes_in:AVERAGE \ DEF:bytes_out=/var/lib/rrdtool/eth0.rrd:bytes_out:AVERAGE \ CDEF:bits_in=bytes_in,8,\* \ CDEF:bits_out=bytes_out,-8,\* \ AREA:bits_in#339933:bits_in \ AREA:bits_out#aa3333:bits_out \ HRULE:0#000000
rrdtool graph /var/www/localhost/htdocs/eth0pkt.png --start -1800 \ -a PNG -t "eth0" --vertical-label "packets" \ -w 1260 -h 400 -r \ DEF:pkts_in=/var/lib/rrdtool/eth0.rrd:pkts_in:AVERAGE \ DEF:pkts_out=/var/lib/rrdtool/eth0.rrd:pkts_out:AVERAGE \ CDEF:pkts_out_negative=pkts_out,-1,\* \ LINE2:pkts_in#006600:pkts_in \ LINE2:pkts_out_negative#D73600:pkts_out \ HRULE:0#000000