签到成功

知道了

CNDBA社区CNDBA社区

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

2016-12-11 22:09 3398 0 转载 Ceph
作者: Expect-乐
# -*- 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()


http://www.cndba.cn/Expect-le/article/1626

http://www.cndba.cn/Expect-le/article/1626

运行脚本

[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"}}}


http://www.cndba.cn/Expect-le/article/1626http://www.cndba.cn/Expect-le/article/1626

http://www.cndba.cn/Expect-le/article/1626
http://www.cndba.cn/Expect-le/article/1626
http://www.cndba.cn/Expect-le/article/1626
http://www.cndba.cn/Expect-le/article/1626
http://www.cndba.cn/Expect-le/article/1626
http://www.cndba.cn/Expect-le/article/1626

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1547941次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