文档章节

统计中心机房与各地域ip(连接)分布情况

eddy_linux
 eddy_linux
发布于 2015/11/05 02:51
字数 957
阅读 22
收藏 0

1.格式化收集的ip数据
原始数据

[root@puppetmaster ip_list]# head wuxi_ip_list_20150506.txt 

192.168.1.1 四川省 1公司

192.168.1.2 四川省 2公司

192.168.1.3 四川省 3公司

192.168.1.4 四川省 4公司

192.168.1.5 四川省 5公司

192.168.1.6 四川省 6公司

192.168.1.7 四川省 7公司

192.168.1.8 四川省 8公司

192.168.1.9 四川省 9公司

192.168.1.10 四川省 10公司
 

awk '{print $1","$2","$3",""无锡"}' wuxi_ip_list_20150506.txt >> wuxi_ip_list_20150506.csv

awk '{print $1","$2","$3",""西安"}' xian_ip_list_20150506.txt >> xian_ip_list_20150506.csv

2.建立数据库与表

mysql> create database ip;

mysql> create table ip_list(ip varchar(50),province varchar(50),company varchar(50),node varchar(50),date timestamp);

mysql> desc ip_list;

+----------+-------------+------+-----+-------------------+-----------------------------+

| Field    | Type        | Null | Key | Default           | Extra                       |

+----------+-------------+------+-----+-------------------+-----------------------------+

| ip       | varchar(50) | YES  |     | NULL              |                             |

| province | varchar(50) | YES  |     | NULL              |                             |

| company  | varchar(50) | YES  |     | NULL              |                             |

| node     | varchar(50) | YES  |     | NULL              |                             |

| date     | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

+----------+-------------+------+-----+-------------------+-----------------------------+

3.导入数据库

root@puppetmaster ip_list]# cat load_xian.sql 

load data local infile '/root/map1/ip_list/xian_ip_list_20150506.csv'

into table ip_list

fields terminated by ',' enclosed by '"'

root@puppetmaster ip_list]# cat load_wuxi.sql 

load data local infile '/root/map1/ip_list/xian_ip_list_20150506.csv'

into table ip_list

fields terminated by ',' enclosed by '"'

[root@puppetmaster ip_list]# mysql -uip -pip ip  < load_xian.sql 

[root@puppetmaster ip_list]# mysql -uip -pip ip  < load_wuxi.sql 

4.项目目录结构描述

├── autoload.sh 周期重载后端程序

├── hello.py     flask主文件

├── ip_list      ip处理

│  ├── load_wuxi.sql

│  ├── load_xian.sql

│  ├── wuxi_ip_list_20150506.csv

│  ├── wuxi_ip_list_20150506.txt

│  ├── xian_ip_list_20150506.csv

│  └── xian_ip_list_20150506.txt

├── static   静态资源文件

│  ├── css

│  ├── fonts

│  └── js

├── templates   模板文件

│  └── index.html

5.主文件说明

#!/usr/bin/env python

# coding=utf8

import sys 

reload(sys) 

sys.setdefaultencoding('utf-8')

import MySQLdb

from flask import Flask,render_template,request

app = Flask(__name__)

conn = MySQLdb.connect(host='192.168.1.102',port=3306,user='ip',passwd='ip',db='ip',)

cur = conn.cursor()

wuxi_ip=[]

xian_ip=[]

wuxi_province=[]

xian_province=[]

wuxi_company=[]

xian_company=[]

wuxi_node=[]

xian_node=[]

wuxi_date=[]

xian_date=[]

def select_wuxi():

    cur.execute('select count(*) as ip,province from ip_list where node="wuxi" group by province')

    numrows = int(cur.rowcount)

    for all_data in range(numrows):

       row = cur.fetchone()

       wuxi_ip.append((row[0]))

       wuxi_province.append((row[1]))

def select_xian():

    cur.execute('select count(*) as ip,province from ip_list where node="xian" group by province')

    numrows = int(cur.rowcount)

    for all_data in range(numrows):

       row = cur.fetchone()

       xian_ip.append((row[0]))

       xian_province.append((row[1]))

    cur.close()

    conn.commit()

    conn.close()

select_wuxi()

select_xian()

@app.route('/index.html')

def index():

    return render_template('2.html',wuxi_ip=wuxi_ip,wuxi_province=wuxi_province,xian_ip=xian_ip,xian_province=xian_province)

if __name__ == '__main__':

    app.run(host="0.0.0.0", port=8888, debug=True)

