diff options
Diffstat (limited to 'clover/controller/control/api/visibility.py')
-rw-r--r-- | clover/controller/control/api/visibility.py | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/clover/controller/control/api/visibility.py b/clover/controller/control/api/visibility.py index 23eb714..67faaf0 100644 --- a/clover/controller/control/api/visibility.py +++ b/clover/controller/control/api/visibility.py @@ -19,14 +19,24 @@ HOST_IP = 'redis.default' def clear_visibility(): # Zero out or delete redis keys with results r = redis.StrictRedis(host=HOST_IP, port=6379, db=0) - r.set('proxy_rt', 0) r.set('trace_count', 0) r.set('span_count', 0) + r.set('metric_count', 0) del_keys = ['span_user_agent', 'span_urls', 'span_urls_z', 'span_status_codes_z', 'span_node_url_z', 'span_node_id_z', - 'span_user_agent_z'] + 'span_user_agent_z', 'span_status_code', 'span_node_id', + 'span_upstream_cluster', 'span_operation_name'] for dk in del_keys: r.delete(dk) + + # Response time NA + services = list(r.smembers('visibility_services')) + for service in services: + s = service.replace('_', '-') + r.hset(s, 'min_rt', 'NA') + r.hset(s, 'avg_rt', 'NA') + r.hset(s, 'max_rt', 'NA') + # Truncate cassandra tables return collector.truncate() @@ -43,17 +53,50 @@ def get_visibility_stats(s_type): stat_type = p['stat_type'] r = redis.StrictRedis(host=HOST_IP, port=6379, db=0) + services = list(r.smembers('visibility_services')) content = {} if stat_type == 'system' or s_type == 'all': content['trace_count'] = r.get('trace_count') content['span_count'] = r.get('span_count') + content['metric_count'] = r.get('metric_count') if stat_type == 'metrics' or s_type == 'all': - content['metrics_test'] = r.lrange('metrics_test', 0, 200) + mp = list(r.smembers('metric_prefixes')) + ms = list(r.smembers('metric_suffixes')) + m = [] + for service in services: + for prefix in mp: + for suffix in ms: + n = {} + m_name = 'metrics_' + prefix + service + suffix + n['name'] = m_name + n['service'] = service + n['prefix'] = prefix + n['suffix'] = suffix + n['values'] = r.lrange(m_name, 0, 100) + m.append(n) + content['metrics_time'] = m if stat_type == 'tracing' or s_type == 'all': - content['proxy_rt'] = r.get('proxy_rt') - content['span_urls'] = list(r.smembers('span_urls')) + # Response times + x = [] + for service in services: + rt = {} + s = service.replace('_', '-') + rt['name'] = s + rt['min'] = r.hget(s, 'min_rt') + rt['avg'] = r.hget(s, 'avg_rt') + rt['max'] = r.hget(s, 'max_rt') + x.append(rt) + content['response_times'] = x + # Distinct + content['request_urls'] = list(r.smembers('span_urls')) content['user_agents'] = list(r.smembers('span_user_agent')) + content['status_codes'] = list(r.smembers('span_status_code')) + content['op_names'] = list(r.smembers('span_operation_name')) + content['node_ids'] = list(r.smembers('span_node_id')) + content['upstream_clusters'] = list(r.smembers( + 'span_upstream_cluster')) + # Zsets content['user_agent_count'] = r.zrange( "span_user_agent_z", 0, 50, False, True) content['request_url_count'] = r.zrange( |