You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@senssoft.apache.org by ms...@apache.org on 2017/09/11 14:54:04 UTC
incubator-senssoft-distill git commit: Fixed bugs in sankey and
validated request args output
Repository: incubator-senssoft-distill
Updated Branches:
refs/heads/master 114f3375a -> 2707c50f5
Fixed bugs in sankey and validated request args output
Project: http://git-wip-us.apache.org/repos/asf/incubator-senssoft-distill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-senssoft-distill/commit/2707c50f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-senssoft-distill/tree/2707c50f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-senssoft-distill/diff/2707c50f
Branch: refs/heads/master
Commit: 2707c50f5560faa68300cb42db7f05681ad3cd62
Parents: 114f337
Author: msbeard <ms...@apache.org>
Authored: Mon Sep 11 10:53:42 2017 -0400
Committer: msbeard <ms...@apache.org>
Committed: Mon Sep 11 10:53:42 2017 -0400
----------------------------------------------------------------------
distill/algorithms/graphs/graph.py | 59 ++++++++++++++++++++++++---------
distill/app.py | 31 +++++++++++------
2 files changed, 64 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-distill/blob/2707c50f/distill/algorithms/graphs/graph.py
----------------------------------------------------------------------
diff --git a/distill/algorithms/graphs/graph.py b/distill/algorithms/graphs/graph.py
index 4b282ea..ce463f8 100755
--- a/distill/algorithms/graphs/graph.py
+++ b/distill/algorithms/graphs/graph.py
@@ -31,7 +31,8 @@ class GraphAnalytics (object):
def generate_graph(app,
app_type='logs',
log_type='raw',
- target_events=[],
+ targets=[],
+ events=[],
time_range=['now-1h', 'now'],
size=20):
"""
@@ -62,15 +63,41 @@ class GraphAnalytics (object):
]
# Filtering
- # should_query = []
- if (target_events):
- for event in target_events:
- res = {
- "term": {
- "type": event
- }
+ should_query = []
+ must_query = []
+
+ # Include these events in the request
+ if events:
+ include_events = {
+ "terms": {
+ "type.keyword": events
+ }
+ }
+ filter_query.append(include_events)
+
+ target_in = targets[0]
+ target_out = targets[1]
+
+ if target_in:
+ include_targets = {
+ "terms": {
+ "target.keyword": target_in
}
- filter_query.append(res)
+ }
+
+ filter_query.append(include_targets)
+
+ # Remove these elementids from result set
+ for target in target_out:
+ res = {
+ "term": {
+ "target.keyword": target
+ }
+ }
+ must_not_query.append(res)
+
+ # Finish off should query
+ # must_query.append({"bool": {"should": should_query}})
# Sort By Time
sort_query = [
@@ -98,7 +125,7 @@ class GraphAnalytics (object):
session_query = {
"terms": {
"field": "sessionID.keyword",
- "min_doc_count": 1
+ # "min_doc_count": 1
}
}
@@ -108,14 +135,14 @@ class GraphAnalytics (object):
target_query = {
"terms": {
"field": "target.keyword",
- "min_doc_count": 1,
+ # "min_doc_count": 1,
"size": size
},
"aggs": {
"events": {
"terms": {
"field": "type.keyword",
- "min_doc_count": 1,
+ # "min_doc_count": 1,
"size": size
}
},
@@ -142,10 +169,11 @@ class GraphAnalytics (object):
"sort": sort_query,
"query": {
"bool": {
- # "must": must_match,
+ # "must": must_query,
# "should": should_query,
"filter": filter_query,
"must_not": must_not_query,
+ # "minimum_should_match": len(should_query) - 1
}
},
"_source": {
@@ -165,7 +193,6 @@ class GraphAnalytics (object):
# return query
# Process Aggregate Results
response = es.search(app, doc_type=app_type, body=query, size=0)
-
# Only want to look at aggregations
sessions = response['aggregations']['sessions']['buckets']
# allSessions = { x['key']: [] for x in sessions }
@@ -285,10 +312,10 @@ class GraphAnalytics (object):
nodename2 = node2['target']
seqID = '%s->%s' % (nodename1, nodename2)
- print(seqID)
+ #print(seqID)
if nodename1 != nodename2: #double check again for self-loops
- print(node1)
+ #print(node1)
link = {
'sequenceID': seqID,
'sourceName': nodename1,
http://git-wip-us.apache.org/repos/asf/incubator-senssoft-distill/blob/2707c50f/distill/app.py
----------------------------------------------------------------------
diff --git a/distill/app.py b/distill/app.py
old mode 100644
new mode 100755
index d07396b..76bfb78
--- a/distill/app.py
+++ b/distill/app.py
@@ -83,26 +83,37 @@ def sankey(app_id):
# Time range using date math
from_range = 'now-15m'
to_range = 'now'
- ts_range = [from_range, to_range]
- if 'from' in request.args:
+
+ if 'from' in request.args and request.args.get('from') != '':
from_range = request.args.get('from')
- if 'to' in request.args:
- to_range = request.args.get('to')
- ts_range = [from_range, to_range]
+ if 'to' in request.args and request.args.get('to') != '':
+ to_range = request.args.get('to')
+
+ ts_range = [from_range, to_range]
# Size
size = 20
- if 'size' in request.args:
+ if 'size' in request.args and request.args.get('size') != '':
size = request.args.get('size')
- # target events
+ # events (event_in)
events = []
- if 'event' in request.args:
- events.append(request.args.get('event'))
+ if 'event' in request.args and request.args.get('event') != '':
+ events = request.args.get('event').split(',')
+
+ # filter in/out targets
+ target_in = []
+ if 'target_in' in request.args and request.args.get('target_in') != '':
+ target_in = request.args.get('target_in').split(',')
+
+ target_out = []
+ if 'target_out' in request.args and request.args.get('target_out') != '':
+ target_out = request.args.get('target_out').split(',')
return jsonify(GraphAnalytics.generate_graph(app_id,
- target_events=events,
+ targets=[target_in, target_out],
+ events=events,
time_range=ts_range,
size=size))