6.模板文件说明

这里代码太多就不贴出来了就贴出最关键的就行了

data : [

                    [{name:'无锡'},{name:'福州',value:{{wuxi_ip[0]}}}],

                    [{name:'无锡'},{name:'成都',value:{{wuxi_ip[1]}}}],

                    [{name:'无锡'},{name:'南宁',value:{{wuxi_ip[2]}}}],

                    [{name:'无锡'},{name:'广州',value:{{wuxi_ip[3]}}}],

                    [{name:'无锡'},{name:'乌鲁木齐',value:{{wuxi_ip[4]}}}],

                    [{name:'无锡'},{name:'武汉',value:{{wuxi_ip[5]}}}],

                    [{name:'无锡'},{name:'长沙',value:{{wuxi_ip[6]}}}]

                ]

核心就是把获取的值通过变量传递给前端进行展示,由于这里是地图展示把地点写死了的,当然也可以传递进地点变量值,我这里是偷懒了,主要是为了验证功能

功能验证:


能看到各个地域到无锡的ip数目有多少

 查询数据库

mysql> select count(*) as ip,province from ip_list where node="wuxi" group by province;

+-----+-----------+

| ip  | province  |

+-----+-----------+

| 150 | 福建省 |

| 254 | 四川省 |

| 254 | 广西省 |

| 254 | 广东省 |

|  32 | 新疆省 |

| 254 | 湖北省 |

| 254 | 湖南省 |

+-----+-----------+

7 rows in set (0.00 sec) 

 数据一致
 
当后端数据更新时会有重载脚本检测,并进行重载,前端自动刷新,这样就可以实时展示。
 这里我手动插入一条

mysql> insert into ip_list (ip,province,company,node) values ("192.168.117.121","新疆省","11311","wuxi");

Query OK, 1 row affected (0.00 sec)

mysql> select count(*) as ip,province from ip_list where node="wuxi" group by province;

+-----+-----------+

| ip  | province  |

+-----+-----------+

| 150 | 福建省 |

| 254 | 四川省 |

| 254 | 广西省 |

| 254 | 广东省 |

|  33 | 新疆省 |

| 254 | 湖北省 |

| 254 | 湖南省 |

+-----+-----------+

7 rows in set (0.00 sec )

 


问题:1.我这里采用的前端刷新有两种:一种是js,一种是采用的一个浏览器自动刷新插件 (懒 - - ) ,但是刷新的时候会有闪烁,需要后期解决。
            2.历史数据对比
            3.导出excel表
总结:采用python+flask+echarts+mysql,使用python的MySQLdb模块读取数据库数据,采用flask+echarts做展示,mysql做数据存储,数据格式化没有用什么高大上的,就是系统自带命令。


© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 19
博文 135
码字总数 188789
作品 0
成都
程序员
腾讯安全云鼎实验室:2018上半年互联网 DDoS 攻击趋势分析

     2018年上半年 DDoS 攻防仍如火如荼发展,以 IoT 设备为反射点的 SSDP 反射放大尚未平息,Memcached DDoS 又异军突起,以最高可达5万的反射放大倍数、峰值可达1.7 Tbps 的攻击流量成...

FreeBuf
06/11
0
0
腾讯云发布2018上半年DDoS攻击分析:较多攻击游戏医疗和江浙两省

     大数据文摘专栏   本文投稿自腾讯安全云鼎实验室   2018年上半年 DDoS 攻防仍如火如荼发展,以 IoT 设备为反射点的 SSDP 反射放大尚未平息,Memcached DDoS 又异军突起,以最高...

大数据文摘
06/14
0
0
骨干网链路异常?还是机房侧异常?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/g2V13ah/article/details/82504306 作者简介 小拳拳 百度云高级研发工程师 负责百度云智能运维Noah外网质量监...

AIOps智能运维
09/07
0
0
腾讯云-------------地域和可用区

前言: 云服务器是基于物理服务器虚拟化来实现的产物,物理服务器可以分布在全球的多个地方,这些不同的地方都是由地域(region)和可用去(zone)构成。 并且每个地域(region)是一个独立的...

Yfblog
2017/12/16
0
0
企业上云最好时机之机房和BGP带宽篇(四)

小编打算边用一些阿里云官方文档提供的文字描述,再加上自己的理解,尽量用白话来进行比较,并提醒一些值得注意的地方。 1.jpg 国内地域 地域通常按照数据中心所在的城市进行划分,比如说华东...

小宙
01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
9
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部