Home > production_log_analyzer

production_log_analyzer

Production_log_analyzer is a project mainly written in Ruby, based on the View license.

= production_log_analyzer

production_log_analyzer lets you find out which actions on a Rails site are slowing you down.

http://seattlerb.rubyforge.org/production_log_analyzer

http://rubyforge.org/projects/seattlerb

Bug reports:

http://rubyforge.org/tracker/?func=add&group_id=1513&atid=5921

== About

production_log_analyzer provides three tools to analyze log files created by SyslogLogger. pl_analyze for getting daily reports, action_grep for pulling log lines for a single action and action_errors to summarize errors with counts.

The analyzer currently requires the use of SyslogLogger because the default Logger doesn't give any way to associate lines logged to a request.

The PL Analyzer also includes action_grep which lets you grab lines from a log that only match a single action.

action_grep RssController#uber /var/log/production.log

== Installing

sudo gem install production_log_analyzer

=== Setup

First:

Set up SyslogLogger according to the instructions here:

http://seattlerb.rubyforge.org/SyslogLogger/

Then:

Set up a cronjob (or something like that) to run log files through pl_analyze.

== Using pl_analyze

To run pl_analyze simply give it the name of a log file to analyze.

pl_analyze /var/log/production.log

If you want, you can run it from a cron something like this:

/usr/bin/gzip -dc /var/log/production.log.0.gz | /usr/local/bin/pl_analyze /dev/stdin

Or, have pl_analyze email you (which is preferred, because tabs get preserved):

/usr/bin/gzip -dc /var/log/production.log.0.gz | /usr/local/bin/pl_analyze /dev/stdin -e [email protected] -s "pl_analyze for date -v-1d "+%D""

In the future, pl_analyze will be able to read from STDIN.

== Sample output

Request Times Summary: Count Avg Std Dev Min Max ALL REQUESTS: 11 0.576 0.508 0.000 1.470

ThingsController#view: 3 0.716 0.387 0.396 1.260 TeamsController#progress: 2 0.841 0.629 0.212 1.470 RssController#uber: 2 0.035 0.000 0.035 0.035 PeopleController#progress: 2 0.489 0.489 0.000 0.977 PeopleController#view: 2 0.731 0.371 0.360 1.102

Average Request Time: 0.634 Request Time Std Dev: 0.498

Slowest Request Times: TeamsController#progress took 1.470s ThingsController#view took 1.260s PeopleController#view took 1.102s PeopleController#progress took 0.977s ThingsController#view took 0.492s ThingsController#view took 0.396s PeopleController#view took 0.360s TeamsController#progress took 0.212s RssController#uber took 0.035s RssController#uber took 0.035s


DB Times Summary: Count Avg Std Dev Min Max ALL REQUESTS: 11 0.366 0.393 0.000 1.144

ThingsController#view: 3 0.403 0.362 0.122 0.914 TeamsController#progress: 2 0.646 0.497 0.149 1.144 RssController#uber: 2 0.008 0.000 0.008 0.008 PeopleController#progress: 2 0.415 0.415 0.000 0.830 PeopleController#view: 2 0.338 0.149 0.189 0.486

Average DB Time: 0.402 DB Time Std Dev: 0.394

Slowest Total DB Times: TeamsController#progress took 1.144s ThingsController#view took 0.914s PeopleController#progress took 0.830s PeopleController#view took 0.486s PeopleController#view took 0.189s ThingsController#view took 0.173s TeamsController#progress took 0.149s ThingsController#view took 0.122s RssController#uber took 0.008s RssController#uber took 0.008s


Render Times Summary: Count Avg Std Dev Min Max ALL REQUESTS: 11 0.219 0.253 0.000 0.695

ThingsController#view: 3 0.270 0.171 0.108 0.506 TeamsController#progress: 2 0.000 0.000 0.000 0.000 RssController#uber: 2 0.012 0.000 0.012 0.012 PeopleController#progress: 2 0.302 0.302 0.000 0.604 PeopleController#view: 2 0.487 0.209 0.278 0.695

Average Render Time: 0.302 Render Time Std Dev: 0.251

Slowest Total Render Times: PeopleController#view took 0.695s PeopleController#progress took 0.604s ThingsController#view took 0.506s PeopleController#view took 0.278s ThingsController#view took 0.197s ThingsController#view took 0.108s RssController#uber took 0.012s RssController#uber took 0.012s TeamsController#progress took 0.000s TeamsController#progress took 0.000s

== What's missing

  • More reports
  • Command line arguments including:
    • Help
    • What type of log file you've got (if somebody sends patches with tests)
  • Read from STDIN
Previous:zheng