python+influxdb+shell编写区域网络状况表


Posted in Python onJuly 27, 2018

本文为大家分享了python+influxdb+shell写一个区域网络状况表,供大家参考,具体内容如下

shell脚本部分:

python+influxdb+shell编写区域网络状况表

ex:就是ping 各个目的ip10个包,然后获取丢包率和平均延迟时间,在Linux上设置为定时任务,每分钟执行一次。他会把数据写到influxdb服务器上面去,表示hk_vnloss和hk_vn01rtt,字段是loss和rtt,其他各区域的都是类似。

python代码部分:

1、在Django项目的setting里面,配置influxdb数据库连接;

ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'network_ping.apps.NetworkPingConfig',
  'influxdb_metrics',
]

##influxdb
INFLUXDB_HOST = 'influxdb服务器ip'
INFLUXDB_PORT = 'influxdb port'
INFLUXDB_USER = 'influxdb username'
INFLUXDB_PASSWORD = 'influxdb passwd'
INFLUXDB_DATABASE = 'influxdb database'
INFLUXDB_TIMEOUT = 36000

2、从influxdb数据库查询保存的loss和rtt数据;

from influxdb_metrics.utils import query


def get_loss(tab_name):
  loss_res = query('SELECT * FROM %s ORDER BY time DESC limit 1' % tab_name)
  loss = [res for res in loss_res]
  return loss

3、把数据传到web页面;

##network ping loss
def network_ping(request):
  # vn01 ping vn01
  vnloss01 = get_loss('vnloss')
  # vn01 ping vn02
  vnloss02 = get_loss('vn02loss')
  # vn01 ping th
  thloss = get_loss('thloss')
  # vn01 ping id
  idloss = get_loss('idloss')
  # vn01 ping sg
  sgloss = get_loss('sgloss')
  # vn01 ping tw
  twloss = get_loss('twloss')
  # vn01 ping hk
  hkloss = get_loss('hkloss')
  # vn01 ping sh
  shloss = get_loss('shloss')
  return render(request, 'net_ping.html',
         {'vn01': {
           'vnloss01': vnloss01,
           'vnloss02': vnloss02,
           'thloss': thloss,
           'hkloss': hkloss,
           'idloss': idloss,
           'sgloss': sgloss,
           'twloss': twloss,
           'shloss': shloss
         },...)

4、在web页面获取进行展示;

<tr>
  <td bgcolor="#f0f8ff" class="titlestyle">VN-01<br/>45.119.241.249</td>
  <td tloss={{ vn01.vnloss01.0.0.loss }}></td>
  <td tloss={{ vn01.vnloss02.0.0.loss }}></td>
  <td tloss={{ vn01.thloss.0.0.loss }}></td>
  <td tloss={{ vn01.idloss.0.0.loss }}></td>
  <td tloss={{ vn01.sgloss.0.0.loss }}></td>
  <td tloss={{ vn01.twloss.0.0.loss }}></td>
  <td tloss={{ vn01.hkloss.0.0.loss }}></td>
  <td tloss={{ vn01.shloss.0.0.loss }}></td>
</tr>

5、js定时刷新页面;

$(function () {
    $("[tloss]").each(function () {
      var loss_res = $(this).attr('tloss');
      if (loss_res < 10) {
        $(this).html('<span class="greentyle"></span><br/>loss: <span bg>' + loss_res);
      } else if (loss_res <= 20) {
        $(this).html('<span class="yellowstyle"></span><br/>loss: ' + loss_res);
      } else {
        $(this).html('<span class="redstyle"></span><br/>loss: ' + loss_res);
      }
    });
    setTimeout("self.location.reload();", 60000);
  })

6、最后的效果展示;

python+influxdb+shell编写区域网络状况表

最后:页面是每分钟定时刷新一次,但这个都是当前ping的loss和rtt值,要想看历史的ping情况,可以搭建一个Grafana,然后Grafana配置数据源为influxdb,就可以查看历史曲线等等,例如:

python+influxdb+shell编写区域网络状况表

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基类函数的重载与调用实例分析
Jan 12 Python
Python提取网页中超链接的方法
Sep 18 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
tensorflow识别自己手写数字
Mar 14 Python
python使用pygame框架实现推箱子游戏
Nov 20 Python
Python 分发包中添加额外文件的方法
Aug 16 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
Python模块相关知识点小结
Mar 09 Python
Python识别验证码的实现示例
Sep 30 Python
TensorFlow 合并/连接数组的方法
Jul 27 #Python
pytorch训练imagenet分类的方法
Jul 27 #Python
使用pytorch进行图像的顺序读取方法
Jul 27 #Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 #Python
pytorch 数据集图片显示方法
Jul 26 #Python
mac安装pytorch及系统的numpy更新方法
Jul 26 #Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 #Python
You might like
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
php将html转为图片的实现方法
2017/05/19 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
JS实现网页时钟特效
2020/03/25 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
python使用配置文件过程详解
2019/12/28 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
Python 多进程原理及实现
2020/12/21 Python
使用python实现学生信息管理系统
2021/02/25 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
Overload和Override的区别
2012/09/02 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
学校课外活动总结
2014/05/08 职场文书
2014离婚协议书范文
2014/09/10 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
python的变量和简单数字类型详解
2021/09/15 Python
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript