通过mrtg分析数据并生成流量图

由于最近老要分析数据,并生成流量图。网上找了好久没找到,后来找朋友写了个java的和python的,感觉不是很如意,只能无奈的每次都使用excel生成流量图。

今天无意间看到一篇文章:【原】让mrtg从脚本获取信息画图,终于燃起了我的希望,于是自己实践了一番,并写下了步骤。

1.安装http和mrtg

yum install httpd

yum install mrtg

2.创建脚本目录和脚本

mkdir /opt/data

vi /opt/data/data.sh

cat /opt/data/data.sh

#!/bin/bash

echo date +%H ##输出小时,作为横坐标

echo $RANDOM ##输出一个随机值,作为纵坐标

chmod +x /opt/data/data.sh

3.编辑mrtg配置文件

vi /etc/mrtg/mrtg.cfg
添加如下内容:
Target[data]:/opt/data/data.sh ##运行脚本

MaxBytes[data]:10000000 ##最大上限

Title[data]:data Analysis ##标题

Xsize[data]:600 ##横坐标尺寸

Ysize[data]:200 ##纵坐标尺寸

Kmg[data]:MB ##单位

Options[data]:growright,gauge,nopercent

legendI[data]:&hour

legendO[data]:&Mbps

PageTop[data]:<H1>one day data Analysis</H1>
配置文件含义如下:
[ID]:其中定义的是装置名称,用于分组、区别,同一个装置需要使用相同的ID标识,生成的图片以此区分

Target:有两种定义方法

从snmp获取信息:2: public@192.168.1.2 <–2表示从snmp获得的设备号标识,后面是community认证信息和服务器地址

从脚本获取信息:指定要执行的脚本路径,使用“`”号分割

Xsize:生成图表的横向宽度(最大600)

Ysize:生成图表的纵向高度(最大200)

Title:标题

kMG: Change the default multiplier prefixes

Ytics:纵向划分为几个块(格子)

MaxBytes:图表纵向数值的最大上限

PageTop:页面上面的提示

kilo:一般是写1024,如果需要的话,是1000在计算机里的单位

LegendI:从SHELL返回的数据中的第一个

LegendO:从SHELL返回的数据中的第二个

Options: 一些可用参数

growright:将数据随时间变化的顺序以右而左绘图;

bits:数据单位为 bits;

nopercent:在图下方的说明文字中,不显示百分比;

gauge:图表的上限固定。

常见:

Options[192.168.228.153_2]: growright, bits (用在网络流量中)

Options[192.168.228.153_3]: growright, nopercent, gauge (用在 CPU 负载中)
详细可见man mrtg-reference
vi /etc/http/conf.d/mrtg.conf
修改内容如下:
Order allow,deny

allow from all
然后重启httpd服务
service httpd restart

4.启动mrtg

indexmaker –output=/var/www/mrtg/index.html –title=DATA /etc/mrtg/mrtg.cfg ##生成index.html

env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg –lock-file /var/lock/mrtg/mrtg_l –confcache-file /var/lib/mrtg/mrtg.ok ##生成数据
制定计划任务:
crontab -e
添加如下内容:
0 /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg –lock-file /var/lock/mrtg/mrtg_l –confcache-file /var/lib/mrtg/mrtg.ok
保存退出,然后重启crond服务
service crond restart

5.通过web访问mrtg(记得关闭防火墙和selinux)

http://ip/mrtg

 

截图: