查询Ceph的OSD占用内存的脚本

# -*- coding: UTF-8 -*-
import os
import sys
import json
import psutil
import commands
from prettytable import PrettyTable
def main():
   if len(sys.argv) == 1:
       printosdmemtable("table")
   elif sys.argv[1] == 'json':
       printosdmemtable("json")

def printosdmemtable(chosse):
       data_dic = {}
       osd_list={}
       row = PrettyTable()
       row.header = True
       memlist = ["OSD/MEM"]
       memchose = [ 'VIRT','RES']
       for meminfo in memchose:
           memlist.append("%s" %meminfo )
       row.field_names = memlist
       for root, dirs, files in os.walk('/var/run/ceph/'):
           for name in files:
               if "osd"  in name and "pid" in name :
                   osdlist = []
                   osdthlist=[]
                   for osdmem in range(len(memchose)):
                       osdlist.append(" ")
                   pidfile=root+ name
                   osdid=commands.getoutput('ls  %s|cut -d "." -f 2 2>/dev/null'  %pidfile )
                   osdpid = commands.getoutput('cat %s  2>/dev/null' %pidfile)
                   osd_runmemvsz = commands.getoutput('ps -p %s  -o vsz |grep -v VSZ 2>/dev/null' %osdpid)
                   osd_runmemrsz = commands.getoutput('ps -p %s  -o rsz |grep -v RSZ 2>/dev/null' %osdpid)
                   osdname="osd."+osdid
                   osdlist.insert(0,osdname)
                   osdlist[1] = str(int(osd_runmemvsz)/1024)+"KB"
                   osdlist[2] = str(int(osd_runmemrsz)/1024)+"KB"
                   vm_dic = {}
                   vm_dic['VSZ']= str(int(osd_runmemvsz)/1024)+"KB"
                   vm_dic['RSZ']= str(int(osd_runmemrsz)/1024)+"KB"
                   osd_list[osdname] = vm_dic
                   data_dic['osdmemused'] = osd_list
                   if chosse == "table":
                       row.add_row(osdlist)
                   elif chosse == "json":
                       row = json.dumps(data_dic,separators=(',', ':'))
       print row

if __name__ == '__main__':
   main()


运行脚本

[root@lab8106 getmem]# python getmem.py 
+---------+-------+------+
| OSD/MEM |  VIRT | RES  |
+---------+-------+------+
|  osd.0  | 825KB | 43KB |
|  osd.1  | 826KB | 43KB |
+---------+-------+------+
[root@lab8106 getmem]# python getmem.py json
{"osdmemused":{"osd.1":{"VSZ":"826KB","RSZ":"43KB"},"osd.0":{"VSZ":"825KB","RSZ":"43KB"}}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值