python脚本 + falcon数据 = 测算磁盘是否满足需求
2017-02-13 17:46
525 查看
随着业务的上量,日志的增加,最先达到硬件资源瓶颈的也许就是硬盘,传统的手工观察磁盘监控曲线图直观,大方,但是多机器的时候就有点累了;而且单纯靠人测算的很有误差。
![](http://img.blog.csdn.net/20170213173918882?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJhc3BkZWxwaGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20170213173940392?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJhc3BkZWxwaGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20170213173955210?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmJhc3BkZWxwaGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
哈哈,多了一个武器,下次再测算就方便多了。
手工计算
脚本 根据一天数据计算
脚本 根据三天数据计算
脚本如下
#!/usr/bin/env python #-*- coding:utf8 -*- import requests import time import json import scipy from scipy import stats # reference # http://www.bkjia.com/Pythonjc/834245.html # http://blog.csdn.net/cskchenshengkun/article/details/45790411 # http://www.168seo.cn/python/2379.html # 定义获得指定取件的数值 def getData(start,end,endpoint,counter,incr=0): d = { "start": start, "end": end, "cf": "AVERAGE", "endpoint_counters": [ { "endpoint": "%s"%endpoint, "counter": "%s"%counter, }, ], } query_api = "http://xxx:9966/graph/history" r = requests.post(query_api, data=json.dumps(d)) #print r.text a = json.loads(r.text) #print a valueinterval = (a[0]['Values'][1]['timestamp'] - a[0]['Values'][0]['timestamp'])/60 print valueinterval list = [] for b in a[0]['Values']: if b['value'] > 0: list.append(b['value']/valueinterval) else: #print b['value'] pass # 如果incr是1,那么再加一步骤,做个differ if incr == 1: list1 = [] for i in range(1,len(list)): differValue = list[i] - list[i-1] if differValue > 0: list1.append(differValue) #print list #print list1 list = list1 return list # 求 调和平均数 def getAvg(day,endpoint,metric,incr=0): end = int(time.time()) start = end - 3600 * 24 * day list = getData(start,end,endpoint,metric,incr) #print "主机:%s 指标:%s的增长率是:"%(endpoint,metric), #print "调和平均数:%s"%(stats.hmean(list)) return stats.hmean(list) #return stats.gmean(list) # 获取过去一天的数据 def userDefine(day,ips,metric,incr=0): result = [] for ip in ips: value = getAvg(day,ip,metric,incr) result.append(value) return result ips = [] ips.append("10.0.100.85") day = 3 result1 = [] metric = "df.bytes.used.percent/fstype=ext4,mount=/" result1=userDefine(day,ips,metric,1) result2 = [] metric = "df.bytes.used/fstype=ext4,mount=/" result2=userDefine(day,ips,metric,1) print ips print result1 print result2 print """ | 主机 | 磁盘占用/分钟(%) | 磁盘占用/小时(%)| 磁盘占用/天(%)| 磁盘新增占用/分钟(Byte)| 磁盘新增占用/分钟(KByte) |磁盘新增占用/小时(KByte) | 存储7天需要(GByte) | 目前量可以维持几天 | | -- | -- |-- |-- |-- |-- | -- |-- | -- |""" for i in range(0,len(ips)): print """| %s | %s | %s | %s | %s | %s | %s | %s | %s |"""%(ips[i],round(result1[i],5),round(result1[i],5)*60,round(result1[i],5)*1440,round(result2[i],2),round(result2[i],2)*60,round(result2[i],2)*1440, round(result2[i]*1440*7/1000/1000/1000,0),round(80/result1[i]/1440))
哈哈,多了一个武器,下次再测算就方便多了。
相关文章推荐
- 产品的价值是否就是满足用户需求?
- 产品的价值是否就是满足用户需求? 推荐
- C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
- python 获取脚本传递参数 及参数个数 检查文件 变量 是否存在 退出脚本
- Q:目前我需要开发PCI接口的驱动程序,并且能支持非常高速的中断响应,请问WinDriver是否可以满足此需求呢?
- "磁盘未被格式化,是否格式化"数据灾难应急方案
- Python-mysql 抽取数据 脚本
- python脚本检测linux进程是否运行
- python 导数据脚本
- "磁盘未被格式化,是否格式化"数据灾难应急方案
- 三种模式满足PACS数据及影像归档存储需求
- 需求驱动学习之Python(如何编写Python脚本替换文件中的多行字符?)
- 你需求的数据,是否可以自动流动?
- Python 监控 DB 服务器信息(cpu, 磁盘,进程,alert log) 脚本
- 产品的价值是否就是满足用户需求?
- Python脚本检测网站链接是否存在
- python小脚本之 数据导入
- Python 监控 DB 服务器信息(cpu, 磁盘,进程,alert log) 脚本
- 用代码生成器生成的DAL数据访问操作类 基本满足需求了
- 验证数据是否满足正态分布——Q-Q图和P-P图