evidence 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/evidence/action_parser.rb +55 -0
- data/lib/evidence/rails.rb +27 -0
- data/lib/evidence/rails_action_parser.rb +7 -33
- data/lib/evidence.rb +8 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4452c553dbfd933c77777214e88a3c6651b6d6b
|
4
|
+
data.tar.gz: 20caf0f7e7237d665f7198020b6ed992191e7c0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2df08138de4eb510a9ae6c055c780e8e2131df176dbb7552f53f72344f1a9707ad058970519f4e8786a492a0ef96915df4af7517429bb23d8d684fed1d8b64a1
|
7
|
+
data.tar.gz: 3b8c55e4d356e7074011ed7e074d3ff1dcea185f012b80d451763dc6807c53188cee143445dedbba58a8796903b79e85d17ecfce9c465d76eeac35692b964b32
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Evidence
|
2
|
+
class ActionParser
|
3
|
+
|
4
|
+
def initialize(pid, message, action_patterns)
|
5
|
+
@pid, @message = pid, message
|
6
|
+
@processes = Hash.new
|
7
|
+
@start_action_pattern, @end_action_pattern = action_patterns[:start], action_patterns[:end]
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_proc
|
11
|
+
lambda do |log|
|
12
|
+
pid = @pid[log]
|
13
|
+
if @processes.has_key?(pid)
|
14
|
+
@processes[pid] << log
|
15
|
+
if end_action?(@message[log])
|
16
|
+
parse_action_logs(@processes.delete(pid))
|
17
|
+
end
|
18
|
+
else
|
19
|
+
if start_action?(@message[log])
|
20
|
+
@processes[pid] = [log]
|
21
|
+
end
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def parse_action_logs(logs)
|
28
|
+
{
|
29
|
+
request: request(@message[logs[0]]),
|
30
|
+
response: response(@message[logs[-1]]),
|
31
|
+
logs: logs
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def end_action?(msg)
|
36
|
+
msg =~ @end_action_pattern
|
37
|
+
end
|
38
|
+
|
39
|
+
def start_action?(msg)
|
40
|
+
msg =~ @start_action_pattern
|
41
|
+
end
|
42
|
+
|
43
|
+
def request(msg)
|
44
|
+
to_hash(@start_action_pattern.match(msg))
|
45
|
+
end
|
46
|
+
|
47
|
+
def response(msg)
|
48
|
+
to_hash(@end_action_pattern.match(msg))
|
49
|
+
end
|
50
|
+
|
51
|
+
def to_hash(m)
|
52
|
+
Hash[m.names.map(&:to_sym).zip(m.captures)]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Evidence
|
2
|
+
def rails2_action_patterns
|
3
|
+
{
|
4
|
+
start: /^
|
5
|
+
(\#012\#012)? # ignore encoded newlines
|
6
|
+
Processing\s+
|
7
|
+
(?<controller>\w+)\#(?<action>\w+)\s+
|
8
|
+
\(for\s+
|
9
|
+
(?<remote_addr>[^\s]+)\s+
|
10
|
+
at\s+
|
11
|
+
(?<timestamp>[^\)]+)\)\s+
|
12
|
+
\[(?<method>[\w]+)\]
|
13
|
+
$/x,
|
14
|
+
end: /^
|
15
|
+
Completed\sin\s
|
16
|
+
(?<completed_time>\d+)ms\s+
|
17
|
+
\((View\:\s(?<view_time>\d+))?
|
18
|
+
\s*,?\s*
|
19
|
+
(\s*DB\:\s(?<db_time>\d+))?
|
20
|
+
\)\s+\|\s+
|
21
|
+
(?<code>\d+)\s+
|
22
|
+
(?<status>\w+)\s+
|
23
|
+
\[(?<url>.+)\]
|
24
|
+
$/x
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
module Evidence
|
2
|
-
class
|
2
|
+
class ActionParser
|
3
3
|
|
4
|
-
def initialize(pid, message)
|
4
|
+
def initialize(pid, message, action_patterns)
|
5
5
|
@pid, @message = pid, message
|
6
6
|
@processes = Hash.new
|
7
|
+
@start_action_pattern, @end_action_pattern = action_patterns[:start], action_patterns[:end]
|
7
8
|
end
|
8
9
|
|
9
10
|
def to_proc
|
@@ -32,46 +33,19 @@ module Evidence
|
|
32
33
|
end
|
33
34
|
|
34
35
|
def end_action?(msg)
|
35
|
-
msg =~ end_action_pattern
|
36
|
+
msg =~ @end_action_pattern
|
36
37
|
end
|
37
38
|
|
38
39
|
def start_action?(msg)
|
39
|
-
msg =~ start_action_pattern
|
40
|
+
msg =~ @start_action_pattern
|
40
41
|
end
|
41
42
|
|
42
43
|
def request(msg)
|
43
|
-
to_hash(start_action_pattern.match(msg))
|
44
|
+
to_hash(@start_action_pattern.match(msg))
|
44
45
|
end
|
45
46
|
|
46
47
|
def response(msg)
|
47
|
-
to_hash(end_action_pattern.match(msg))
|
48
|
-
end
|
49
|
-
|
50
|
-
def start_action_pattern
|
51
|
-
/^
|
52
|
-
(\#012\#012)? # ignore encoded newlines
|
53
|
-
Processing\s+
|
54
|
-
(?<controller>\w+)\#(?<action>\w+)\s+
|
55
|
-
\(for\s+
|
56
|
-
(?<remote_addr>[^\s]+)\s+
|
57
|
-
at\s+
|
58
|
-
(?<timestamp>[^\)]+)\)\s+
|
59
|
-
\[(?<method>[\w]+)\]
|
60
|
-
$/x
|
61
|
-
end
|
62
|
-
|
63
|
-
# Completed in 755ms (View: 330, DB: 215) | 200 OK [url]
|
64
|
-
def end_action_pattern
|
65
|
-
/^
|
66
|
-
Completed\sin\s
|
67
|
-
(?<completed_time>\d+)ms\s+
|
68
|
-
\(View\:\s(?<view_time>\d+)
|
69
|
-
(,\s*DB\:\s(?<db_time>\d+))?
|
70
|
-
\)\s+\|\s+
|
71
|
-
(?<code>\d+)\s+
|
72
|
-
(?<status>\w+)\s+
|
73
|
-
\[(?<url>.+)\]
|
74
|
-
$/x
|
48
|
+
to_hash(@end_action_pattern.match(msg))
|
75
49
|
end
|
76
50
|
|
77
51
|
def to_hash(m)
|
data/lib/evidence.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'evidence/lazy'
|
2
|
-
require 'evidence/
|
2
|
+
require 'evidence/rails'
|
3
|
+
require 'evidence/action_parser'
|
3
4
|
|
4
5
|
Enumerator::Lazy.send(:include, Evidence::Lazy)
|
5
6
|
|
@@ -17,12 +18,16 @@ module Evidence
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
# default to rails 2
|
22
|
+
def rails_action_parser(pid, message, version=2)
|
23
|
+
rails2_action_parser(pid, message)
|
24
|
+
end
|
20
25
|
# Parse out rails actions by given:
|
21
26
|
# pid: a lambda returns process id used to group logs
|
22
27
|
# message: a lambda returns rails log string message
|
23
28
|
# example: logs.map(&rails_action_parser(pid, message)).compact
|
24
|
-
def
|
25
|
-
|
29
|
+
def rails2_action_parser(pid, message)
|
30
|
+
ActionParser.new(pid, message, rails2_action_patterns)
|
26
31
|
end
|
27
32
|
|
28
33
|
# Rails action request timestamp parser
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evidence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Xiao Li
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -34,7 +34,9 @@ extensions: []
|
|
34
34
|
extra_rdoc_files: []
|
35
35
|
files:
|
36
36
|
- README.md
|
37
|
+
- lib/evidence/action_parser.rb
|
37
38
|
- lib/evidence/lazy.rb
|
39
|
+
- lib/evidence/rails.rb
|
38
40
|
- lib/evidence/rails_action_parser.rb
|
39
41
|
- lib/evidence.rb
|
40
42
|
- examples/mingle_logs_analysis.rb
|