summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Ostler <scottbot9000@gmail.com>2010-07-04 18:19:06 -0400
committerScott Ostler <scottbot9000@gmail.com>2010-07-04 18:19:06 -0400
commit231a9933b7766306ae109b2e511c971caadea6b2 (patch)
tree6ae7c969a7c6d6255d9ac13d1f4b8fe29e778e04
parentcb0e566d9cccadc4e19ef654f366e0159688242b (diff)
Add error urls to logreport
-rw-r--r--scripts/logreport.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/scripts/logreport.py b/scripts/logreport.py
index 3977105..6f4799c 100644
--- a/scripts/logreport.py
+++ b/scripts/logreport.py
@@ -127,7 +127,7 @@ SlowReportCount = 10
IpReportCount = 10
class ConsoleWriter(object):
-
+
def section(self, label):
print "\n----- %s -----" % label
@@ -221,7 +221,7 @@ class HtmlWriter(object):
self.content += "</table>\n"
def graph(self, label, graph_id, data):
- self.content += '<div id="%s" style="width: 100%%; height: 350px;"></div>' % graph_id
+ self.content += '<div id="%s" style="width: 1000px; height: 350px;"></div>' % graph_id
js_array = "var %s = %s;" % (graph_id, data)
graph_command = JqueryTemplate % (graph_id, graph_id, label)
self.content += '<script>%s\n%s</script>' % (js_array, graph_command)
@@ -250,7 +250,8 @@ class Report(object):
self.writer.section('URL group stats')
grouped = gather_by_key(self.good, 'urlgroup')
- headers = ['#', 'min', 'median', 'mean', '90%', 'max', '# slow', 'bytes sent', 'bytes/req']
+ headers = ['#', 'min', 'median', 'mean', '90%', 'max', '# slow', '% slow',
+ 'bytes sent', 'bytes/req']
data = []
for url_group in sorted(grouped.keys()):
@@ -265,6 +266,7 @@ class Report(object):
format_ms(ninety_percentile(vals)),
format_ms(max(vals)),
slow_count,
+ '%.01f%%' % (100 * slow_count / len(vals)),
format_bytes(bytes_sent),
format_bytes(bytes_sent / len(vals))])
self.writer.table(headers, data)
@@ -281,6 +283,7 @@ class Report(object):
reqs_per_sec = avg_bucket_rate(buckets, lambda r: True)
images_per_sec = avg_bucket_rate(buckets, lambda r: r['urlgroup'] in ('Images', 'Avatars'))
dumps_per_sec = avg_bucket_rate(buckets, lambda r: r['urlgroup'] in ('Post', 'Upload'))
+ tags_per_sec = avg_bucket_rate(buckets, lambda r: r['urlgroup'] in ('TagAdd', 'TagRemove'))
chat_users_per_sec = avg_bucket_rate(buckets, lambda r: r['urlgroup'] == 'ChatUpdate')
@@ -290,6 +293,8 @@ class Report(object):
build_js_array(self.start, interval, images_per_sec))
self.writer.graph('Dumps / sec', 'dumps_per_sec',
build_js_array(self.start, interval, dumps_per_sec))
+ self.writer.graph('Tags / sec', 'tags_per_sec',
+ build_js_array(self.start, interval, tags_per_sec))
self.writer.graph('Chat users / sec', 'chat_users_per_sec',
build_js_array(self.start, interval, chat_users_per_sec))
@@ -333,6 +338,12 @@ class Report(object):
self.writer.section('Unclassified URLs (%s)' % len(unclassified))
self.writer.paragraph(unclassified_str)
+ def output_errors(self):
+ errors = set(g['url'] for g in self.good if g['urlgroup'] == 'Error')
+ error_str = ', '.join(sorted(errors)[:100])
+ self.writer.section('Error Urls (%s)' % len(errors))
+ self.writer.paragraph(error_str)
+
def output_ip_usage(self):
grouped = gather_by_key(self.good, 'addr')
sum_bytes = lambda reqs: sum(r['total_bytes'] for r in reqs)
@@ -360,6 +371,7 @@ class Report(object):
self.output_group_stats()
self.output_slow_requests()
self.output_ip_usage()
+ self.output_errors()
self.output_unclassified_urls()