python如何实现统计osd-pg并导出到csv
发表于:2025-02-14 作者:千家信息网编辑
千家信息网最后更新 2025年02月14日,python如何实现统计osd-pg并导出到csv,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。分析当前集群各个OSD的pg分布情况
千家信息网最后更新 2025年02月14日python如何实现统计osd-pg并导出到csv
python如何实现统计osd-pg并导出到csv,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
分析当前集群各个OSD的pg分布情况
import jsonfrom collections import OrderedDictimport csvimport subprocessdef get_pg_dump(): cmd = "ceph pg dump --format=json" out = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) result = out.stdout.readlines()[1].split('\n')[0] return resultcsv_file = './demo.csv' #生成的csv文件路径pg_data = json.loads(get_pg_dump())pg_dict = {}osd_pg_dict = {}for i in pg_data: for j in pg_data['pg_stats']: pg_dict[j['pgid']] = j['up']pool_pg_total = {}osd_pg_num_dict = {}tmp_pool_list = {}tmp_osd_list = {}start_osd = 0start_pool_id = 0all_result = {}for i in pg_dict: pool_id = int(i.split('.')[0]) for osd_id in pg_dict[i]: tmp_pool_list[pool_id] = pool_id tmp_osd_list[osd_id] = osd_idnum_pool = max(tmp_pool_list.iterkeys(), key=lambda k: tmp_pool_list[k]) + 1num_osd = max(tmp_osd_list.iterkeys(), key=lambda k: tmp_osd_list[k]) + 1pool_totol_pg = [0] * num_poolmax_osd_list = [0] * num_poolmin_osd_list = [999] * num_poolmax_osdid_list = ['No_OSD'] * num_poolmin_osdid_list = ['No_OSD'] * num_poolave_osd_list = [0] * num_poolave_osd_list_result = [0] * num_poolmin_osd_per_list = [0] * num_poolmax_osd_per_list = [0] * num_poolfor i in range(0,num_osd): keyname = str(i) all_result[keyname] = [0] * num_poolfor i in pg_dict: pool_id = int(i.split('.')[0]) for osd_id in pg_dict[i]: tmp_keyname = str(osd_id) tmp_list = all_result[tmp_keyname] tmp_list[pool_id] = tmp_list[pool_id] +1for i in all_result: tmp_num = 0 for j in all_result[i]: if j < min_osd_list[tmp_num] and j != 0: min_osd_list[tmp_num] = j min_osdid_list[tmp_num] = i if j > max_osd_list[tmp_num]: max_osd_list[tmp_num] = j max_osdid_list[tmp_num] = i if j != 0: ave_osd_list[tmp_num] = ave_osd_list[tmp_num] + 1 pool_totol_pg[tmp_num] = pool_totol_pg[tmp_num] + j tmp_num = tmp_num + 1for i in range(0,len(ave_osd_list)): if ave_osd_list[i] != 0: ave_osd_list_result[i] = pool_totol_pg[i]/ave_osd_list[i]all_result = OrderedDict(sorted(all_result.items(), key=lambda t: int(t[0])))for i in range(0,num_pool): if max_osd_list[i] != 0: max_osd_per_list[i] = round(100*(max_osd_list[i]-ave_osd_list_result[i])/float(ave_osd_list_result[i]),2)for i in range(0, num_pool): if min_osd_list[i] != 999: min_osd_per_list[i] = round(100 * (min_osd_list[i] - ave_osd_list_result[i])/float(ave_osd_list_result[i]),2)with open(csv_file, 'w') as csvfile: pool_list = [] for i in range(0,num_pool): pool_list.append('pool-'+str(i)) fieldnames = ['osd_name'] + pool_list + ['total'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for i in all_result: tmp_dict = {'osd_name': i,'total':sum(all_result[i])} tmp_num = 0 for j in all_result[i]: keyname = 'pool-' + str(tmp_num) tmp_num = tmp_num + 1 tmp_dict[keyname] = j writer.writerow(tmp_dict) fieldnames = ['SUM'] + pool_totol_pg + [sum(pool_totol_pg)] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['AVE'] + ave_osd_list_result + [sum(ave_osd_list_result)] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['MAX'] + max_osd_list + [sum(max_osd_list)] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['MAX-OSD-ID'] + max_osdid_list writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['MAX-PER'] + max_osd_per_list + [sum(max_osd_per_list)] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['MIN'] + min_osd_list + [sum(min_osd_list)] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['MIN-OSD-ID'] + min_osdid_list writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() fieldnames = ['MIN-PER'] + min_osd_per_list + [sum(min_osd_per_list)] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader()print '---------------------------------------------------------------------------'for i in all_result: print i,all_result[i],sum(all_result[i])print '---------------------------------------------------------------------------'print 'SUM',pool_totol_pgprint 'MAX',max_osd_listprint 'MIN-OSD-ID',max_osdid_listprint 'MIN',min_osd_listprint 'MIN-OSD-ID',min_osdid_listprint 'AVE',ave_osd_list_resultprint 'MIN-PER',min_osd_per_listprint 'MAX-PER',max_osd_per_list
关于python如何实现统计osd-pg并导出到csv问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
问题
统计
更多
分析
帮助
解答
易行
简单易行
内容
小伙
小伙伴
情况
文件
方法
知识
篇文章
行业
资讯
资讯频道
路径
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
字节跳动服务器排名
pubmed数据库谷歌
金融网络安全宣传周报道
网络安全地铁宣传
数据库工程师要掌握什么技术
马来西亚服务器代理
江苏综合软件开发哪家好
大贰软件开发
date存入数据库变数字了
如何保证系统的网络安全性
创建数据库用户
服务器机柜要求
exp导数据库
连接服务器后网速慢
数据库怎么删除
mac管理ftp服务器
数据库版本不同如何还原数据
搭建中转服务器抽水
局网络安全宣传周讲话
数据库打满
网络技术专业都是外包
逃跑吧少年老版本显示服务器断开
网络技术运用到课堂的好处
中国联通移动基站服务器
cas配置数据库
生死狙击2怎么进入服务器
制作数据库设计软件
计算机网络技术专业本学校
美国学生网络安全教育
连接到orcl数据库