-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServerMonitoringAPI.py
More file actions
39 lines (31 loc) · 1.42 KB
/
ServerMonitoringAPI.py
File metadata and controls
39 lines (31 loc) · 1.42 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
from pymongo import MongoClient
import pandas as pd
from pandas import json_normalize
from flask import Flask, jsonify
from SystemMonitoring import get_size
from config.config import config_obj
app = Flask(__name__)
client = MongoClient(f'mongodb://{config_obj["database"]["host"]}:{config_obj["database"]["port"]}')
db = client.SystemMonitoringDatabase.SystemMonitoringDatabase
sort = list({'datetime': -1}.items())
limit = 10
@app.route('/minimal')
def get_system_information_minimal():
count = len(db.find(sort=sort, limit = 100).distinct('systemInformation'))
data = [x for x in db.find(sort=sort, limit = limit * count)]
data_dataframe = pd.DataFrame(data)
cpu = json_normalize(data_dataframe['cpu'])
memory = json_normalize(data_dataframe['memory'])
disk = json_normalize(data_dataframe['disk'])
network = json_normalize(data_dataframe['network'])
return jsonify({
'serverCount': count,
'cpu': cpu.aggregate('mean')['total_core_usage'],
'memory': memory.aggregate('mean')['percentageMemory'],
'diskRead': get_size(disk['read'].aggregate('mean')),
'diskWrite': get_size(disk['write'].aggregate('mean')),
'networkSent': get_size(network['sent'].aggregate('mean')),
'networkReceived': get_size(network['received'].aggregate('mean'))
})
if __name__ == "__main__":
app.run(host='0.0.0.0', port=config_obj['monitoringServer']['port'], debug=False)