commit
26064f95a1
2
Gemfile
2
Gemfile
|
@ -21,6 +21,8 @@ gem 'dalli'
|
||||||
gem 'pry'
|
gem 'pry'
|
||||||
gem 'metriks', '0.9.9.5'
|
gem 'metriks', '0.9.9.5'
|
||||||
|
|
||||||
|
gem 'skylight', github: 'henrikhodne/skylight-ruby', branch: 'sinatra-support'
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem 'rspec', '~> 2.13'
|
gem 'rspec', '~> 2.13'
|
||||||
gem 'factory_girl', '~> 2.4.0'
|
gem 'factory_girl', '~> 2.4.0'
|
||||||
|
|
13
Gemfile.lock
13
Gemfile.lock
|
@ -7,6 +7,14 @@ GIT
|
||||||
hashie (>= 1.1.0)
|
hashie (>= 1.1.0)
|
||||||
uuidtools
|
uuidtools
|
||||||
|
|
||||||
|
GIT
|
||||||
|
remote: git://github.com/henrikhodne/skylight-ruby.git
|
||||||
|
revision: 44904fe824e202deb6389fb9b547bd4345abdc2d
|
||||||
|
branch: sinatra-support
|
||||||
|
specs:
|
||||||
|
skylight (0.3.10)
|
||||||
|
activesupport (>= 3.0.0)
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/rack/rack-contrib.git
|
remote: git://github.com/rack/rack-contrib.git
|
||||||
revision: 951760b1710634623ebbccef8d65df9139bb41c2
|
revision: 951760b1710634623ebbccef8d65df9139bb41c2
|
||||||
|
@ -53,7 +61,7 @@ GIT
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/travis-ci/travis-support.git
|
remote: git://github.com/travis-ci/travis-support.git
|
||||||
revision: d2cce5dbbee64fb1574386b16da3768feadb372a
|
revision: d37220d766a3fb218f0f8e60ab8764034f6b376f
|
||||||
specs:
|
specs:
|
||||||
travis-support (0.0.1)
|
travis-support (0.0.1)
|
||||||
|
|
||||||
|
@ -69,7 +77,6 @@ PATH
|
||||||
travis-api (0.0.1)
|
travis-api (0.0.1)
|
||||||
backports (~> 2.5)
|
backports (~> 2.5)
|
||||||
memcachier
|
memcachier
|
||||||
newrelic_rpm (~> 3.6.6)
|
|
||||||
pg (~> 0.13.2)
|
pg (~> 0.13.2)
|
||||||
rack-contrib (~> 1.1)
|
rack-contrib (~> 1.1)
|
||||||
rack-ssl (~> 1.3, >= 1.3.3)
|
rack-ssl (~> 1.3, >= 1.3.3)
|
||||||
|
@ -175,7 +182,6 @@ GEM
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
net-http-persistent (2.9.4)
|
net-http-persistent (2.9.4)
|
||||||
net-http-pipeline (1.0.1)
|
net-http-pipeline (1.0.1)
|
||||||
newrelic_rpm (3.6.9.171)
|
|
||||||
pg (0.13.2)
|
pg (0.13.2)
|
||||||
polyglot (0.3.4)
|
polyglot (0.3.4)
|
||||||
proxies (0.2.1)
|
proxies (0.2.1)
|
||||||
|
@ -299,6 +305,7 @@ DEPENDENCIES
|
||||||
sentry-raven!
|
sentry-raven!
|
||||||
sinatra
|
sinatra
|
||||||
sinatra-contrib
|
sinatra-contrib
|
||||||
|
skylight!
|
||||||
travis-api!
|
travis-api!
|
||||||
travis-core!
|
travis-core!
|
||||||
travis-sidekiqs!
|
travis-sidekiqs!
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
---
|
|
||||||
staging:
|
|
||||||
error_collector:
|
|
||||||
capture_source: true
|
|
||||||
enabled: true
|
|
||||||
ignore_errors: ActionController::RoutingError
|
|
||||||
apdex_t: 0.5
|
|
||||||
ssl: false
|
|
||||||
monitor_mode: true
|
|
||||||
license_key: <%= ENV["NEW_RELIC_LICENSE_KEY"] %>
|
|
||||||
developer_mode: false
|
|
||||||
app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>
|
|
||||||
transaction_tracer:
|
|
||||||
record_sql: obfuscated
|
|
||||||
enabled: true
|
|
||||||
stack_trace_threshold: 0.5
|
|
||||||
transaction_threshold: apdex_f
|
|
||||||
capture_params: false
|
|
||||||
log_level: info
|
|
||||||
|
|
||||||
production:
|
|
||||||
error_collector:
|
|
||||||
capture_source: true
|
|
||||||
enabled: true
|
|
||||||
ignore_errors: ActionController::RoutingError
|
|
||||||
apdex_t: 0.5
|
|
||||||
ssl: false
|
|
||||||
monitor_mode: true
|
|
||||||
license_key: <%= ENV["NEW_RELIC_LICENSE_KEY"] %>
|
|
||||||
developer_mode: false
|
|
||||||
app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>
|
|
||||||
transaction_tracer:
|
|
||||||
record_sql: obfuscated
|
|
||||||
enabled: true
|
|
||||||
stack_trace_threshold: 0.5
|
|
||||||
transaction_threshold: apdex_f
|
|
||||||
capture_params: false
|
|
||||||
log_level: info
|
|
||||||
|
|
|
@ -7,10 +7,12 @@ class Travis::Api::App
|
||||||
class Base < Sinatra::Base
|
class Base < Sinatra::Base
|
||||||
register Extensions::SmartConstants
|
register Extensions::SmartConstants
|
||||||
|
|
||||||
configure :production do
|
if ENV['SKYLIGHT_APPLICATION']
|
||||||
require 'newrelic_rpm'
|
require 'skylight'
|
||||||
::NewRelic::Agent.manual_start()
|
require 'travis/api/app/skylight/dalli_probe'
|
||||||
::NewRelic::Agent.after_fork(:force_reconnect => true)
|
require 'travis/api/app/skylight/redis_probe'
|
||||||
|
require 'travis/api/app/skylight/service_probe'
|
||||||
|
register ::Skylight::Sinatra
|
||||||
end
|
end
|
||||||
|
|
||||||
error NotImplementedError do
|
error NotImplementedError do
|
||||||
|
|
24
lib/travis/api/app/skylight/dalli_probe.rb
Normal file
24
lib/travis/api/app/skylight/dalli_probe.rb
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
require 'skylight'
|
||||||
|
require 'travis/api/app'
|
||||||
|
|
||||||
|
class Travis::Api::App
|
||||||
|
module Skylight
|
||||||
|
class DalliProbe
|
||||||
|
def install
|
||||||
|
%w[get get_multi set add incr decr delete replace append prepend].each do |method_name|
|
||||||
|
next unless Dalli::Client.method_defined?(method_name.to_sym)
|
||||||
|
Dalli::Client.class_eval <<-EOD
|
||||||
|
alias #{method_name}_without_sk #{method_name}
|
||||||
|
def #{method_name}(*args, &block)
|
||||||
|
::Skylight.instrument(category: "api.memcache.#{method_name}", title: "Memcache #{method_name}") do
|
||||||
|
#{method_name}_without_sk(*args, &block)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
EOD
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
::Skylight::Probes.register("Dalli::Client", "dalli", DalliProbe.new)
|
||||||
|
end
|
||||||
|
end
|
31
lib/travis/api/app/skylight/redis_probe.rb
Normal file
31
lib/travis/api/app/skylight/redis_probe.rb
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
require 'skylight'
|
||||||
|
require 'travis/api/app'
|
||||||
|
|
||||||
|
class Travis::Api::App
|
||||||
|
module Skylight
|
||||||
|
class RedisProbe
|
||||||
|
def install
|
||||||
|
::Redis::Client.class_eval do
|
||||||
|
alias call_without_sk call
|
||||||
|
|
||||||
|
def call(command_parts, &block)
|
||||||
|
command = command_parts[0].upcase
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
category: "api.redis.#{command.downcase}",
|
||||||
|
title: "Redis #{command}",
|
||||||
|
annotations: {
|
||||||
|
command: command.to_s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::Skylight.instrument(opts) do
|
||||||
|
call_without_sk(command_parts, &block)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
::Skylight::Probes.register("Redis", "redis", RedisProbe.new)
|
||||||
|
end
|
||||||
|
end
|
51
lib/travis/api/app/skylight/service_probe.rb
Normal file
51
lib/travis/api/app/skylight/service_probe.rb
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
require 'skylight'
|
||||||
|
require 'travis/api/app'
|
||||||
|
|
||||||
|
class Travis::Api::App
|
||||||
|
module Skylight
|
||||||
|
class ServiceProbe
|
||||||
|
class ServiceProxy < Delegator
|
||||||
|
def initialize(key, service)
|
||||||
|
super(service)
|
||||||
|
@key = key
|
||||||
|
@service = service
|
||||||
|
end
|
||||||
|
|
||||||
|
def __getobj__
|
||||||
|
@service
|
||||||
|
end
|
||||||
|
|
||||||
|
def __setobj__(obj)
|
||||||
|
@service = obj
|
||||||
|
end
|
||||||
|
|
||||||
|
def run(*args)
|
||||||
|
opts = {
|
||||||
|
category: "api.service.#{@key}",
|
||||||
|
title: "Service #{@key}",
|
||||||
|
annotations: {
|
||||||
|
service: @key.to_s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::Skylight.instrument(opts) do
|
||||||
|
@service.run(*args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def install
|
||||||
|
Travis::Services::Helpers.class_eval do
|
||||||
|
alias service_without_sk service
|
||||||
|
|
||||||
|
def service(key, *args)
|
||||||
|
s = service_without_sk(key, *args)
|
||||||
|
ServiceProxy.new(key, s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
::Skylight::Probes.register("Travis::Services::Helpers", "travis/services/helpers", ServiceProbe.new)
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,8 +1,6 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
# encoding: UTF-8
|
# encoding: UTF-8
|
||||||
|
|
||||||
ENV["NEWRELIC_ENABLE"] = "false"
|
|
||||||
|
|
||||||
require 'bundler/setup'
|
require 'bundler/setup'
|
||||||
require 'travis/api/app'
|
require 'travis/api/app'
|
||||||
require 'pry'
|
require 'pry'
|
||||||
|
|
0
tmp/.gitkeep
Normal file
0
tmp/.gitkeep
Normal file
|
@ -55,7 +55,6 @@ Gem::Specification.new do |s|
|
||||||
"bin/start-nginx",
|
"bin/start-nginx",
|
||||||
"config.ru",
|
"config.ru",
|
||||||
"config/database.yml",
|
"config/database.yml",
|
||||||
"config/newrelic.yml",
|
|
||||||
"config/nginx.conf.erb",
|
"config/nginx.conf.erb",
|
||||||
"config/puma-config.rb",
|
"config/puma-config.rb",
|
||||||
"config/unicorn.rb",
|
"config/unicorn.rb",
|
||||||
|
@ -174,7 +173,6 @@ Gem::Specification.new do |s|
|
||||||
|
|
||||||
s.add_dependency 'backports', '~> 2.5'
|
s.add_dependency 'backports', '~> 2.5'
|
||||||
s.add_dependency 'pg', '~> 0.13.2'
|
s.add_dependency 'pg', '~> 0.13.2'
|
||||||
s.add_dependency 'newrelic_rpm', '~> 3.6.6'
|
|
||||||
s.add_dependency 'thin', '~> 1.4'
|
s.add_dependency 'thin', '~> 1.4'
|
||||||
s.add_dependency 'sinatra', '~> 1.3'
|
s.add_dependency 'sinatra', '~> 1.3'
|
||||||
s.add_dependency 'sinatra-contrib', '~> 1.3'
|
s.add_dependency 'sinatra-contrib', '~> 1.3'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user