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利用hook技术破解https的实例代码
Mar 25 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 Python
python快速排序的实现及运行时间比较
Nov 22 Python
python sorted函数原理解析及练习
Feb 10 Python
python实现处理mysql结果输出方式
Apr 09 Python
Python文件时间操作步骤代码详解
Apr 13 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 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 读取文件乱码问题
2010/02/20 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
php框架知识点的整理和补充
2021/03/01 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python实现线程状态监测简单示例
2018/03/28 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
工程材料采购方案
2014/05/18 职场文书
基层党员对照检查材料
2014/09/24 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
邀请书格式范文
2015/02/02 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书