forked from seattlerb/production_log_analyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
148 lines (104 loc) · 5.07 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
= production_log_analyzer
* http://seattlerb.rubyforge.org/production_log_analyzer
* http://rubyforge.org/projects/seattlerb
== DESCRIPTION
production_log_analyzer lets you find out which actions on a Rails
site are slowing you down.
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