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使用心得之获得github代码库列表
Jun 25 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
Python如何生成树形图案
Jan 03 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
由面试题加深对Django的认识理解
Jul 19 Python
python获取引用对象的个数方式
Dec 20 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
通过实例解析Python return运行原理
Mar 04 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 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操作文件方法问答
2007/03/16 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
php无限级分类实现方法分析
2016/10/19 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
ajax异步请求详解
2017/01/06 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
python感知机实现代码
2019/01/18 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
python中使用while循环的实例
2019/08/05 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
详解python的变量缓存机制
2021/01/24 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
2015年远程教育工作总结
2015/05/20 职场文书
实习证明格式范文
2015/06/16 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android