Top sorting--- Design and Implement(First)

一:主要功能:从Overall Report里每五分钟的排名中的数据存入Oracle数据库中(当前,这些数据是保存在93的机器上).然后,再用Php查询数据库中的数据,按所需输出数据,显示在Web页面上.

二:项目意义:在此工作完成好之后,我们可以从页面上自主选择一时间段,然后查看在此时间段内,经常出现在Top排名前N名的IP的信息.包括:IP地址,平均值,上榜次数等等.这些数据对于学校网络管理工作有很大的参考价值..

 三:项目具体实施:

第一阶段主要完成对Top排名中的数导入数据库:
编程语言:Perl
使用工具:UltraEdit编缉程序,Source insight程序分析工具.
实施细节:具体编码如下:(在中CUFlow.pm中的sub writeAggScoreboard ()函数中加入以下语句).
#open a csv file
    open(TOP_CSV, ">$CUFlow::topCsvPath") ||
       die "Cannot open $CUFlow::topCsvPath for write ($!)/n";
 
           my $FACTOR;
               if ($key=="byte") {
                      $FACTOR=8;
               }
               else {
                      $FACTOR=1;
               }
              my %type;
             %type = ("bytesin"=>1,"pktsin"=>2,"flowsin"=>3,"bytesout"=>4,"pktsout"=>5,"flowsout"=>6);         
             
              my $topData = sprintf("%.2f", $data{$ip}->{"$key$dir"}*$FACTOR/$div);
              my $topType = $type{"$key$dir"};
 
              print TOP_CSV "$ip,$topData,$topType/n";
            }               
    close TOP_CSV;
   
 需要说明的是对于路径的处理利用了Perl语言的巧妙性:
open(TOP_CSV, ">$CUFlow::topCsvPath")
其中,对于对于$CUFlow::topCsvPath的定义在CUFlow.cf文件里:
# The path of top.csv
TopCsvPath /usr/netflow/database/top.csv
然后在CUFlow.pm文件中的Sub parseConfig()函数里通过Perl语言对
CUFlow.cf里的内容读取进行模式匹配,将读出的路径内容传递给变量
elseif (/^/s*TopCsvPath/s+(/S+)/s*$/) {
           $CUFlow::topCsvPath = $1;
}.
 
最后将得到的IP地址,数据量以及数据类型一起导入到top.csv文件中.(这其
中对于数据类型的导入用到了Perl的一强大功能之一:散列.将&key 与&value一一对应起来,这可以为将来查询数据库节省了时间).
 
这里,我们的数据仍然存在于93机器上,还未导入数据库.要完成这点需要用到
的是一条叫sqlldr的命令(止命令在importdata文件中)
  `sqlldr userid=username/password control=${flowfiledatabasedir}/top.ctl log=/var/log/importdata`
其中:userid= username/password分别为用户名和密码.control是关键要素,与上面讲的一样${flowfiledatabasedir}变量也代表着一完整路径,我们依然可以在importdata文件中很快找到其完整内容.top.ctl其内容是:
load data
infile '/usr/netflow/database/top.csv'
append into table top
(IP terminated by ',',
 DATA terminated by ',',
 TYPE terminated by whitespace)
 
说明: infile:指数据源文件;append 表示以追加的方式式将数据加入表top;
后面的就是追加的列属性. terminated by ','指用逗号分隔terminated by whitespace
结尾以空白分隔.
Log是用来记录日志文件的.
执行此语句只需在sqlldr语句加上’’即可.
 
我们己将93机器上的top.csv中的数据导入Oracle数据库中的一个top名的表格中,此表共有三个列属性:IP地址,数据值及数据类型.另有一个自带的属性,系统时间(为下面的第二阶段作准备). 至此,第一阶段工作告一段落.
 
 
附加知识:我们在将数据存入top.csv 后,可以查看来具体工作过程:而且是在Linux下.需要用到的是putty(PuTTY是免费的Win32平台的Telnet和SSH客户端程序).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值