telltale 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +7 -0
- data/README.md +30 -0
- data/VERSION +1 -0
- data/lib/telltale.rb +65 -0
- data/lib/telltale/railtie.rb +7 -0
- data/telltale.gemspec +21 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1b7021ce6b44df68ba8aac0c3072106ac3a73ffd
|
4
|
+
data.tar.gz: c95c0a9856f51a4e5c017662a85917f45bac8432
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d67a8ddc2d486db0321163d20d8b24eb916a22ce5f0621be0ede7bf28c4428b26ca84212775fda4bad94587f2159c34816d5aac209d402bc6a6e5fab164f12a6
|
7
|
+
data.tar.gz: e9b646fda19c3a43404062c080f37bf06c983b75a7955a125c34feae903a3f198d73217776ba85ecc3dbc64548b257dd94944254b806342c5743ead4c613a465
|
data/CHANGELOG.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# Telltale
|
2
|
+
|
3
|
+
Report Rails application metrics to OpenTSDB.
|
4
|
+
|
5
|
+
## Metrics
|
6
|
+
|
7
|
+
These numbers are currently reported:
|
8
|
+
|
9
|
+
* `<prefix>.rails.total_time`: Total request time in seconds
|
10
|
+
|
11
|
+
The default `prefix` is "telltale" and can be configured with the environment variable `TELLTALE_PREFIX`.
|
12
|
+
|
13
|
+
## Tags
|
14
|
+
|
15
|
+
The following tags are available for all metrics:
|
16
|
+
|
17
|
+
* `http_status`: HTTP Status code
|
18
|
+
* `controller`: Name of the controller
|
19
|
+
* `action`: Name of the action in the form `controller_name.action_name`
|
20
|
+
* `host`: Name of the host the Rails app is running on
|
21
|
+
* `environment`: The Rails app environment
|
22
|
+
* `app`: The application's name
|
23
|
+
|
24
|
+
## Configuration
|
25
|
+
|
26
|
+
Telltale uses the following environment variables for configuration:
|
27
|
+
|
28
|
+
* `TELLTALE_OPENTSDB_HOST`: The host to report to
|
29
|
+
* `TELLTALE_OPENTSDB_PORT`: The port opentsdb listens on. Default is 4242
|
30
|
+
* `TELLTALE_PREFIX`: Some prefix for the metric name. Default is `telltale`
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/lib/telltale.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'opentsdb'
|
2
|
+
|
3
|
+
module Telltale
|
4
|
+
class << self
|
5
|
+
def setup!
|
6
|
+
if report?
|
7
|
+
configure_request_instrumentation
|
8
|
+
Rails.logger.info "Telltale started, will report to #{opentsdb_host} on port #{opentsdb_port}"
|
9
|
+
else
|
10
|
+
Rails.logger.error 'TELLTALE_OPENTSDB_HOST not set. Telltale will not report to OpenTSDB.'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def configure_request_instrumentation
|
15
|
+
ActiveSupport::Notifications.subscribe 'process_action.action_controller' do |_name, started, finished, _unique_id, payload|
|
16
|
+
next unless report?
|
17
|
+
data = {
|
18
|
+
metric: "#{metric_prefix}.rails.total_time",
|
19
|
+
value: ((finished - started) * 1000).ceil,
|
20
|
+
timestamp: Time.now.to_i,
|
21
|
+
tags: tags(payload),
|
22
|
+
}
|
23
|
+
client.put(data)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def report?
|
28
|
+
opentsdb_host.present?
|
29
|
+
end
|
30
|
+
|
31
|
+
def tags(payload)
|
32
|
+
{
|
33
|
+
http_status: http_status_from_payload(payload),
|
34
|
+
controller: payload[:controller],
|
35
|
+
action: [payload[:controller], payload[:action]].join('.'),
|
36
|
+
host: Socket.gethostname,
|
37
|
+
environment: Rails.env,
|
38
|
+
app: Rails.application.class.parent_name.downcase,
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def opentsdb_port
|
43
|
+
ENV['TELLTALE_OPENTSDB_PORT'] || 4242
|
44
|
+
end
|
45
|
+
|
46
|
+
def opentsdb_host
|
47
|
+
ENV['TELLTALE_OPENTSDB_HOST']
|
48
|
+
end
|
49
|
+
|
50
|
+
def metric_prefix
|
51
|
+
ENV['TELLTALE_PREFIX'] || 'telltale'
|
52
|
+
end
|
53
|
+
|
54
|
+
def client
|
55
|
+
OpenTSDB::Client.new(hostname: opentsdb_host, port: opentsdb_port)
|
56
|
+
end
|
57
|
+
|
58
|
+
def http_status_from_payload(payload)
|
59
|
+
return payload[:status] if payload[:status]
|
60
|
+
return 500 if payload[:exception].present?
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
require 'telltale/railtie'
|
data/telltale.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'telltale'
|
7
|
+
s.version = File.read(File.expand_path('../VERSION', __FILE__)).strip
|
8
|
+
s.authors = ['Philippe Hassig']
|
9
|
+
s.email = ['phil@nine.ch']
|
10
|
+
s.homepage = 'http://github.com/ninech/'
|
11
|
+
s.license = 'MIT'
|
12
|
+
s.summary = 'Report Rails application metrics to OpenTSDB'
|
13
|
+
s.description = 'Report Rails application metrics to OpenTSDB'
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
|
20
|
+
s.add_runtime_dependency 'opentsdb', '~> 0.2.0'
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: telltale
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Philippe Hassig
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: opentsdb
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.2.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.2.0
|
27
|
+
description: Report Rails application metrics to OpenTSDB
|
28
|
+
email:
|
29
|
+
- phil@nine.ch
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- CHANGELOG.md
|
35
|
+
- README.md
|
36
|
+
- VERSION
|
37
|
+
- lib/telltale.rb
|
38
|
+
- lib/telltale/railtie.rb
|
39
|
+
- telltale.gemspec
|
40
|
+
homepage: http://github.com/ninech/
|
41
|
+
licenses:
|
42
|
+
- MIT
|
43
|
+
metadata: {}
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubyforge_project:
|
60
|
+
rubygems_version: 2.4.5.1
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: Report Rails application metrics to OpenTSDB
|
64
|
+
test_files: []
|