|
@@ -43,7 +43,7 @@ p = CONFIG['store']['args']
|
|
|
class_read = CONFIG['store']['class']['read']
|
|
|
class_write= CONFIG['store']['class']['write']
|
|
|
factory = DataSourceFactory()
|
|
|
-gReader = factory.instance(type=class_read,args=p)
|
|
|
+# gReader = factory.instance(type=class_read,args=p)
|
|
|
|
|
|
atexit.register(ThreadManager.stop)
|
|
|
@app.route('/get/<id>')
|
|
@@ -99,8 +99,7 @@ def trends ():
|
|
|
class_read = CONFIG['store']['class']['read']
|
|
|
|
|
|
|
|
|
- gReader = factory.instance(type=class_read,args=p)
|
|
|
-
|
|
|
+ gReader = factory.instance(type=class_read,args=p)
|
|
|
r = gReader.read()
|
|
|
if id in r:
|
|
|
r = r[id] #--matrix
|
|
@@ -131,15 +130,17 @@ def dashboard():
|
|
|
This function is designed to trigger learning for anomaly detection
|
|
|
@TODO: forward this to a socket i.e non-blocking socket
|
|
|
"""
|
|
|
-@app.route('/learn')
|
|
|
+@app.route('/anomalies/get')
|
|
|
def learn():
|
|
|
global CONFIG
|
|
|
p = CONFIG['store']['args']
|
|
|
class_read = CONFIG['store']['class']['read']
|
|
|
gReader = factory.instance(type=class_read,args=p)
|
|
|
d = gReader.read()
|
|
|
+
|
|
|
if 'learn' in d :
|
|
|
info = d['learn']
|
|
|
+
|
|
|
del d['learn']
|
|
|
else :
|
|
|
info = []
|
|
@@ -147,27 +148,45 @@ def learn():
|
|
|
if 'id' in request.args:
|
|
|
id = request.args['id']
|
|
|
d = d[id]
|
|
|
- apps = CONFIG['monitor']['processes']['config'][id]
|
|
|
- #print (apps)
|
|
|
-
|
|
|
params = {}
|
|
|
for item in info:
|
|
|
- id = item['label']
|
|
|
- params[id] = item
|
|
|
+
|
|
|
+ label = item['label']
|
|
|
+ params[label] = item
|
|
|
+
|
|
|
#apps = list(set(ML.Extract(['label'],d)))
|
|
|
- p = AnomalyDetection()
|
|
|
- for name in apps :
|
|
|
- xo = ML.Filter('label',name,d)
|
|
|
- _info = params[name]
|
|
|
- #info = ML.Filter('label',app,logs)
|
|
|
- value = p.predict(xo,_info)
|
|
|
- print [row[1] for row in value]
|
|
|
- break
|
|
|
+ r = []
|
|
|
+ if params :
|
|
|
+ #
|
|
|
+ # If we have parameters available
|
|
|
+ p = AnomalyDetection()
|
|
|
+ apps = params.keys()
|
|
|
+ for name in apps :
|
|
|
+ if name not in params:
|
|
|
+ continue
|
|
|
+ _info = params[name]
|
|
|
+ try:
|
|
|
+ xo = ML.Filter('label',name,d)
|
|
|
+ except Exception,e:
|
|
|
+ xo = []
|
|
|
+ #print name,e
|
|
|
+ if len(xo) == 0:
|
|
|
+ continue
|
|
|
+ xo = [xo[ len(xo) -1]]
|
|
|
+
|
|
|
+ value = p.predict(xo,_info)[0]
|
|
|
+
|
|
|
+ if len(value):
|
|
|
+ report = dict(_info,**{'predicton':value})
|
|
|
+ r.append(report)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
#print app,value
|
|
|
#if value is not None:
|
|
|
# r.append(value)
|
|
|
- print r
|
|
|
- return json.dumps([])
|
|
|
+
|
|
|
+ return json.dumps(r)
|
|
|
|
|
|
|
|
|
|
|
@@ -175,10 +194,6 @@ def learn():
|
|
|
def anomalies_status():
|
|
|
pass
|
|
|
|
|
|
-@app.route('/anomalies/get')
|
|
|
-def anomalies_get():
|
|
|
- pass
|
|
|
-
|
|
|
if __name__== '__main__':
|
|
|
|
|
|
#ThreadManager.start(CONFIG)
|