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多进程编程技术实例分析
Sep 16 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 Python
python设置代理和添加镜像源的方法
Feb 14 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
python代码xml转txt实例
Mar 10 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
Python图像处理库PIL详细使用说明
Apr 06 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP实现验证码校验功能
2017/11/16 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
Jquery 扩展方法
2010/05/06 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
javascript实现固定侧边栏
2021/02/09 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python基于openpyxl生成excel文件
2020/12/23 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
我的理想演讲稿
2014/04/30 职场文书
公司财务管理制度
2015/08/04 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python