Django 如何从python在mongodb中保存数据
我的任务是制作服务器监控工具,比如服务器密度。我有一个服务器的列表,我希望每15秒打印一次每台服务器的CPU信息、ram信息、磁盘使用情况等,并打印出它的图。 我在django中安装了一个项目,mongo作为后端数据库。 我已经编写了python脚本,可以在本地系统上为我提供这些参数。 现在我的任务是将这些信息存储在Mongo DB中。我已经为每种参数编写了相应的模型。 这就是我创建的模型Django 如何从python在mongodb中保存数据,django,mongodb,mongoengine,Django,Mongodb,Mongoengine,我的任务是制作服务器监控工具,比如服务器密度。我有一个服务器的列表,我希望每15秒打印一次每台服务器的CPU信息、ram信息、磁盘使用情况等,并打印出它的图。 我在django中安装了一个项目,mongo作为后端数据库。 我已经编写了python脚本,可以在本地系统上为我提供这些参数。 现在我的任务是将这些信息存储在Mongo DB中。我已经为每种参数编写了相应的模型。 这就是我创建的模型 class CpuUsage(Document): server = ReferenceFiel
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\u信息将cpu参数提取到字典中
2) 这会将字典中包含的信息保存到mongodb
我对serverfield感到困惑,我应该如何使用它,我的目的是在每个searver上运行这个脚本,并设计一个UI,该UI可以显示关于每个服务器的信息 我想知道我是否朝着正确的方向前进,以及如何在每台服务器上以15秒的间隔运行此脚本,并绘制图表 如有进一步改进,将不胜感激。
此外,我还想l1。要按计划运行脚本,可以使用crontab,或 自己的守护进程。看来crontab更合适。你一定要 记住,要使用crontab选项,您应该在控制台上进行选择 srcript作为: 2.如果您想将数据保存在一个位置,您应该只使用一个公共主机 MongoDB。这意味着您应该使用与服务器相同的ip/域 MongoDB将settings.py中的localhost替换为每个Django
项目。“我被服务器场弄糊涂了。”什么是服务器场?它不会出现在类定义中。您是否在询问如何重复运行此代码?(Linux:,Windows:Scheduled Task)服务器字段是对我将在其上运行脚本的特定服务器的引用。
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)
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()
#!/usr/bin/env python2.7
# import required packages
# setup paths to django project
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
sys.path.append(('/path/to/django/project'))
... # your code
if __name__ == "__main__":
... # your code