canary_ipa 0.1.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
+ SHA256:
3
+ metadata.gz: a8c0b039fc3f9703bc1fcfb811b639faf990d6f853f09456790c74e33512b4fd
4
+ data.tar.gz: 855f9d7efdcb7f13a80a081848274067628a837602602bc8f8b44205c67f8e90
5
+ SHA512:
6
+ metadata.gz: '062291508bede280a514ea8b685f786f0bcaedc7d80f5196974c3245963a9d56927fc54cd988089fda3c92f7976a3bd4a7aecb74dacd8dee37cce1547f528af7'
7
+ data.tar.gz: 75ffd7186d7c31a9ecf6ba964584fee83cceded341ba9e957b82e506f965cbda2b7e8408b7d2ee3643353bb98b0750a3856865e5646cc146dad0764cc60e8d11
data/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # Canary In-Process Agent
2
+
3
+ This Rails Plugin/Gem contains the Canary Monitoring In-Process Agent.
4
+
5
+ The goal of this agent is simple: all outgoing HTTP traffic gets intercepted and is sent off
6
+ to the local Canary Monitoring Agent, which sifts through the data and decides what to do with it.
7
+
8
+ It is kept very simple on purpose: it will time the call, and then send some elementary
9
+ data to the host's agent per UDP. The overhead of this is in the order of microseconds,
10
+ and an UDP `send()` will not block; this way, we can be sure that your application will
11
+ not be impacted. All the heavy lifting is done in the Monitoring Agent, where it is fine
12
+ if stuff gets delayed, dropped, or whatever.
13
+
14
+ ## Usage
15
+
16
+ Just installing the Gem is enough. There is some optional configuration through the environment:
17
+
18
+ * `CANARY_MONITORING_AGENT_HOST` can be set to a hostname/IP to send the telemetry data to, the default
19
+ is to send to localhost.
20
+ * `CANARY_MONITORING_AGENT_PORT` can be set to a port to send the telemetry data to, the default is to
21
+ sent to port 51712.
22
+
23
+ ## Installation
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'canary_ipa'
28
+ ```
29
+
30
+ And then execute:
31
+ ```bash
32
+ $ bundle
33
+ ```
34
+
35
+ Or install it yourself as:
36
+ ```bash
37
+ $ gem install canary_ipa
38
+ ```
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require "bundler/setup"
2
+
3
+ require "bundler/gem_tasks"
4
+
5
+ require "rake/testtask"
6
+
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs << 'test'
9
+ t.pattern = 'test/**/*_test.rb'
10
+ t.verbose = false
11
+ end
12
+
13
+ task default: :test
data/lib/canary_ipa.rb ADDED
@@ -0,0 +1,24 @@
1
+ require "canary_ipa/version"
2
+ require "canary_ipa/railtie"
3
+
4
+ module CanaryIpa
5
+ module NetHttpExtensions
6
+ @@sock = UDPSocket.new
7
+ @@host = ENV["CANARY_MONITORING_AGENT_HOST"] || "127.0.0.1"
8
+ @@port = (ENV["CANARY_MONITORING_AGENT_PORT"] || "51712").to_i
9
+ def request(req, body = nil, &block)
10
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
+ result = super(req, body, &block)
12
+ delta = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
13
+ delta_ms = delta * 1000
14
+ @@sock.send("0\t#{req.method}\t#{@address}\t#{req.path}\t#{delta_ms}\n", 0, @@host, @@port)
15
+ #overhead = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start - delta
16
+ #puts "Measuring and UDP overhead: around #{overhead}s"
17
+ result
18
+ end
19
+ end
20
+ end
21
+
22
+ class Net::HTTP
23
+ prepend CanaryIpa::NetHttpExtensions
24
+ end
@@ -0,0 +1,4 @@
1
+ module CanaryIpa
2
+ class Railtie < ::Rails::Railtie
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module CanaryIpa
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :canary_ipa do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: canary_ipa
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Canary Monitoring, Inc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-03-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 6.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 6.1.1
27
+ description: Plugin to measure outgoing API call performance using Canary Monitoring
28
+ email:
29
+ - rubygems@canarymonitor.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - README.md
35
+ - Rakefile
36
+ - lib/canary_ipa.rb
37
+ - lib/canary_ipa/railtie.rb
38
+ - lib/canary_ipa/version.rb
39
+ - lib/tasks/canary_ipa_tasks.rake
40
+ homepage: https://canarymonitor.com
41
+ licenses:
42
+ - CC-BY-NC-ND
43
+ metadata:
44
+ homepage_uri: https://canarymonitor.com
45
+ source_code_uri: https://canarymonitor.com
46
+ changelog_uri: https://canarymonitor.com
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubygems_version: 3.1.4
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: Plugin to measure outgoing API call performance using Canary Monitoring
66
+ test_files: []