博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计中心机房与各地域ip(连接)分布情况
阅读量:5945 次
发布时间:2019-06-19

本文共 4760 字,大约阅读时间需要 15 分钟。

hot3.png

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]}}}]

                ]

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

功能验证:
05025145_qvXF.jpg

能看到各个地域到无锡的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 )

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

转载于:https://my.oschina.net/eddylinux/blog/526074

你可能感兴趣的文章
HRMS(人力资源管理系统)-SaaS架构设计-概要设计实践
查看>>
SpringMVC没有接受到参数的坑
查看>>
计算世界里的抽象
查看>>
Maven项目中读取src/main/resources目录下的配置文件
查看>>
Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)
查看>>
Java 8 – How to sort a Map
查看>>
管道(Pipelines)模型
查看>>
微信小程序如何获取屏幕宽度
查看>>
Windows下使用VS2017搭建FLTK开发环境
查看>>
C#动态调用泛型类、泛型方法
查看>>
002.AnyCast技术浅析
查看>>
个人管理 - 学习=知识+实践+思考+心态
查看>>
命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)...
查看>>
Result consisted of more than one row
查看>>
莫名其妙的“网线未连接”
查看>>
mysql权限
查看>>
简单操作IL文件
查看>>
[LeetCode] Paint Fence
查看>>
SQL SERVER2005 中的错误捕捉与处理
查看>>
Fedora16 安装Adobe Flash Player方法
查看>>