查询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"}}}
目录
相关文章
|
6月前
|
Oracle 关系型数据库 Linux
解决在linux服务器上部署定时自动查找cpu,内存,磁盘使用量,并将查询结果写入数据库的脚本,只能手动运行实现插库操作
问题描述:将脚本名命名为mortior.sh(以下简称mo),手动执行脚本后查询数据库,表中有相应的信息,放入自动执行队列中,脚本被执行,但是查询数据库,并没有新增数据。
44 0
|
6月前
|
Shell 测试技术 Linux
通过shell脚本进行linux服务器的CPU和内存压测
通过shell脚本进行linux服务器的CPU和内存压测
178 0
|
12天前
|
存储 Web App开发 运维
|
18天前
|
监控 Shell
Shell脚本监控CPU、内存和硬盘利用率
Shell脚本监控CPU、内存和硬盘利用率
|
1月前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
|
2月前
|
存储 缓存 监控
Linux 系统 内存通用指标以及查询方式
Linux 系统 内存通用指标以及查询方式
21 0
|
4月前
|
SQL 算法 关系型数据库
大查询会不会把内存打爆
大查询会不会把内存打爆
|
5月前
|
运维 Linux
Linux 查询 OS、CPU、内存、硬盘信息
Linux 查询 OS、CPU、内存、硬盘信息
99 0
|
6月前
|
Shell
使用 shell 脚本清理内存 buff/cache
使用 shell 脚本清理内存 buff/cache
115 0
|
9月前
|
监控 Shell Linux
linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志
linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志
251 0