Shell图形化监控网络流量


shell图形化监控网络流量

网络流量的监控工具有很多,如:Mrtg、Cacti、Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求。除了网络流量监控工具以外,还有Nagios这样的监控主机状态的工具,不仅能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。还能在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知等功能。shell图形化监控网络流量,除此之外Nagios简单地插件设计使得用户可以方便地扩展自己服务的检测方法。也正是这一点,让Nagios几乎无所不能。我们也经常利用这个特性,使用Shell编写各类插件配合Ngios的使用。
Nagios虽然强大,但无法像Cacti那样图形化监控网络流量。因此Nagios+Cacti通过NPC整合在一起,强强联手成为了一种经常被使用的组合。shell图形化监控网络流量关于这方面的知识,我会在后续的博客中有所描述,此处暂略过。只为图形化流量使用情况就要在学习Cacti的同时,还要将Nagios与Cacti进行整合,成本未免太高。有没有一种方式可以自定义网络流量监控并以图形化的方式显示出来呢?本文就是利用Shell配合绘图工具GnuPlot将网络流量图形化的展示出来即shell图形化监控网络流量,大家可以将他嵌入到Nagios或者干脆单独使用。
首先我们需要获得网络流量。运行ifconfig命令

eth0 Link encap:Ethernet HWaddr 00:0C:29:58:A5:D5
inet addr:192.168.0.15 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe58:a5d5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:496 (496.0 b) TX bytes:2452 (2.3 KiB)
Interrupt:193 Base address:0x2000

其中 RX Bytes、TX Bytes:为总传送、接收的字节总量(红色标注部分)。我们将其取出并相加。命令如下:

ifconfig | awk -F ":" 'NR==8{print $2+$3}' (本例获得结果为2948,单位为byte)

shell图形化监控网络流量,我们将以分钟为单位取得该值并与之前取得值的总和相减得到每分钟的网卡流量并导入到文本文件中。文件的格式如下:

06:01:00 2948
06:02:00 1948
06:03:00 2948
06:04:00 3948
06:05:00 1948
06:06:00 3948
........

echo -n `date +%H:%M:%S` " " >> result;echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `] >>result

echo -n `date +%H:%M:%S` " " >> 1; #以小时:分钟:秒为格式获取当前系统时间并输出重定向到result文件中,-n选项为不输出换行符。
awk '{sum+=$2}END{print sum}' result #为获得result文件中第二列所有值的和
echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `]>>result #shell图形化监控网络流量将当前网卡流量减去之前统计的网

卡流量总和得到这一分钟内网卡的流量并将其输出重定向到result文件中。

