基于中软Linux实现代理服务器与防火墙(2)
2009-05-13 00:57:31来源:未知 阅读 ()
作者:李宇
流量统计
流量统计使用ntop提供的统计功能来实现。ntop在统计过程中,会在内存中创建一个数据列表,即时更新数据信息。同时,它提供定时向数据库中发送相关数据的功能,时间间隔可以在编译前设置。我们可以根据实际需要定义ntop统计的数据。利用ntop提供的向MySQL数据库中更新数据的方法,定期存储数据到备份数据库表中。定期存储数据的功能使用select_test.c实现,同时刷新内存中ntop流量值及ntop默认数据库表。
有了保存于MySQL数据库中的统计数据,通过来用PHP编写动态网页,完成数据库中数据的查询和统计。具体的实现方法比较简单。如果需要了解如何构建Apache+MySQL+PHP完成流量查询,可以在很多Linux技术交流网站查找到相关的技术文档。
由于ntop记录的信息非常详细,有些协议是很少使用的,或是产生的流量比较少,可以忽略不计,所以我们要对ntop记录的数据做一调整。
以下所做的工作有简化数据表结构(保留我们需要的字段,简化保存的数据);创建备份数据库表test;修改ntop源代码中的sql.c,简化默认的ntop向MySQL数据库中添加的数据;编写数据库表数据的备份程序;设定ntop对数据库的刷新时间,保证刷新内存的时间小于我们设定的循环时间(参见ntop.h);将网卡设置为非混杂模式;编写脚本完成循环统计功能。
简化后的数据表结构(mySQLdefs.txt)
CREATETABLEIPtraffic
(
IPaddressCHAR(16)NOTNULL,
TCPsentRemotelyINT,
TCPrcvdFromRemoteINT,
UDPsentRemotelyINT,
UDPrcvdFromRemoteINT,
PRIMARYKEY(IPaddress)
);
CREATETABLENameMapper
(
IPaddressCHAR(16)NOTNULL,
NameCHAR(50),
PRIMARYKEY(IPaddress)
);
创建备份数据库表test
FieldTypeNullKeyDefaultExtra
IPaddressvarchar(20)YESNULL
dataint(11)YESNULL
datesdateYESNULL
修改ntop源代码中的sql.c
例如:
if(snprintf(sqlBuf,SQL_BUF_LEN,"UPDATEIPtrafficSET"
"TCPSentRemotely=%llu,"
"TCPrcvdFromRemote=%llu,"
"UDPSentRemotely=%llu,"
"UDPrcvdFromRemote=%llu"
"WHEREIPaddress='%s'",
(el->tcpSentRemotely),
(el->tcpReceivedFromRemote),
(el->udpSentRemotely),
(el->udpReceivedFromRemote),
el->hostNumIpAddress)<0)traceEvent(TRACE_ERROR,"Bufferoverflow!");
sendto(sqlSocket,sqlBuf,strlen(sqlBuf),0,(structsockaddr*)&dest,
sizeof(dest));
将需要的字段保留,其它的去除!
编写数据库表数据的备份程序select_test.c的编译程序(编译时运行make)
Makefile:
#ThisisaMakefileforselect_test.c
CC=gcc
INCLUDE=-I/usr/include/mysql
LIBPATH=-L/usr/lib/mysql
LLIB=-lmysqlclient
select_test:select_test.c
$(CC)-oselect_testselect_test.c$(INCLUDE)$(LIBPATH)$(LLIB)
数据库表数据备份程序select_test.c:
#include
#include
#include"mysql.h"
#include
#include
#defineSELECT_QUERY "select
IPaddress,(UDPrcvdFromRemote+UDPsentRemotely+TCPrcv
dFromRemote+TCPsentRemotely)asdatafromIPtrafficwhereIPaddresslike
\"%s\"orIPaddresslike\"%s\""
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- RAID 1 软件实现(Linux 系统) 2020-06-10
- php多版本:已存在php5场景下,编译安装php7,实现apache2.2 2020-06-05
- keepalived 实现LVS负载均衡高可用集群(一) 2020-06-04
- centos6.8 防火墙简单操作 2020-06-02
- HeartBeat基础配置(实现Web服务双机热备) 2020-05-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash