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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
python局部赋值的规则
Mar 07 Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
基于Python解密仿射密码
Oct 21 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python实现粒子群算法
Oct 15 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 Python
python Tkinter的简单入门教程
Apr 11 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/04/24 PHP
浅析php单例模式
2014/11/25 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
golang与PHP输出excel示例
2016/07/22 PHP
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python 基础知识之字符串处理
2017/01/06 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
Django实现简单的分页功能
2021/02/22 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
安全生产管理合理化建议书
2014/03/12 职场文书
红色电影观后感
2015/06/18 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技