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的print用法示例
Feb 11 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
python中set()函数简介及实例解析
Jan 09 Python
Python中装饰器学习总结
Feb 10 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
基于 Python 实践感知器分类算法
Jan 07 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
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
php实现分页显示
2015/11/03 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
js给selected添加options的方法
2015/05/06 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
python实现交并比IOU教程
2020/04/16 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
结束运行python的方法
2020/06/16 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
农村婚礼主持词
2014/03/13 职场文书
广告词串烧
2014/03/19 职场文书
施工协议书范本
2014/04/22 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
元宵节寄语大全
2015/02/27 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技