查询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"}}}
目录
相关文章
|
2月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
187 6
|
25天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
211 2
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
152 5
|
2月前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
45 1
|
3月前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
4月前
|
监控 Python
paramiko 模块 ---Python脚本监控当前系统的CPU、内存、根目录、IP地址等信息
paramiko 模块 ---Python脚本监控当前系统的CPU、内存、根目录、IP地址等信息
|
4月前
|
监控 Linux
Linux脚本之监控系统内存使用情况并给予警告
Linux脚本之监控系统内存使用情况并给予警告
|
6月前
|
存储 Web App开发 运维
|
6月前
|
存储 弹性计算 运维
调整虚拟机内存参数的 shell 脚本
【4月更文挑战第29天】
76 2
|
6月前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本