logjam_agent 0.9.2 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +14 -1
- data/lib/logjam_agent.rb +1 -1
- data/lib/logjam_agent/rack/logger.rb +1 -1
- data/lib/logjam_agent/railtie.rb +32 -0
- data/lib/logjam_agent/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGE1MWZkYjNjYzNjYzQ5MzkyZjQzMGEzMjZmMTBhOTE0YWM5YzdiZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjJhZWU1YjdiNjYwYzM4ZDRjNDQ5NzNhY2I3YzE5Njc0NjFhYTBhMg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2M2NmJhZDRjZTJlOWM2M2ZjNDg1ZDIxODVkYTIwZmExYTE0MDhjOWIyOGEz
|
10
|
+
MWM5NmQ1YWQ0YjNjNjE1ZDEyNTM2NjU2ODI0NzY2YTY3NWFiYjA3OTY1ZTVi
|
11
|
+
MjA2NGNlOTA4MzZhZmNhODQwZjA4MGFiM2NhZjVmMWFjOWUyNzA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NWRjZGIyZjFlMzg1YmJjYWI5ZWIxYzYwMDU5ZWZjNWQwODdhYzE0YTcxNTZl
|
14
|
+
MmJlNmJmMWE3Mjg5YmJhZTFhZDE3YjllNjY0NWFkZDJkMjhmMGRkNTAzZDVl
|
15
|
+
NzZkOWNjNGYzZjVkNzY4ZDUxNGQxYjQzNTM4YmU3M2ZlZTliMWI=
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ module LogjamAgent
|
|
38
38
|
# Configure request data forwarder for ZeroMQ.
|
39
39
|
add_forwarder(:zmq, :host => "logjam.instance.at.your.org", :port => 9605)
|
40
40
|
|
41
|
-
# Configure request data forwarder for
|
41
|
+
# Configure request data forwarder for AMQP.
|
42
42
|
# add_forwarder(:amqp, :host => "message.broker.at.your.org"))
|
43
43
|
|
44
44
|
# Configure ip obfuscation. Defaults to no obfuscation.
|
@@ -49,6 +49,19 @@ module LogjamAgent
|
|
49
49
|
end
|
50
50
|
```
|
51
51
|
|
52
|
+
### Generating unique request ids
|
53
|
+
|
54
|
+
The agent generates unique request ids for all request handled. It
|
55
|
+
will use [uuid4r](https://github.com/skaes/uuid4r) if this is
|
56
|
+
avalaibale in the application. Otherwise it will fall back to use the
|
57
|
+
standard `SecureRandom` class shipped with Ruby.
|
58
|
+
|
59
|
+
### Generating JSON
|
60
|
+
|
61
|
+
The agent will try to use the [Oj](https://github.com/ohler55/oj) to
|
62
|
+
generate JSON. If this is not available in your application, it will
|
63
|
+
fall back to the `to_json` method.
|
64
|
+
|
52
65
|
## Troubleshooting
|
53
66
|
|
54
67
|
If the agent experiences problems when sending data, it will log information to a file named
|
data/lib/logjam_agent.rb
CHANGED
@@ -53,7 +53,7 @@ module LogjamAgent
|
|
53
53
|
path = request.filtered_path
|
54
54
|
|
55
55
|
logjam_fields = LogjamAgent.request.fields
|
56
|
-
ip = LogjamAgent.
|
56
|
+
ip = LogjamAgent.ip_obfuscator(request.ip)
|
57
57
|
logjam_fields.merge!(:started_at => start_time.iso8601, :ip => ip, :host => @hostname)
|
58
58
|
logjam_fields.merge!(extract_request_info(request))
|
59
59
|
|
data/lib/logjam_agent/railtie.rb
CHANGED
@@ -69,6 +69,38 @@ module LogjamAgent
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
73
|
+
# patch rack so that the ip method returns the same result as rails remote_ip (modulo exceptions)
|
74
|
+
app.config.after_initialize do
|
75
|
+
if app.config.action_dispatch.trusted_proxies
|
76
|
+
trusted_proxies = /^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.|^::1$|^fd[0-9a-f]{2}:.+|^localhost$/i
|
77
|
+
trusted_proxies = Regexp.union(trusted_proxies, app.config.action_dispatch.trusted_proxies)
|
78
|
+
::Rack::Request.class_eval <<-"EVA"
|
79
|
+
def trusted_proxy?(ip)
|
80
|
+
ip =~ #{trusted_proxies.inspect}
|
81
|
+
end
|
82
|
+
EVA
|
83
|
+
end
|
84
|
+
|
85
|
+
::Rack::Request.class_eval <<-EVA
|
86
|
+
def ip
|
87
|
+
remote_addrs = @env['REMOTE_ADDR'] ? @env['REMOTE_ADDR'].split(/[,\s]+/) : []
|
88
|
+
remote_addrs.reject! { |addr| trusted_proxy?(addr) }
|
89
|
+
|
90
|
+
return remote_addrs.first if remote_addrs.any?
|
91
|
+
|
92
|
+
forwarded_ips = @env['HTTP_X_FORWARDED_FOR'] ? @env['HTTP_X_FORWARDED_FOR'].strip.split(/[,\s]+/) : []
|
93
|
+
|
94
|
+
if client_ip = @env['HTTP_TRUE_CLIENT_IP'] || @env['HTTP_CLIENT_IP']
|
95
|
+
# If forwarded_ips doesn't include the client_ip, it might be an
|
96
|
+
# ip spoofing attempt, so we ignore HTTP_CLIENT_IP
|
97
|
+
return client_ip if forwarded_ips.include?(client_ip)
|
98
|
+
end
|
99
|
+
|
100
|
+
return forwarded_ips.reject { |ip| trusted_proxy?(ip) }.last || @env["REMOTE_ADDR"]
|
101
|
+
end
|
102
|
+
EVA
|
103
|
+
end
|
72
104
|
end
|
73
105
|
|
74
106
|
# avoid garbled tempfile information in the logs
|
data/lib/logjam_agent/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logjam_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Kaes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|