core_to_rollbar 0.2.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8807ec0ce23b02d84f5516a3deea373cfeb86cf8
4
+ data.tar.gz: f57cdb34230d5e3f2d0f5e5b1e31b29314fbfe6b
5
+ SHA512:
6
+ metadata.gz: 87c87f5092577510d78f1a3084268406416b613b79f62fb10f156a667cb34d9fa58594db0749b470481a7978fb4fb78900d31b8ac54919aa55640b96a5ec9eab
7
+ data.tar.gz: 2c052ce7f719e809370acc154ed9de1b58562e158ac4a02ec77686b8316fa127a482fb4e1d441765a51f7930b163fd838ff2e40c34a9c6fb0d64a490c8ba4bc0
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/core_to_rollbar'
4
+
5
+ CoreToRollbar.new.run(ARGV) || abort
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+ require 'etc'
5
+ require 'rollbar'
6
+ require 'syslog'
7
+ require 'yaml'
8
+
9
+ APPORT_LOCATION = '/usr/share/apport/apport'.freeze
10
+ CONFIG_FILE = '/etc/core_to_rollbar.yaml'.freeze
11
+
12
+ class CoreToRollbar
13
+ def run(args)
14
+ # arguments assumed in core_pattern:
15
+ # %p %u %h %s %t %E %c %P
16
+ @pid, @uid, @host, @signal, @time, @executable, @soft_limit, @initial_pid = args
17
+
18
+ Syslog.open('core_to_rollbar', Syslog::LOG_CONS)
19
+ Syslog.log(Syslog::LOG_ERR, "Reporting a crash of #{@executable} [#{@pid}] to rollbar")
20
+
21
+ failed = false
22
+ begin
23
+ forward_to_rollbar
24
+ rescue => e
25
+ Syslog.log(Syslog::LOG_CRIT, "Could not report the crash to rollbar: #{e}")
26
+ failed = true
27
+ end
28
+ begin
29
+ forward_to_apport
30
+ rescue => e
31
+ Syslog.log(Syslog::LOG_CRIT, "Could not report the crash to apport: #{e}")
32
+ failed = true
33
+ end
34
+
35
+ !failed
36
+ end
37
+
38
+ private
39
+
40
+ def forward_to_rollbar
41
+ read_config
42
+
43
+ executable_fixed = @executable.tr('!', '/')
44
+ time_fixed = DateTime.strptime(@time, '%s')
45
+
46
+ message = "Process #{executable_fixed} [#{@pid}] running as uid #{@uid} on #{@host} crashed on signal #{@signal} at #{time_fixed}"
47
+
48
+ report_crash(message)
49
+ end
50
+
51
+ def forward_to_apport
52
+ exec(APPORT_LOCATION, @pid, @time, @soft_limit, @initial_pid)
53
+ end
54
+
55
+ def read_config
56
+ File.open(CONFIG_FILE) do |file|
57
+ @config = YAML.safe_load(file.read)
58
+ end
59
+ end
60
+
61
+ def report_crash(message)
62
+ Rollbar.configure do |config|
63
+ config.access_token = @config['access_token']
64
+ config.host = @host
65
+ config.environment = @config['environment'] || 'production'
66
+ end
67
+
68
+ Rollbar.error(message)
69
+ end
70
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: core_to_rollbar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Stan Pitucha
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rollbar
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description:
28
+ email: stan.pitucha@envato.com
29
+ executables:
30
+ - core_to_rollbar
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/core_to_rollbar
35
+ - lib/core_to_rollbar.rb
36
+ homepage:
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.6.8
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: Submits the crash report to rollbar and forwards it to apport
60
+ test_files: []