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 相关文章推荐
numpy中索引和切片详解
Dec 15 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
django 简单实现登录验证给你
Nov 06 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
Python内置异常类型全面汇总
May 28 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
python flask框架快速入门
May 14 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中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
PHP CURL使用详解
2019/03/21 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
详解JS面向对象编程
2016/01/24 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
python实现查询IP地址所在地
2015/03/29 Python
python中使用while循环的实例
2019/08/05 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
python如何查看网页代码
2020/06/07 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
员工考核管理制度
2014/02/02 职场文书
客户答谢会活动方案
2014/08/31 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2016年春节慰问信息
2015/03/25 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js