appmonitor 0.0.15 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/appmonitor/event_notification.rb +1 -1
- data/lib/appmonitor/event_notifier.rb +16 -31
- data/lib/appmonitor/rake_patch.rb +1 -1
- metadata +4 -19
- data/lib/appmonitor/github/issue.rb +0 -58
- data/lib/appmonitor/github_api.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0dd40358d6f66af203f178ea0015941d205fc45f
|
4
|
+
data.tar.gz: 9d5a8056b8643c47fda4a2faa4a7c6e817d0569d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de08cf7955df61d62878eaf82cb45b9da2f7b3de52e3123267da896335cd12aa96beb3cc416ee061d7d2e23f4b19484764c0daa18c1039ec4c98a5b0008e5b94
|
7
|
+
data.tar.gz: f580182251cb784cd7fc87ff710a5d413d31f6a3df8748d65b93e0f6050e0bec97167b501d2c8982bfa6643d450692c7f6dc6d3bc50a57e4cf2a2360bf0fa8b7
|
@@ -19,7 +19,7 @@ module AppMonitor
|
|
19
19
|
rake_called_name = options[:rake_command_line].split(":", 2)
|
20
20
|
rake_namespace = rake_called_name.first
|
21
21
|
{method: options[:rake_command_line], time: Time.now.to_i.to_s, message: exception.message.inspect, stack_trace:
|
22
|
-
|
22
|
+
exception.backtrace.join("\n"), klass: rake_namespace, environment: Rails.env || ''}
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
@@ -3,7 +3,6 @@ require 'net/http'
|
|
3
3
|
require 'active_support/core_ext'
|
4
4
|
require 'action_dispatch'
|
5
5
|
require 'appmonitor/event_notification'
|
6
|
-
require 'appmonitor/github_api'
|
7
6
|
|
8
7
|
module AppMonitor
|
9
8
|
class EventNotifier
|
@@ -14,14 +13,10 @@ module AppMonitor
|
|
14
13
|
@app = app
|
15
14
|
configure
|
16
15
|
@config[:ignore_exceptions] ||= self.class.default_ignore_exceptions
|
17
|
-
@github = GithubApi.new(token: @config[:github_oauth_token], repo: @config[:github_repo_url]) if @config[:github_oauth_token] && @config[:github_repo_url]
|
18
|
-
|
19
16
|
end
|
20
17
|
|
21
18
|
def configure(opts = {})
|
22
19
|
@config = {
|
23
|
-
github_oauth_token: '',
|
24
|
-
github_repo_url: '',
|
25
20
|
api_key: '',
|
26
21
|
project_id: '',
|
27
22
|
monitoring: {development: '', staging: '', production: ''}
|
@@ -67,21 +62,19 @@ module AppMonitor
|
|
67
62
|
end
|
68
63
|
|
69
64
|
def send_exception(exception)
|
70
|
-
type = 'Error'
|
71
65
|
unless ignored_exception(@config[:ignore_exceptions], exception)
|
72
66
|
event = EventNotification.build_exception_hash(exception, @request)
|
73
|
-
@event = event.
|
74
|
-
notify_on_event(
|
67
|
+
@event = event.to_json
|
68
|
+
notify_on_event("Error")
|
75
69
|
end
|
76
70
|
end
|
77
71
|
|
78
72
|
def send_rake_event(exception, options = {})
|
79
|
-
type = 'RakeError'
|
80
73
|
configure
|
81
|
-
unless (ignored_exception(@config[:ignore_exceptions], exception) ||
|
74
|
+
unless (ignored_exception(@config[:ignore_exceptions], exception) || !@config[:monitoring]["#{Rails.env.to_s.downcase}"])
|
82
75
|
event = EventNotification.build_rake_event(exception, options)
|
83
|
-
@event = event.
|
84
|
-
notify_on_event(
|
76
|
+
@event = event.to_json
|
77
|
+
notify_on_event("RakeError")
|
85
78
|
end
|
86
79
|
end
|
87
80
|
|
@@ -91,20 +84,6 @@ module AppMonitor
|
|
91
84
|
end
|
92
85
|
|
93
86
|
def notify_on_event(type)
|
94
|
-
response = send_request(type)
|
95
|
-
Rails.logger.debug ("Appmonitor: Event has been sent")
|
96
|
-
|
97
|
-
unless response.kind_of? Net::HTTPSuccess
|
98
|
-
Rails.logger.warn('Appmonitor WARNING: Something went wrong, please check your config')
|
99
|
-
Rails.logger.warn("AppMonitor WARNING: Response ''#{response.code}: #{response.message}''")
|
100
|
-
puts 'Appmonitor WARNING: Something went wrong, please check your config'
|
101
|
-
puts "AppMonitor WARNING: Response #{response.inspect}"
|
102
|
-
end
|
103
|
-
|
104
|
-
send_to_github if @github
|
105
|
-
end
|
106
|
-
|
107
|
-
def send_request(type)
|
108
87
|
uri = URI.parse(API_MESSAGE_URL)
|
109
88
|
https = Net::HTTP.new(uri.host, uri.port)
|
110
89
|
https.use_ssl = false
|
@@ -113,13 +92,19 @@ module AppMonitor
|
|
113
92
|
'appm_projectId' => @config[:project_id],
|
114
93
|
'appm_type' => type}
|
115
94
|
)
|
116
|
-
request.body = @event.to_json
|
117
|
-
https.request(request)
|
118
95
|
|
119
|
-
|
96
|
+
request.body = @event
|
97
|
+
response = https.request(request)
|
120
98
|
|
121
|
-
|
122
|
-
|
99
|
+
Rails.logger.debug ("Appmonitor: Event has been sent")
|
100
|
+
puts 'Appmonitor: Event has been sent'
|
101
|
+
|
102
|
+
unless response.kind_of? Net::HTTPSuccess
|
103
|
+
Rails.logger.warn('Appmonitor WARNING: Something went wrong, please check your config')
|
104
|
+
Rails.logger.warn("AppMonitor WARNING: Response ''#{response.code}: #{response.message}''")
|
105
|
+
puts 'Appmonitor WARNING: Something went wrong, please check your config'
|
106
|
+
puts "AppMonitor WARNING: Response #{response.inspect}"
|
107
|
+
end
|
123
108
|
end
|
124
109
|
|
125
110
|
end
|
@@ -13,7 +13,7 @@ module AppMonitor
|
|
13
13
|
def display_error_message_with_notifications(ex)
|
14
14
|
display_error_message_without_notifications(ex)
|
15
15
|
en = AppMonitor::EventNotifier.new(nil)
|
16
|
-
en.send_rake_event(ex
|
16
|
+
en.send_rake_event(ex,:rake_command_line => reconstruct_command_line)
|
17
17
|
end
|
18
18
|
|
19
19
|
def reconstruct_command_line
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Team Gappers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -38,21 +38,7 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
|
42
|
-
name: octokit
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
description: AppMonitor agent for ruby language. We provide GIthub Integration - issues.
|
41
|
+
description: AppMonitor agent for ruby language
|
56
42
|
email: gappers-tip-fiit@googlegroups.com
|
57
43
|
executables: []
|
58
44
|
extensions: []
|
@@ -61,8 +47,6 @@ files:
|
|
61
47
|
- lib/appmonitor.rb
|
62
48
|
- lib/appmonitor/event_notification.rb
|
63
49
|
- lib/appmonitor/event_notifier.rb
|
64
|
-
- lib/appmonitor/github/issue.rb
|
65
|
-
- lib/appmonitor/github_api.rb
|
66
50
|
- lib/appmonitor/rake_patch.rb
|
67
51
|
homepage: http://rubygems.org/gems/appmonitor
|
68
52
|
licenses:
|
@@ -89,3 +73,4 @@ signing_key:
|
|
89
73
|
specification_version: 4
|
90
74
|
summary: AppMonitor agent for ruby language
|
91
75
|
test_files: []
|
76
|
+
has_rdoc:
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module AppMonitor
|
2
|
-
module Github
|
3
|
-
class Issue
|
4
|
-
|
5
|
-
RUBY_OBJECT_REGEX = /\#\<.*\>/
|
6
|
-
|
7
|
-
def initialize(event)
|
8
|
-
@event=event
|
9
|
-
end
|
10
|
-
|
11
|
-
def title
|
12
|
-
"#{@event[:klass]}/#{@event[:method]}: #{@event[:message]}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def type
|
16
|
-
@event[:type]
|
17
|
-
end
|
18
|
-
|
19
|
-
def error_request_details
|
20
|
-
content = "**URL**: #{@event[:url]}\n"
|
21
|
-
content << "**Parameters**: #{@event[:params]}\n"
|
22
|
-
content << "**IP address**: #{@event[:ip_address]}\n"
|
23
|
-
content << "**Session:** #{@event[:session]}\n"
|
24
|
-
end
|
25
|
-
|
26
|
-
def body
|
27
|
-
content = "### First occurrence of this #{@event[:type]}\n"
|
28
|
-
content << "**Action:** #{@event[:klass]}/#{@event[:method]}\n"
|
29
|
-
content << "**Message**: #{@event[:message]}\n"
|
30
|
-
content << "**Environment:** #{@event[:environment]}\n"
|
31
|
-
content << "**Timestamp:** #{@event[:time]}\n"
|
32
|
-
content << "**Human time:** #{Time.at(@event[:time].to_i).strftime("Occurred on %d/%m/%Y at %H:%M:%S")}\n"
|
33
|
-
if type == 'Error'
|
34
|
-
content << error_request_details
|
35
|
-
end
|
36
|
-
content << "**Stacktrace:** \n```ruby\n#{@event[:stack_trace]}\n```"
|
37
|
-
end
|
38
|
-
|
39
|
-
def additional_occurrence_comment
|
40
|
-
content = "### Another occurrence of this #{@event[:type]}\n"
|
41
|
-
content << "**Environment:** #{@event[:environment]}\n"
|
42
|
-
content << "**Timestamp:** #{@event[:time]}\n"
|
43
|
-
content << "**Human time:** #{Time.at(@event[:time].to_i).strftime("Occurred on %d/%m/%Y at %H:%M:%S")}\n"
|
44
|
-
if type == 'Error'
|
45
|
-
content << error_request_details
|
46
|
-
end
|
47
|
-
content
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.compare_issues(existing, new)
|
51
|
-
existing_title = existing.title.gsub(RUBY_OBJECT_REGEX, '')
|
52
|
-
new_title = new.title.gsub(RUBY_OBJECT_REGEX, '')
|
53
|
-
existing_title == new_title
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'octokit'
|
2
|
-
require 'appmonitor/github/issue'
|
3
|
-
|
4
|
-
module AppMonitor
|
5
|
-
class GithubApi
|
6
|
-
attr_accessor :client, :repo
|
7
|
-
|
8
|
-
GITHUB_API_ISSUED_CLOSED_STATE = 'closed'
|
9
|
-
|
10
|
-
def initialize(args)
|
11
|
-
@client = Octokit::Client.new(:access_token => args[:token])
|
12
|
-
@repo = args[:repo]
|
13
|
-
end
|
14
|
-
|
15
|
-
def issues
|
16
|
-
@client.issues(@repo, state: 'all')
|
17
|
-
end
|
18
|
-
|
19
|
-
def handle_event(event)
|
20
|
-
begin
|
21
|
-
@issue = AppMonitor::Github::Issue.new(event)
|
22
|
-
existing_issue = find_issue(issues)
|
23
|
-
if existing_issue
|
24
|
-
reopen_issue(existing_issue[:number])
|
25
|
-
else
|
26
|
-
create_issue
|
27
|
-
end
|
28
|
-
rescue Octokit::Unauthorized
|
29
|
-
Rails.logger.warn('Appmonitor WARNING: Wrong Github credentials')
|
30
|
-
puts ('Appmonitor WARNING: Wrong Github credentials')
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def find_issue(issues)
|
35
|
-
issues.select { |x| AppMonitor::Github::Issue.compare_issues(x, @issue) }.first
|
36
|
-
end
|
37
|
-
|
38
|
-
def create_issue
|
39
|
-
|
40
|
-
@client.create_issue(@repo, @issue.title, @issue.body, labels: ['bug', @issue.type])
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
def reopen_issue(number)
|
45
|
-
@client.reopen_issue(@repo, number)
|
46
|
-
add_comment_to_an_issue(number, @issue.additional_occurrence_comment)
|
47
|
-
end
|
48
|
-
|
49
|
-
def add_comment_to_an_issue(number, comment)
|
50
|
-
@client.add_comment(@repo, number, comment)
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
end
|