appinsights 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +188 -0
- data/appinsights.gemspec +1 -1
- data/lib/appinsights.rb +7 -7
- data/lib/{config_loader.rb → appinsights/config_loader.rb} +0 -0
- data/lib/{context.rb → appinsights/context.rb} +0 -0
- data/lib/{errors.rb → appinsights/errors.rb} +0 -0
- data/lib/{installers → appinsights/installers}/base.rb +0 -0
- data/lib/appinsights/installers/rails.rb +18 -0
- data/lib/{installers → appinsights/installers}/sinatra.rb +3 -3
- data/lib/{middlewares.rb → appinsights/middlewares.rb} +0 -0
- data/lib/{middlewares → appinsights/middlewares}/exception_handling.rb +0 -0
- data/lib/{version.rb → appinsights/version.rb} +1 -1
- metadata +11 -11
- data/lib/installers/rails.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d20dcc9f60a001f8ace5c97f9e9cb8157c0a9de
|
4
|
+
data.tar.gz: 83e30a63ca45290f6089ca93a221a67b85908307
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff7a702005292eaa2e6d2e8dbc6ff960c8cfe82c1905d2a9f642e48418d501a0fe1d58980d2a3a978c539661071c07b9975cc4ef6acee48f5645647bdd7f0137
|
7
|
+
data.tar.gz: 969fa848c73a60da51faec3ffb187082f5598bda75ac607cc8590757a3c9684b3a1d30a851b5f91bd50c4e42f55a990494dd23278e469602464e96d86d7ae360
|
data/README.md
CHANGED
@@ -5,3 +5,191 @@
|
|
5
5
|
[![Dependency Status](https://gemnasium.com/citrusbyte/appinsights.svg)](https://gemnasium.com/citrusbyte/appinsights)
|
6
6
|
|
7
7
|
Microsoft Application Insights Auto Installer for Ruby frameworks
|
8
|
+
|
9
|
+
## Dependencies
|
10
|
+
|
11
|
+
`appinsights` requires:
|
12
|
+
|
13
|
+
- Ruby 2.0 or later
|
14
|
+
- `application_insights` to connect with Microsoft Application Insights
|
15
|
+
- `toml-rb` to read the config file
|
16
|
+
|
17
|
+
Install dependencies using `dep` is easy as run:
|
18
|
+
|
19
|
+
$ dep install
|
20
|
+
|
21
|
+
# Installation
|
22
|
+
|
23
|
+
Install the latest release using `gem`
|
24
|
+
|
25
|
+
$ gem install appinsights
|
26
|
+
|
27
|
+
Or just add `gem 'appinsights'` in your _Gemfile_ and then run:
|
28
|
+
|
29
|
+
$ bundle install
|
30
|
+
|
31
|
+
## Automatic
|
32
|
+
|
33
|
+
This is the recommended installation and it will be automatically fired if your
|
34
|
+
application uses one of the supported frameworks:
|
35
|
+
|
36
|
+
- Rails
|
37
|
+
- Sinatra
|
38
|
+
|
39
|
+
In case the _automatic installation_ is not available (non-supported framework,
|
40
|
+
missing config file, etc.) you can always install the Application Insights Instruments
|
41
|
+
using the _Manual_ installation
|
42
|
+
|
43
|
+
|
44
|
+
### Rails
|
45
|
+
|
46
|
+
`rails` automatically loads the gem if it is listed on the _Gemfile_.
|
47
|
+
There is nothing else to do.
|
48
|
+
|
49
|
+
### Sinatra
|
50
|
+
|
51
|
+
`sinatra`, like other `rack` based frameworks, needs to require the library.
|
52
|
+
|
53
|
+
Add the following line in your _sinatra application file_:
|
54
|
+
|
55
|
+
require 'appinsights'
|
56
|
+
|
57
|
+
> NOTE: Ensure that `sinatra` was required first.
|
58
|
+
|
59
|
+
## Manual
|
60
|
+
|
61
|
+
Choosing a _Manual_ configuration is for those who have an application using a
|
62
|
+
non-supported framework or the ones who wants to have total control of the application.
|
63
|
+
|
64
|
+
The only requisite for your _application_ is to support usage of `rack` middlewares.
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
require 'appinsights'
|
68
|
+
|
69
|
+
# app - Application where we will attach the middlewares
|
70
|
+
# root - Root directory of the application
|
71
|
+
# filename (optional) - Relative path of the config file
|
72
|
+
# logger (optional) - Logger object to log errors and info.
|
73
|
+
|
74
|
+
installer = AppInsights::BaseInstaller.new app, root, filename, logger
|
75
|
+
|
76
|
+
# Now you have an installer ready to be executed
|
77
|
+
|
78
|
+
installer.install
|
79
|
+
|
80
|
+
# This will load the configuration file and add the middlewares enabled on the
|
81
|
+
# config file.
|
82
|
+
```
|
83
|
+
|
84
|
+
In case you want to check the configs or which middlewares were enabled using
|
85
|
+
ruby code, here is some useful lines of code:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
# Check the Context settings.
|
89
|
+
Application::Context.context
|
90
|
+
=> #<ApplicationInsights::Channel::TelemetryContext:0x007f961dbf3b18 ...>
|
91
|
+
|
92
|
+
|
93
|
+
# Check the Middlewares settings
|
94
|
+
AppInsights::Middlewares.settings
|
95
|
+
=> [{"name"=>"AppInsights::ExceptionHandling", "enabled"=>true}, ... ]
|
96
|
+
|
97
|
+
# Check the Middlewares enabled
|
98
|
+
AppInsights::Middlewares.enabled
|
99
|
+
=> [[AppInsights::ExceptionHandling, {}], ... ]
|
100
|
+
```
|
101
|
+
|
102
|
+
|
103
|
+
# Configuration file
|
104
|
+
|
105
|
+
`appinsights` uses TOML, a minimal configuration file format that's easy to read.
|
106
|
+
If you are not familiar with TOML, please [read the specs][toml_specs].
|
107
|
+
|
108
|
+
## Structure
|
109
|
+
|
110
|
+
There are two big _structures_ inside the configuration file.
|
111
|
+
|
112
|
+
1. Application Insights Context settings
|
113
|
+
2. Middlewares
|
114
|
+
|
115
|
+
### 1. Application Insights Context settings
|
116
|
+
|
117
|
+
All this settings must be grouped by _'ai'_ table.
|
118
|
+
This settings are defined for every _contract_ on the [SDK][ai_sdk]
|
119
|
+
|
120
|
+
The only exception and the most important setting is the **instrumentation_key**
|
121
|
+
that must be defined under the _'ai'_ table.
|
122
|
+
|
123
|
+
Lets see an example:
|
124
|
+
|
125
|
+
```toml
|
126
|
+
[ai]
|
127
|
+
instrumentation_key = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
|
128
|
+
custom = 4
|
129
|
+
properties = 'belong to the context'
|
130
|
+
|
131
|
+
# Contracts configuration
|
132
|
+
|
133
|
+
[ai.application]
|
134
|
+
ver = '0.2.0'
|
135
|
+
|
136
|
+
[ai.device]
|
137
|
+
id = 'device001'
|
138
|
+
os = 'OSX'
|
139
|
+
|
140
|
+
[ai.user]
|
141
|
+
id = 'a_user_id'
|
142
|
+
accountId = '1234567890'
|
143
|
+
```
|
144
|
+
|
145
|
+
### 2. Middlewares
|
146
|
+
|
147
|
+
This is the other important structure on the configuration file.
|
148
|
+
Here we will define which middleware we want to use and enable or disable it.
|
149
|
+
We defined `appinsights` to be as flexible as possible, so we can configure
|
150
|
+
middlewares defined in other libraries but they were defined in our scope.
|
151
|
+
|
152
|
+
Of course that you can add extra parameters for your personal usage but
|
153
|
+
there are two required parameters for every _middleware_ definition:
|
154
|
+
|
155
|
+
- `name` - Complete constant name of the middleware
|
156
|
+
- `enabled` - boolean
|
157
|
+
|
158
|
+
And given there are some _middleware_ which needs extra parameters at the
|
159
|
+
initialization process, you can define a hash with the attributes and we will
|
160
|
+
preserve the order of the attributes defined.
|
161
|
+
|
162
|
+
If you are a little confused, here is a valid example for both scenarios:
|
163
|
+
|
164
|
+
```toml
|
165
|
+
[[middleware]]
|
166
|
+
name = 'AppInsights::ExceptionHandling'
|
167
|
+
enabled = true
|
168
|
+
|
169
|
+
[[middleware]]
|
170
|
+
name = 'ApplicationInsights::Rack::TrackRequest'
|
171
|
+
enabled = true
|
172
|
+
|
173
|
+
[middleware.initialize]
|
174
|
+
instrumentation_key = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
|
175
|
+
buffer_size = 250
|
176
|
+
send_interval = 30
|
177
|
+
```
|
178
|
+
|
179
|
+
## Location
|
180
|
+
|
181
|
+
By default `appinsights` will search for the configuration file, starting at
|
182
|
+
the root of the project
|
183
|
+
|
184
|
+
- `./config/application_insights.toml`
|
185
|
+
- `./application_insights.toml`
|
186
|
+
|
187
|
+
You can also use a custom file name and path before start the application.
|
188
|
+
Set the environment variable `AI_CONFIG_RPATH` with the relative path of the file
|
189
|
+
|
190
|
+
$ export AI_CONFIG_RPATH='./settings/appinsights_settings.toml'
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
[toml_specs]: https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.3.1.md
|
195
|
+
[ai_sdk]: https://github.com/Microsoft/AppInsights-Ruby/tree/master/lib/application_insights/channel/contracts
|
data/appinsights.gemspec
CHANGED
data/lib/appinsights.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require_relative 'errors'
|
2
|
-
require_relative 'context'
|
3
|
-
require_relative 'middlewares'
|
4
|
-
require_relative 'config_loader'
|
5
|
-
require_relative 'installers/base'
|
1
|
+
require_relative 'appinsights/errors'
|
2
|
+
require_relative 'appinsights/context'
|
3
|
+
require_relative 'appinsights/middlewares'
|
4
|
+
require_relative 'appinsights/config_loader'
|
5
|
+
require_relative 'appinsights/installers/base'
|
6
6
|
|
7
7
|
module AppInsights
|
8
8
|
if defined?(Rails::VERSION)
|
9
|
-
require_relative 'installers/rails'
|
9
|
+
require_relative 'appinsights/installers/rails'
|
10
10
|
elsif defined?(Sinatra::VERSION)
|
11
|
-
require_relative 'installers/sinatra'
|
11
|
+
require_relative 'appinsights/installers/sinatra'
|
12
12
|
else
|
13
13
|
require 'logger'
|
14
14
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module AppInsights
|
4
|
+
class RailsInstaller < Rails::Railtie
|
5
|
+
initializer 'appinsights.start_plugin' do |_app|
|
6
|
+
init Rails.root
|
7
|
+
end
|
8
|
+
|
9
|
+
def init(root, filename = nil)
|
10
|
+
installer = AppInsights::BaseInstaller.new config.app_middleware,
|
11
|
+
root,
|
12
|
+
filename,
|
13
|
+
Rails.logger
|
14
|
+
|
15
|
+
installer.install
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -7,9 +7,9 @@ module AppInsights
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.init(root, filename = nil)
|
10
|
-
installer = AppInsights::
|
11
|
-
|
12
|
-
|
10
|
+
installer = AppInsights::BaseInstaller.new Sinatra::Application,
|
11
|
+
root,
|
12
|
+
filename
|
13
13
|
|
14
14
|
installer.install
|
15
15
|
end
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appinsights
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emiliano Mancuso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: toml-rb
|
@@ -68,15 +68,15 @@ files:
|
|
68
68
|
- README.md
|
69
69
|
- appinsights.gemspec
|
70
70
|
- lib/appinsights.rb
|
71
|
-
- lib/config_loader.rb
|
72
|
-
- lib/context.rb
|
73
|
-
- lib/errors.rb
|
74
|
-
- lib/installers/base.rb
|
75
|
-
- lib/installers/rails.rb
|
76
|
-
- lib/installers/sinatra.rb
|
77
|
-
- lib/middlewares.rb
|
78
|
-
- lib/middlewares/exception_handling.rb
|
79
|
-
- lib/version.rb
|
71
|
+
- lib/appinsights/config_loader.rb
|
72
|
+
- lib/appinsights/context.rb
|
73
|
+
- lib/appinsights/errors.rb
|
74
|
+
- lib/appinsights/installers/base.rb
|
75
|
+
- lib/appinsights/installers/rails.rb
|
76
|
+
- lib/appinsights/installers/sinatra.rb
|
77
|
+
- lib/appinsights/middlewares.rb
|
78
|
+
- lib/appinsights/middlewares/exception_handling.rb
|
79
|
+
- lib/appinsights/version.rb
|
80
80
|
- rakefile
|
81
81
|
- test/base_installer_test.rb
|
82
82
|
- test/config_loader_test.rb
|
data/lib/installers/rails.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module AppInsights
|
2
|
-
class RailsInstaller < Rails::Railtie
|
3
|
-
initializer 'appinsights.start_plugin' do |_app|
|
4
|
-
init Rails.root
|
5
|
-
end
|
6
|
-
|
7
|
-
def init(root, filename = nil)
|
8
|
-
installer = AppInsights::Base.new config.app_middleware,
|
9
|
-
root,
|
10
|
-
filename,
|
11
|
-
Rails.logger
|
12
|
-
|
13
|
-
installer.install
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|