-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexhausted_node.py
More file actions
68 lines (48 loc) · 1.54 KB
/
Copy pathexhausted_node.py
File metadata and controls
68 lines (48 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- coding: utf-8 -*-
import psutil
import pymongo
import pymongo.errors
import os
from datetime import datetime
import time
import sys
# print psutil.cpu_percent(percpu=True)
# print psutil.virtual_memory()
# 必要な物、ソケット通信、標準入力ハンドラ。実行状態調査。ファイルロック。
def data_collect():
# mongodb へのアクセスを確立
client = pymongo.MongoClient('localhost', 27017)
# データベースを作成 (名前: my_database)
db = client.job_database
# コレクションを作成 (名前: my_collection)
co = db.job_collection
while True:
date = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'name', 'cmdline', 'environ', 'cpu_percent', 'num_threads', 'username', 'memory_percent'])
except psutil.NoSuchProcess:
pass
else:
pinfo["hostname"] = os.uname()
pinfo["date"] = date
try:
co.insert_one(pinfo)
except pymongo.errors.PyMongoError:
pass
time.sleep(30)
# なんか適当に保存
# 全部とってくる
# for data in co.find():
# print data
def fork():
pid = os.fork()
if pid > 0:
f = open('/var/run/exhaustedd.pid', 'w')
f.write(str(pid) + "\n")
f.close()
sys.exit()
if pid == 0:
data_collect()
if __name__ == '__main__':
fork()