#! /bin/bash
while true;do
echo -n `date +%H:%M:%S` " " >> result;echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `]>>result
sleep 60
done

reslut文件内容如下:
06:31:01 2948
06:32:01 1948
06:33:01 2948
06:34:01 3948
06:35:01 1948
06:36:01 3948
06:37:01 2680
06:38:01 3127
06:39:01 4162
06:40:01 5137
06:41:01 1348
06:42:01 1872
06:43:01 2882
06:44:01 1972
06:45:01 5689
06:46:01 1952
06:47:01 2371
06:48:01 3333
06:49:01 4523
06:50:01 1346
06:51:01 7864
06:52:01 3256
06:53:01 5742
06:54:01 1234
06:55:01 4328
06:56:01 2651
06:57:01 1463
06:58:01 2813
06:59:01 1111
07:00:01 2134
07:01:01 1687
07:02:01 3383
07:03:01 2345

现在我们就可以通过GnuPlot进行绘图。
set terminal png small color picsize 600 400 #以png格式,坐标字体为小字体,大小为600*400输出绘图
set output "eth0.png" #输出图片的名称为eth0.png
set xdata time #设定X坐标的类型为时间类型
set timefmt "%H:%M:%S" #设定时间类型的格式
set grid #设定网格为输出图片背景
set style data linespoints #设定绘图使用点线方式
set xtic rotate by 90 #将X坐标以90旋转
plot "result" using 1:2 title "eth0" pointtype 3 linetype 2#以result文件的一列为X坐标绘制第二列的内容,图片右上角标示为eth0

将以上内容保存为文件eth0
cat eth0 | gnuplot #执行绘图

shell图形化监控网络流量本例输出的图片如下:
223258568.png

完整shell脚本如下:

#! /bin/bash
while true;do
echo -n `date +%H:%M:%S` " " >> result;echo $[`ifconfig | awk -F ":" 'NR==8{print $2+$3}'`-`awk '{sum+=$2}END{print sum}' result `]>>result
cat eth0 | gnuplot #由于每次生成的图片会覆盖原来的图片,所以不用进行删除操作
sleep 60
done

shell图形化监控网络流量生成好的图片可以放置在Apache中或者整合Nagios。 篇幅有限,未尽之处,还请见谅,希望大家批评指教,提出更好的建议。谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JQuery Datatables editor 在编辑前刷新数据

背景 在同一时间,可能很多人在编辑修改同一数据,这会导致在一个人还在在修改的过程中另一人在完成了修改并保存了数据。editor在button插件的扩展中可以有效的缓解这个问题:自定义一个编辑按钮,此编辑按钮实现 点击按钮后&#x…

JQuery Datatables 显示行的附加信息

点击这里查看datatables官网介绍 点击这里查看datatables中文网介绍 效果如下图所示: 点击首列调用ajax返回数据,并展开明细行如下图所示: CSS代码: td.details-control {background: url(../../scripts/datatables-1.10.19/ima…

初涉c#设计模式-Iterator Pattern

一、迭代器模式简介(Brief Introduction) 迭代器模式(Iterator Pattern),提供一种方法顺序访问一个聚合对象中元素,而不暴露改集合对象的内部表示。 Provide a way to access the elements of an aggregate object sequentially without exposing its un…

Buttons——CSS按钮样式库

点击进入查看官网说明 不同颜色按钮&#xff1a; <button class"button button-3d button-primary">button1</button><button class"button button-3d button-action">button2</button><button class"button button-3d b…

Win10中如何找到并打开SqlServer2008 R2配置管理器

首先Win R &#xff0c;打开运行窗口&#xff0c;然后输入&#xff1a; SQLServerManager10.msc

机器学习中的相似性度量

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement)&#xff0c;这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究&#xff0c;甚至关系到分类的正确与否。 本文的目的就是对常用的相似性度量作一个总结。 本文…

EF中DB First模式下数据库中表结构变化时如何快速同步到EF模型中

没想到什么好的精准的办法&#xff0c;持续的报错&#xff0c;然后定位报错很是头疼。我目前感觉较快方式有两种&#xff0c;如果有更好的方式&#xff0c;请大家指教。 一、先在数据库中修改表的结构属性&#xff0c;再删除edmx文件中对应的实体类模型&#xff0c;然后再是“从…

HTML5 FileReader API 测试(一)

2019独角兽企业重金招聘Python工程师标准>>> 参考文章 html5之FileReader接口 http://zhangyaochun.iteye.com/blog/1487900 1、FileReader接口的作用&#xff1a; 用来把文件读入内存&#xff0c;并且读取文件中的数据。 2、支持情况 FF3.6| Chrome6 Js代码 /*…

Bootstrap模态框居中显示

Bootstrap默认的模态框不是居中显示的&#xff0c;需要稍微修改下源代码&#xff1a; 1、打开源码bootstrap.js&#xff0c;在里面找到如下代码&#xff1a; 2、在上述代码段落下面增加居中的代码即可&#xff1a; //使弹出框居中。。。var $modal_dialog $(this.$element[0]…

Bootstrap模态框显示时有阴影遮罩层

如下图所示&#xff1a; 有遮罩层在&#xff0c;无法进行任何操作&#xff0c;只需修改默认 z-index 属性即可&#xff1a; .modal-backdrop{z-index:0;}

JQuery Datatables 在Bootstrap tab中列名无法对齐的问题

如下图所示&#xff1a; 增加一句代码即可&#xff1a; $(a[data-toggle"tab"]).on(shown.bs.tab, function (e) {//当切换tab时&#xff0c;强制重新计算列宽$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust();});

C# 值类型与引用类型(1)

1. 主要内容 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 2. 基本概念 C#中&#xff0c;变量是值还是引用仅取决于其数据类型。 C#的基本数据类型都以平台无关的方式来定义&#xff0c;C#的预定义类型并没有内置于语言中&#xff0c;而是内置于.NET …

Bootstrap-select使用说明

背景 Bootstrap-select 是一款基于JQuery的 下拉菜单 插件&#xff0c;支持搜索和多项选择功能&#xff0c;支持Booststrap。 点击这里进入Bootstrap-select中文官方网站 使用效果如下图所示&#xff1a; 常用属性 初始化&#xff1a; <select class"selectpicker…

前端插件——Bootstrap Dual Listbox 简介

背景 Bootstrap Dual Listbox是一款基于Bootstrap的双向select选择框控件&#xff0c;作为对multiple select的扩展&#xff0c;使用起来非常简单&#xff0c;功能也更强大。 参考文章一 参考文章二 使用效果如下图所示&#xff1a; 初始化HTML代码&#xff1a; <div cla…

Fork()概念

对于刚刚接触Unix/Linux操作系统&#xff0c;在Linux下编写多进程的人来说&#xff0c;fork是最难理解的概念之一&#xff1a;它执行一次却返回两个值。 首先我们来看下fork函数的原型&#xff1a; &#xff03;i nclude <sys/types.h> &#xff03;i nclude <unistd.…

Nsis打包exe

2019独角兽企业重金招聘Python工程师标准>>> 这里用nsis的eclipse插件来打包exe。插件地址&#xff1a;http://eclipsensis.sf.net/update 安装完毕之后创建一个java程序&#xff0c;导出一个可执行的jar文件&#xff0c;名字JavaApp.jar。现在开始准备打包制作安装…

借助波音公司打造优秀按单制造(MTO II)管理系统

博主推荐延展咨询资深顾问王晓东文章近些年随着市场竞争的加剧&#xff0c;制造业产业链越来越关注客户的需求&#xff0c;针对客户个性化需求的按单制造&#xff08;MTO II&#xff09;生产模式在我国企业不断得到应用。按单制造&#xff08;MTO II&#xff09;企业在组织生产…

MyEclipes 设置代码自动提示

一、Window ——> Preferences 二、Java ——> Editor ——> Content Assist 三、更改内容为 【.qwertyuiopasdfghjklzxcvbnm 】&#xff0c;完成。

jQuery-input输入框下拉提示层

效果图 代码部分 // JavaScript Document (function($){$.fn.extend({"changeTips":function(value){value $.extend({divTip:""},value)var $this $(this);var indexLi 0;//点击document隐藏下拉层$(document).click(function(event){if($(event.targe…

MyEclipes 2016 CI 6 安装

一、双击安装包&#xff0c;打开&#xff0c;点击“Next” 二、 同意&#xff0c;Next 三、选择安装路径&#xff0c;然后点击Next 四、选择32位或者是64位后&#xff0c;点击Next开始安装。 五、去掉立即运行这个勾&#xff0c;点击完成。 六、找到破解目录文件&#xff0c;全…