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使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
浅析python中的分片与截断序列
Aug 09 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
django 扩展user用户字段inlines方式
Mar 30 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 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导出oracle库的php代码
2009/04/20 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
Django中URL的参数传递的实现
2019/08/04 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
技校生自我鉴定
2013/12/08 职场文书
军训学生自我鉴定
2014/02/12 职场文书
公司委托书范本
2014/04/04 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
html粘性页脚的具体使用
2022/01/18 HTML / CSS