第2节 storm路由器项目开发:1 - 7、网络路由器项目
网安需求:
1:IFTTT:随着物联网的兴起,if this then that 。如果出现这种情况,那么及时反映做出对应的操作。
判断手机号黑白名单,mac地址黑白名单。如果是碰到手机号或者mac地址黑名单,需要立即报警,通知当地网安部门。实现实时的黑白名单过滤。
2:路由器数据上报的方式:每三分钟上报一次,将最近三分钟所有人上网的情况以txt格式的形势进行上报。因为上传比较频繁,所以上传的数据全部都是以小文件的形势进行上传的,基本上不会有超过1M的文件。
且要保证做到所有的数据不丢不漏,不重不错。所有上报的数据需要能够做到立即查询。
3:所有的历史数据保存两年,且可供两年查询
商用路由器商户业务需求(新增)
1. 实时查看附近的人流量有多少(实时处理任务。)
2. 每天每小时入店上网人数有多少,统计出哪几个小时属于人流量高峰期(批量处理任务)
3. 实时查看路由器周边一百米,三百米,五百米,一千米,三千米,五千米的人流量 (路由器周边人流量,实时处理任务。)
数据查询部分:使用的是mongoDB+ES的形式做数据查询。
数据平台架构:
需要考虑的地方:1.每天的数据量有多少
2.服务器的配置,包括网卡,CPU,内存,硬盘。
3.数据实时处理,选用哪种技术(考虑低成本,可维护)
4.数据批量处理,选用哪种技术(考虑低成本,可维护)
数据量情况:每天数据量大概在100G左右,全部都是以FTP小文件的形式进行上传。线上大概有8000台路由器(包括商户上网路由器+mac嗅探设备)
嗅探功能:以低于时速120KM/h + 开启移动端无线网 ==》可以获取到你的手机mac
大数据平台的架构设计:
一共七台机器:
两台主节点:64G内存+12T硬盘+内网千兆网卡。
五台从节点配置: 32G内存+12T硬盘+内网千兆网卡。
指定一台机器开通FTP,路由器以FTP方式上报小文件到服务器上面。启动一个Java线程实时读取目录下面上传的文件。
问题一:如何确认文件已经上传完成
问题二:文件的合并过程。
问题三:错误数据过滤。硬件上报的数据,很多都可能会出现错误数据的情况。
问题四: 每天晚上十二点的时候,不管合并数据量多大,都要上传
=======================================================
Storm第三天路由器数据监控
1、项目背景介绍:
随着路由器上网的普及,越来越多的人在各个场合选择使用路由器上网,特别是在一些公共场所,例如网吧,酒店,饭店,旅馆,宾馆,洗浴中心等。这些公共场所的网络安全也日益受到各地网安的关注,各种问题也日益凸显。
如何鉴别上网人员的身份问题?
如何通过路由器来解决人群聚集的问题?
如何对上网人员的身份进行追踪?
如何通过公共路由器来获取指定人员的行动轨迹?
如何获取上网人员的网络内容?
等等这些问题都困扰着各地的网安部门。为此我司特为各地网安推出定制化的路由器,在网安指定的公共地点安装我司的路由器,可以追踪每个人的上网情况,通过路由器或者嗅探设备的mac地址以及经纬度的追踪,可以定位每个人员的上网大致方位,了解每个人的上网内容,做到实时的网页内容监控,地理位置的监控,上网设备的mac地址追踪,通过嗅探设备,实现上网设备的实时路线追踪,为各地网安解决各种定制化的任务。
时速小于90KM/小时,并且开着无线网,嗅探设备就能抓到你的mac地址
2、项目数据处理流程
3、数据类型梳理
1、终端mac记录:
YT1013 MAC地址抓取记录表 "audit_mac_detail_" 表 length 25
获取到的所有的mac地址都会存入这种类型的文件中
YT1013=iumac,idmac,area_code,policeid,sumac,sdmac,datasource,netsite_type, capture_time, netbar_wacode, brandid, cache_ssid,terminal_filed_strength,ssid_position,access_ap_mac,access_ap_channel,access_ap_encryption_type,collection_equipment_id,collection_equipment_longitude,collection_equipment_latitude,wxid,province_code,city_code,typename,security_software_orgcode
2、虚拟身份记录
YT1020 虚拟身份抓取记录表 virtual_detail表 length 22
获取到所有的虚拟身份都会存入这种类型的文件中
YT1020=mobile,iumac,idmac,area_code,policeid,netsite_type,sumac,account_type,soft_type,sdmac,netbar_wacode,sessionid,ip_address,account,capture_time,collection_equipment_id,wxid,province_code,city_code,datasource,typename,security_software_orgcode
3、终端上下线记录
YT1023 终端上下线记录表 wifi_online表 length 51
获取到所有的终端上下线的记录都会存入到这种类型的文件中
YT1023=iumac,idmac,area_code,policeid,netsite_type,capture_time,sumac, sdmac, netbar_wacode,auth_type,auth_account, collection_equipment_id,datafrom, start_time,end_time,ip_address,src_ip,src_port_start,src_port_end,src_port_start_v6,src_port_end_v6,dst_ip,dst_ip_ipv6,dst_port,dst_port_v6,certificate_type,certificate_code,app_company_name,app_software_name,app_version,appid,src_ipv6,longitude,latitude,sessionid,terminal_fieldstregth,x_coordinate,y_coordinate,name,imsi,imei_esn_meid,os_name,brand,model,network_app,port,wxid,province_code,city_code,typename,security_software_orgcode
4、搜索关键字记录
YT1033 搜索关键字记录表 searchkey_detail表 length 21
获取到所有的搜索记录关键字都会存入到这种类型的文件中
YT1033=iumac,idmac,area_code,policeid,netsite_type,capture_time,sumac,sdmac,netbar_wacode,src_ip,src_port,dst_ip,dst_port,search_groupid,http_domain,search_keyword,wxid,province_code,city_code,typename,security_software_orgcode
5、网页访问记录
YT1034 网页访问记录表 webpage_detail 表 length 24
获取到所有的网页访问记录都会存入到这种类型的文件中
YT1034=iumac,idmac,area_code,policeid,netsite_type,capture_time,sumac,sdmac,netbar_wacode,src_ip,src_port,dst_ip,dst_port,http_method,http_domain,http_action_match,web_url,http_categoryid,web_title,wxid,province_code,city_code,typename,security_software_orgcode
4、模拟数据产生
创建两个文件夹
mkdir -p /export/datas/destFile # 拷贝后的文件
mkdir -p /export/datas/sourceFile #源文件
详见资料当中的filegenerate.jar
java -jar filegenerate.jar /export/datas/sourceFile/ /export/datas/destFile 1000
5、创建kafka的topic
bin/kafka-topics.sh --create --replication-factor 2 --topic wifidata --zookeeper node01:2181,node02:2181,node03:2181 --partitions 6
6、定义flume配置文件并启动flume
配置kafka配置文件wifi.conf
#为我们的source channel sink起名
a1.sources = r1
a1.channels = c1
a1.sinks = k1
#指定我们的source收集到的数据发送到哪个管道
a1.sources.r1.channels = c1
#指定我们的source数据收集策略
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /export/datas/destFile
a1.sources.r1.deletePolicy = immediate
a1.sources.r1.ignorePattern = ^(.)*\\.tmp$
#指定我们的channel为memory,即表示所有的数据都装进memory当中
a1.channels.c1.type = memory
#指定我们的sink为kafka sink,并指定我们的sink从哪个channel当中读取数据
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = wifidata
a1.sinks.k1.kafka.bootstrap.servers = node01:9092,node02:9092,node03:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
启动flume程序
bin/flume-ng agent -n a1 -c conf -f /export/servers/apache-flume-1.8.0-bin/conf/wifi.conf -Dflume.root.logger=INFO,console
7、创建maven工程并导入相应的jar包
8、开发我们的WifiTypeBolt
过滤掉字段不同的一些脏数据
9、开发我们的WifiWarningBolt
实时告警我们的mac黑名单,手机号码黑名单等
10、开发我们的WriteFileBolt
文件合并到本地一定大小之后,就将数据上传到hdfs上面去
11、程序main函数入口
详见代码。
第2节 storm路由器项目开发:1 - 7、网络路由器项目的更多相关文章
- Android项目开发全程(三)-- 项目的前期搭建、网络请求封装是怎样实现的
在前两篇博文中已经做了铺垫,下面咱们就可以用前面介绍过的内容开始做一个小项目了(项目中会用到Afinal框架,不会用Afinal的童鞋可以先看一下上一篇博文),正所谓麻雀虽小,五脏俱全,这在里我会尽量 ...
- Vue/Egg大型项目开发(一)搭建项目
项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...
- 第5季-小试牛刀-项目开发\阶段2-新手上路\项目-移动物体监控系统\Sprint0-产品设计与规划
lesson1---产品功能展示 先完成准备阶段,准备阶段要做的事情: a.项目经理选择团队, b.根据项目用户需求以及同类型的实物,制定产品功能列表 c.根据功能的难易程度,制定迭代周期以及在每周期 ...
- iOS项目开发实战——iOS网络编程获取网页Html源码
现在我们身处互联网的时代.不论什么一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比較low,这里我们将会開始使用Swift开发iOS应用,而且主要来 ...
- SpringMVC+Hibernate 项目开发之三 (创建SpringMVC项目)
引用(很全面了):http://blog.csdn.net/dhx20022889/article/details/38041039 我只想说默认创建的项目使用的Spring版本可能不是你想要的,可以 ...
- weex 项目开发(六)weexpack 项目 打包、签名、发布
一. weexpack build android 和 weexpack run android 的 区别. (1)单纯打包 weexpack build android (2)打包并运行 wee ...
- react后台项目开发(一)
1. 项目开发准备 描述项目 技术选型 api 接口(4部分:3请求{url,请求方式,请求参数格式}, 1响应数据格式)/ 接口文档/ 测试接口 2. 启动项目开发 使用react脚手架创建项目 开 ...
- Android项目开发全程(四)-- 将网络返回的json字符串轻松转换成listview列表
前面几篇博文介绍了从项目搭建到获取网络字符串,对一个项目的前期整体工作进行了详细的介绍,本篇接着上篇介绍一下怎么样优雅将网络返回的json字符串轻松转换成listview列表. 先上图,看一下效果. ...
- 四:DRF项目开发的准备
一: 虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就 ...
- 《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
<ASP.NET Core项目开发实战入门>从基础到实际项目开发部署带你走进ASP.NET Core开发. ASP.NET Core项目开发实战入门是基于ASP.NET Core 3.1 ...
随机推荐
- try catch和if else
当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息.描述这种情况的技术术语是:JavaScript 将抛出一个错误. try 语句允许我们定义在执行时进行错误测试的 ...
- 解决IDEA快捷键 Alt+Insert 失效的问题
现象 IDEA快捷键 Alt+Inser 失效,单击右键也不出现[Generate]. 这个问题经常出现在重新安装IDEA后. 原因 缺少2个插件 解决办法 在setting中启用这2个插件即可.这2 ...
- Docker 安装 Kibana
使用和 elasticsearch 相同版本镜像 7.4.1 (不一样可能会出现问题) 1.下载Kibana镜像 # 下载Kibana镜像 docker pull kibana: # 查看镜像 do ...
- 字符串操作函数:JSON.parse()与JSON.stringify()的区别,字符串转数组 str.split(','),数组转字符串String(),以及对象拼接合并Object.assign(),数组拼接合并concat()
1.JSON.parse() 把字符串转化为 json 对象 例如 arr={ , "site":"www.runoob.com" } var obj = J ...
- mysql 官方读写分离方案
mysql 8.0 集群模式下的自动读写分离方案 问题 多主模式下的组复制,看起来挺好,起始问题和限制很多.而且中断一个复制就无法配置了 多主模式下,innodbcluster 等于是无用的,不需要自 ...
- opencv人脸识别提取手机相册内人物充当数据集,身份识别学习(草稿)
未写完 采用C++,opencv+opencv contrib 4.1.0 对手机相册内人物opencv人脸识别,身份识别学习 最近事情多,介绍就先不介绍了 photocut.c #include & ...
- 一个不会coding的girl Linux日常之命令awk
Linux日常之命令awk 参考:http://www.zsythink.net/archives/tag/awk/ 一. 命令awk简介 1. awk是一种编程语言,用于对文本和数据进行处理的 2. ...
- np.ndarray与PIL.Image对象相互转换
Image对象有crop功能,也就是图像切割功能,但是使用opencv读取图像的时候,图像转换为了np.adarray类型,该类型无法使用crop功能,需要进行类型转换,所以使用下面的转换方式进行转换 ...
- 在abp core中出现运行项目时EF获取到的appsetting.json或者appsettings.Production.json中的连接字符串为空
原因:有可能是生成的bin或者debug文件夹下没有将appsetting.json或者appsettings.Production.json文件生成过去 解决方法:手动拷贝过去,或者设置成自动生成过 ...
- Primecoin服务端更新--操作流程
Primecoin服务端更新流程: 一.下载更新文件primecoin_x.y.z_xx.zip到/servers目录下:这里是把:版本primecoin0161alpha1更新到:版本primec ...