我的任務是製作像服務器密度這樣的服務器監視工具。我有服務器的列表,我想每個服務器的CPU信息,RAM信息,磁盤使用情況等每15秒,並打印它的情節。 我在django中設置了mongo作爲後端數據庫。 我已經寫了python腳本,可以給我這些參數在本地系統上。 現在我的任務是將這些信息存儲在Mongo-DB中。我寫了對應於每種參數的模型。 這是我創建的模型。如何在python中保存mongodb中的數據
class CpuUsage(Document):
server = ReferenceField(ServerInfo, db_field='se', required=False)
sys_time = DateTimeField(db_field='st', required=False)
#CPU=
usr = StringField(db_field='u', required=False)
nice = StringField(db_field='n', required=False)
sys = StringField(db_field='sy', required=False)
iowait = StringField(db_field='io', required=False)
irq = StringField(db_field='ir', required=False)
soft = StringField(db_field='so', required=False)
steal = StringField(db_field='st', required=False)
guest = StringField(db_field='g', required=False)
idle = StringField(db_field='id', required=False)
meta = {
'indexes': ['server']
}
和我的腳本如下兩個功能 1)cpu_info提取CPU參數到字典中。
def cpu_info(): cpu_parameters = {} ram_parmeters = {} p_info = '/home/bhavuk/Desktop/p_info' #p_file = open(p_info, 'w') cmd1 = 'mpstat -P ALL >'+ p_info p = subprocess.Popen(cmd1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) cpu_cores=open(p_info, 'r').read().split('\n') #for i in range(0, len(cpu_cores)): # print i, cpu_cores[i] print "current cpu state:\n" for i in range(2,len(cpu_cores)-1): cpu_parameters[i-2] = cpu_cores[i].split('\t') print cpu_parameters[i-2] save_cpu_info(cpu_parameters)
2)這節省了包含內部字典MongoDB的信息。
def save_cpu_info(parameters): s = ServerInfo() #need to correct s.save() for i in xrange(0, len(parameters)): c = CpuUsage(server=s) x = parameters[i] c.sys_time = x[0] c.CPU_core = x[2] c.usr = x[3] c.nice = x[4] c.sys = x[5] c.iowait = x[6] c.irq = x[7] c.soft = x[8] c.steal = x[9] c.guest = x[10] c.idle = x[11] c.save()
我很困惑與serverfield,我應該如何使用它,我的目的是在每個searver和德興擁有選項來顯示informatin有關每個服務器UI運行此腳本。
我想知道我是否正在朝着正確的方向前進,以及如何在每臺服務器上以15秒的間隔運行此腳本並繪製圖形。
進一步改進將不勝感激。 也我會l
」我對serverfield感到困惑。「什麼是serverfield?它不出現在你的類定義中。你在問如何反覆運行這些代碼? (Linux:http://unix.stackexchange.com/questions/11102/cron-running-job-every-15-seconds,Windows:計劃任務) – WiredPrairie
服務器字段是對特定服務器的引用,我將在該服務器上運行我的腳本。 – jugadengg