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脚本批量下载DesktopNexus壁纸的教程
May 06 Python
python中set常用操作汇总
Jun 30 Python
python unittest实现api自动化测试
Apr 04 Python
opencv python 傅里叶变换的使用
Jul 21 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
python实现的读取网页并分词功能示例
Oct 29 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 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
模仿OSO的论坛(三)
2006/10/09 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
jQuery 位置插件
2008/12/25 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
python中reload(module)的用法示例详解
2017/09/15 Python
Python实现的桶排序算法示例
2017/11/29 Python
python logging.info在终端没输出的解决
2020/05/12 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
机械专业应届生求职信
2013/09/21 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
小学新学期教师寄语
2014/01/18 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
主办会计岗位职责
2014/03/13 职场文书
农村党员一句话承诺
2014/05/30 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python