diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/logreport.py | 18 |
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() |
