appmonitor 0.0.1 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/appmonitor/event_notification.rb +27 -0
- data/lib/appmonitor/event_notifier.rb +20 -29
- data/lib/appmonitor.rb +1 -1
- metadata +19 -4
- data/lib/appmonitor/rake.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d58774bb5e727ad8870239e6d0771dcdabefd87
|
4
|
+
data.tar.gz: 8d0c4ee29e555a22516b2fdba48f4cf1edf324ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8396fd14c5d8485f43b70f0b23d77813077c5297982916805bee441092184f3b866881dc5a0b5fc14116b1df051dbed943b0d9038660758c3b49bb9a7005b264
|
7
|
+
data.tar.gz: 08a37976a502f4118fc98d93afc251243a32041db88d673dc3055bb525a02bbdbdc88eddedb4b81b505493477c03af042d9066a4674b98932a1f054eea6f7571
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'net/http'
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
require 'action_dispatch'
|
5
|
+
|
6
|
+
module AppMonitor
|
7
|
+
class EventNotification
|
8
|
+
|
9
|
+
def self.build_exception_hash(exception, request, options = {})
|
10
|
+
params = request.params
|
11
|
+
{:klass => params[:controller], :method => params[:action], :message => exception.message.inspect,
|
12
|
+
:session => request.session.to_hash, :stack_trace => exception.backtrace.join("\n"),
|
13
|
+
:params => request.filtered_parameters,
|
14
|
+
:url => request.original_url, :ip_address => request.remote_ip, :time => Time.now.to_i,
|
15
|
+
:environment => Rails.env || ''}
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.build_rake_event(exception, options)
|
19
|
+
rake_called_name = options[:rake_command_line].split(":",2)
|
20
|
+
rake_namespace = rake_called_name.first
|
21
|
+
{method: options[:rake_command_line], time: Time.now.to_i, message: exception.message.inspect, stack_trace: exception.backtrace.join("\n"),
|
22
|
+
klass: rake_namespace, environment: Rails.env || ''}
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -1,21 +1,23 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'net/http'
|
3
|
-
require
|
3
|
+
require 'active_support/core_ext'
|
4
4
|
require 'action_dispatch'
|
5
|
+
require 'appmonitor/event_notification'
|
5
6
|
|
6
7
|
module AppMonitor
|
7
8
|
class EventNotifier
|
8
9
|
|
10
|
+
API_MESSAGE_URL = 'http://team10-14.ucebne.fiit.stuba.sk/api/message'
|
11
|
+
|
9
12
|
def initialize(app)
|
10
13
|
@app = app
|
11
14
|
configure
|
12
15
|
@config[:ignore_exceptions] ||= self.class.default_ignore_exceptions
|
13
16
|
end
|
14
17
|
|
15
|
-
def configure(opts = {}
|
18
|
+
def configure(opts = {})
|
16
19
|
@config = {
|
17
20
|
api_key: '',
|
18
|
-
uri: '',
|
19
21
|
project_id: '',
|
20
22
|
monitoring: {development: '', staging: '', production: ''}
|
21
23
|
}
|
@@ -32,15 +34,16 @@ module AppMonitor
|
|
32
34
|
config.each { |k, v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym }
|
33
35
|
end
|
34
36
|
|
35
|
-
|
36
37
|
def self.default_ignore_exceptions
|
37
38
|
[].tap do |exceptions|
|
38
39
|
exceptions << 'ActionController::RoutingError'
|
39
40
|
exceptions << 'ActionController::InvalidAuthenticityToken'
|
40
41
|
exceptions << 'CGI::Session::CookieStore::TamperedWithCookie'
|
41
42
|
exceptions << 'ActionController::UnknownAction'
|
43
|
+
exceptions << 'ActionController::UnknownFormat'
|
42
44
|
exceptions << 'ActionController::UnknownHttpMethod'
|
43
45
|
exceptions << 'Mongoid::Errors::DocumentNotFound'
|
46
|
+
exceptions << 'AbstractController::ActionNotFound'
|
44
47
|
end
|
45
48
|
end
|
46
49
|
|
@@ -48,25 +51,9 @@ module AppMonitor
|
|
48
51
|
Array.wrap(ignore_array).map(&:to_s).include?(exception.class.name)
|
49
52
|
end
|
50
53
|
|
51
|
-
|
52
|
-
def build_exception_hash(exception, request)
|
53
|
-
params = request.params
|
54
|
-
{:klass => params[:controller], :method => params[:action], :message => exception.message.inspect,
|
55
|
-
:session => request.session.to_hash, :stack_trace => exception.backtrace.join("\n"),
|
56
|
-
:params => request.filtered_parameters,
|
57
|
-
:url => request.original_url, :ip_address => request.remote_ip, :timestamp => Time.now.to_i,
|
58
|
-
:environment => Rails.env}
|
59
|
-
end
|
60
|
-
|
61
|
-
def build_rake_event(exception,options)
|
62
|
-
{timestamp: Time.now.to_i, message: exception.message.inspect, stack_trace: exception.backtrace.join("\n"),
|
63
|
-
klass: options[:rake_command_line], environment: Rails.env || ''}
|
64
|
-
end
|
65
|
-
|
66
54
|
def call(env)
|
67
55
|
@app.call(env)
|
68
56
|
rescue Exception => exception
|
69
|
-
puts @config
|
70
57
|
if @config[:monitoring]["#{Rails.env.to_s.downcase}"]
|
71
58
|
@request = ActionDispatch::Request.new(env)
|
72
59
|
send_exception(exception)
|
@@ -76,7 +63,7 @@ module AppMonitor
|
|
76
63
|
|
77
64
|
def send_exception(exception)
|
78
65
|
unless ignored_exception(@config[:ignore_exceptions], exception)
|
79
|
-
event = build_exception_hash(exception, @request)
|
66
|
+
event = EventNotification.build_exception_hash(exception, @request)
|
80
67
|
@event = event.to_json
|
81
68
|
notify_on_event("Error")
|
82
69
|
end
|
@@ -85,15 +72,19 @@ module AppMonitor
|
|
85
72
|
def send_rake_event(exception, options = {})
|
86
73
|
configure
|
87
74
|
unless ignored_exception(@config[:ignore_exceptions], exception)
|
88
|
-
event = build_rake_event(exception, options)
|
75
|
+
event = EventNotification.build_rake_event(exception, options)
|
89
76
|
@event = event.to_json
|
90
77
|
notify_on_event("RakeError")
|
91
78
|
end
|
92
79
|
end
|
93
80
|
|
94
|
-
def
|
95
|
-
|
81
|
+
def send_custom_event(type, options={})
|
82
|
+
@event = options.to_json
|
83
|
+
notify_on_event(type)
|
84
|
+
end
|
96
85
|
|
86
|
+
def notify_on_event(type)
|
87
|
+
uri = URI.parse(API_MESSAGE_URL)
|
97
88
|
https = Net::HTTP.new(uri.host, uri.port)
|
98
89
|
https.use_ssl = false
|
99
90
|
request = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' => "application/json",
|
@@ -102,19 +93,19 @@ module AppMonitor
|
|
102
93
|
'appm_type' => type}
|
103
94
|
)
|
104
95
|
|
105
|
-
request.body =
|
96
|
+
request.body = @event
|
106
97
|
response = https.request(request)
|
107
98
|
|
108
|
-
Rails.logger.
|
99
|
+
Rails.logger.debug ("Appmonitor: Event has been sent")
|
109
100
|
puts 'Appmonitor: Event has been sent'
|
110
101
|
|
111
102
|
unless response.kind_of? Net::HTTPSuccess
|
112
|
-
Rails.logger.
|
113
|
-
Rails.logger.
|
103
|
+
Rails.logger.warn('Appmonitor WARNING: Something went wrong, please check your config')
|
104
|
+
Rails.logger.warn("AppMonitor WARNING: Response ''#{response.code}: #{response.message}''")
|
114
105
|
puts 'Appmonitor WARNING: Something went wrong, please check your config'
|
115
106
|
puts "AppMonitor WARNING: Response #{response.inspect}"
|
116
107
|
end
|
117
108
|
end
|
118
|
-
end
|
119
109
|
|
110
|
+
end
|
120
111
|
end
|
data/lib/appmonitor.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appmonitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Team Gappers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2010-
|
12
|
-
dependencies:
|
11
|
+
date: 2010-11-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: AppMonitor agent for ruby language
|
14
28
|
email: gappers-tip-fiit@googlegroups.com
|
15
29
|
executables: []
|
@@ -17,8 +31,8 @@ extensions: []
|
|
17
31
|
extra_rdoc_files: []
|
18
32
|
files:
|
19
33
|
- lib/appmonitor.rb
|
34
|
+
- lib/appmonitor/event_notification.rb
|
20
35
|
- lib/appmonitor/event_notifier.rb
|
21
|
-
- lib/appmonitor/rake.rb
|
22
36
|
- lib/appmonitor/rake_patch.rb
|
23
37
|
homepage: http://rubygems.org/gems/appmonitor
|
24
38
|
licenses:
|
@@ -45,3 +59,4 @@ signing_key:
|
|
45
59
|
specification_version: 4
|
46
60
|
summary: AppMonitor agent for ruby language
|
47
61
|
test_files: []
|
62
|
+
has_rdoc:
|