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实现Linux下守护进程的编写方法
Aug 22 Python
bat和python批量重命名文件的实现代码
May 19 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
python学习之matplotlib绘制散点图实例
Dec 09 Python
python学生管理系统学习笔记
Mar 19 Python
python的依赖管理的实现
May 14 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
Python如何输出警告信息
Jul 30 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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
php反弹shell实现代码
2009/04/22 PHP
PHP基础知识回顾
2012/08/16 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python去掉字符串中重复字符的方法
2014/02/27 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
python实现名片管理器的示例代码
2019/12/17 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
详解Flask前后端分离项目案例
2020/07/24 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
中学生个人自我评价
2014/02/06 职场文书
幼儿园大班教师评语
2019/06/21 职场文书