文档章节

画IDC状态趋势图

o
 osc_moibnxyj
发布于 07/08 09:26
字数 983
阅读 38
收藏 0
php

「深度学习福利」大神带你进阶工程师,立即查看>>>

[背景]公司以前对IDC状态的测试都是通过perl+crond结合,向指定某IDC的IP发送icmp包,并将其结果保存到test.log下,对于后斯的分析,是采取手工的方式(格式化数据,结合excel),这样操作下来很浪费时间,今天我将把昨天写的程序拿出来,来解决手工处理数据的方法,以自动画展示给大家。谢谢!~
[过程]
IDC状态报表生成的流程(历史)
ping(借助perl脚本+crond)---->test.log(生成数据)---->格式化test.log---->excel(借助模板生成趋势图)---->交任务
IDC状态报表生成的流程(现在)
ping(借助perl脚本+crond)---->test.log(生成数据)---->程序(今天写的程序)---->交任务
分析test.log
hzm,220.166.63.15,2009/6/5 22:30:0,20, 17.184,17.293,17.379, 0
hzm,220.166.63.15,2009/6/5 22:31:40,2000, 18.776,18.878,18.966, 0
hzm,220.166.63.15,2009/6/6 3:30:0,20, 17.155,17.240,17.350, 0
hzm,220.166.63.15,2009/6/6 3:31:40,2000, 18.717,18.854,18.961, 0
hzm,220.166.63.15,2009/6/6 9:0:1,20, 17.158,17.242,17.354, 0
hzm,220.166.63.15,2009/6/6 9:1:41,2000, 18.760,18.861,18.966, 0
hzm,220.166.63.15,2009/6/6 11:30:1,20, 17.199,17.277,17.481, 0
hzm,220.166.63.15,2009/6/6 11:31:41,2000, 18.678,18.874,18.970, 0
hzm,220.166.63.15,2009/6/6 15:0:0,20, 17.193,17.279,17.383, 0
hzm,220.166.63.15,2009/6/6 15:1:40,2000, 18.774,18.883,19.001, 0
hzm,220.166.63.15,2009/6/6 17:30:1,20, 17.189,17.278,17.383, 0
hzm,220.166.63.15,2009/6/6 17:31:41,2000, 18.759,18.880,19.001, 0
hzm,220.166.63.15,2009/6/6 20:30:0,20, 17.194,17.283,17.377, 0
hzm,220.166.63.15,2009/6/6 20:31:40,2000, 18.777,18.885,18.997, 0
hzm,220.166.63.15,2009/6/6 22:30:0,20, 17.205,17.289,17.378, 0
hzm,220.166.63.15,2009/6/6 22:31:40,2000, 17.718,18.886,19.004, 0
hzm,220.166.63.15,2009/6/7 3:30:0,20, 17.146,17.240,17.346, 0
hzm,220.166.63.15,2009/6/7 3:31:40,2000, 18.017,18.835,18.948, 0
.....
这是一个向220.166.63.15定点发送20,2000包大小的ICMP数据包。

来看一接口图

根据IP,包大小,来生成不同种类型的图。
看下结果


接下来,就是程序部分了,请看
index.php

<html>
<head>
<title>IDC状态图</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<mce:style type="text/css"><!--
.style1 {
        font-size: 16px;
        font-weight: bold;
}
--></mce:style><style type="text/css" mce_bogus="1">.style1 {
        font-size: 16px;
        font-weight: bold;
}</style>
</head>

<body>
<?php
$i=0;
global $file_path;
$file_path ="test.log";
$fp = fopen ($file_path, "r");
while(!feof($fp)){
    $bruce=fgets($fp);
    $pieces = explode(",", $bruce);
    if(!is_null($pieces[1])){
       $ip_result[$i] = $pieces[1];
    }
    if(!is_null($pieces[3])){
       $size_result[$i]=$pieces[3];
    }
    $i++;
}
fclose($fp);
$tmp_size_result=array_keys(array_flip($size_result));
$tmp_ip_result=array_keys(array_flip($ip_result));
?>
<form name="form1" method="get" action="result.php">
  <p align="center" class="style1"> IDC状态生成图</p>
  <table width="300" border="1" align="center" cellpadding="3" cellspacing="3">
    <tr>
      <td width="85"><strong>IP:</strong></td>
<td width="188"><select name="ip" id="ip">
<?php
while (list(,$value)= each($tmp_ip_result)){
?>       
<option value=<?php echo $value ?>><?php echo $value ?></option>
<?php } ?>
      </select></td>
    </tr>
    <tr>
      <td><strong>包大小:</strong></td>
      <td>
<select name="size" id="size">
<?php while(list(,$value)=each($tmp_size_result)){ ?>
        <option value=<?php echo $value ?> ><?php echo $value ?></option>
<?php } ?>
      </select></td>
    </tr>
    <tr>
      <td><strong>图宽度:</strong></td>
      <td>
<INPUT TYPE="text" NAME="img_width">
</td>
    </tr>
<tr>
      <td><strong>文件名:</strong></td>
      <td>
<INPUT TYPE="text" NAME="file_name" value="<?php echo $file_path ?>" readonly>
</td>
    </tr>
  </table>
  <p align="center">
    <input type="submit" value="生 成">
    <input type="reset" name="Submit2" value="重 置">
  </p>
</form>
</body>
</html>

result.php

<?php
include ("../jpgraph.php");
include ("../jpgraph_line.php");

$src_ip = $_GET["ip"];
$pack_size = $_GET["size"];
$image_width = $_GET["img_width"];
$file_name =$_GET["file_name"];

$i=0;
$fp = fopen ("$file_name", "r");
while (!feof($fp))
{
    $bruce=fgets($fp);
    $pieces = explode(",", $bruce);
 if($src_ip == $pieces[1]){
    if($pieces[3]==$pack_size){
       $result_min[$i]=$pieces[4];
       $result_avg[$i]=$pieces[5];
       $result_max[$i]=$pieces[6];
       $tmp_time=explode(" ",$pieces[2]);
       $tmp1_time=explode(":",$tmp_time[1]);
       $result_time[$i]=$tmp1_time[0].":".$tmp1_time[1];
       $i++;
    }
  }
}
fclose($fp);

$graph = new Graph($image_width,300,auto);                                                                      //创建新的Graph对象
$graph->SetScale("textlin");
$graph->SetShadow();                                                                                    //设置图像的阴影样式

$graph->img->SetMargin(60,30,30,70);                                                            //设置图像边距
$graph->title->Set("IDC状态(Size=$pack_size)");                                                //设置图像标题
$graph->title->SetMargin(10);

$lineplot1=new LinePlot($result_avg);                                                                        //创建设置两条曲线对象
$lineplot2=new LinePlot($result_min);
$lineplot3=new LinePlot($result_max);

$graph->Add($lineplot1);                                                                                        //将曲线放置到图像上
$graph->Add($lineplot2);
$graph->Add($lineplot3);

$graph->xaxis->title->Set("时间段");                                                                      //设置坐标轴名称
$graph->yaxis->title->Set("Ping值");
$graph->xaxis->title->SetMargin(10);
$graph->yaxis->title->SetMargin(15);

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);                                                      //设置字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);


$graph->xaxis->SetTickLabels($result_time);

$lineplot1->SetColor("red");                                                                            //设置颜色
$lineplot2->SetColor("blue");
$lineplot3->SetColor("green");

$lineplot1->SetLegend("Avg");                                                           //设置图例名称
$lineplot2->SetLegend("Min");
$lineplot3->SetLegend("Max");

$graph->legend->SetLayout(LEGEND_HOR);                                                  //设置图例样式和位置
$graph->legend->Pos(0.5,0.96,"center","bottom");

$graph->Stroke();                                                                                               //输出图像
?>

怎么样,看得还满意吗?嗯,赶快交差喽...





























































































































































































如果想了解更多,请关注我们的公众号
公众号ID:opdevos
扫码关注

gongzhouhao.jpg


o
粉丝 0
博文 70
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
可视化的蛋白质配位图--VPLG

可视化的蛋白质配位图(VPLG)使用一个基于图的模型来描述蛋白质的结构,基于超级二级结构级别。一个蛋白质配位图是计算从原子坐标在PDB文件和二级结构作业的DSSP算法。在这个图,顶点代表二级结...

匿名
2012/10/28
2.2K
0
Unity3D研究院之使用Animation编辑器编辑动画

Unity提供了Animation编辑器,它可以为我们编辑物理动画。举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互。如果这个秋千也用...

orientalfashion
2013/04/19
1.4W
1
谈谈机会过程中的平均数律与机会变异

基本概念 下面列出的几个概念有助于理解本文所讨论的主题。 机会过程 书中没有给出机会过程的显式定义,我用搜索引擎也没有找到理想的回答: 但是书中提供了丰富的例子来说明机会过程,括号内...

Lee的白板报
2015/08/29
297
0
快速安装可视化IDS系统

快速安装可视化IDS系统 本节为大家介绍的软件叫安全洋葱Security Onion,根OSSIM一样,它是基于DebianLinux的系统,内部集成了很多开源安全工具,NIDS、HIDS、各种监控工具等等,下面我们就一...

OSSIM
2016/05/29
2.7K
1

没有更多内容

加载失败,请刷新页面

加载更多

创建具有列表理解的字典 - Create a dictionary with list comprehension

问题: I like the Python list comprehension syntax. 我喜欢Python列表理解语法。 Can it be used to create dictionaries too? 它也可以用来创建字典吗? For example, by iterating over......

技术盛宴
28分钟前
15
0
从JS数组中删除重复的值[duplicate] - Remove duplicate values from JS array [duplicate]

问题: This question already has answers here : 这个问题已经在这里有了答案 : Get all unique values in a JavaScript array (remove duplicates) (79 answers) 获取JavaScript数组中的......

法国红酒甜
今天
7
0
如何使用AngularJS在浏览器的控制台中访问$ scope变量?

问题: I would like to access my $scope variable in Chrome's JavaScript console. 我想在Chrome的JavaScript控制台中访问$scope变量。 How do I do that? 我怎么做? I can neither see ......

fyin1314
今天
18
0
ImageMagick - 添加水印

背景 最近制作思维导图想添加自己的水印,网上很多例子都是使用ImageMagick来完成。但是不少代码在本地并不可行。经过一番试验,找到两个方法。 方法一 代码 stackoverflow方法改良: conver...

wffger
今天
11
0
OSChina 周四乱弹 —— 到底是怎样的饕餮盛宴在等待着我!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 小小编辑推荐 :《你 能 來 保 護 我 的 世 界 嘛》- 歪门 《你 能 來 保 護 我 的 世 界 嘛》- 歪门 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
77
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部