tsd_metrics 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.
- data/lib/tsd_metrics.rb +54 -0
- metadata +93 -0
data/lib/tsd_metrics.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require_relative 'tsd_metrics/tsd_metric_2c'
|
2
|
+
require_relative 'tsd_metrics/queue_writer'
|
3
|
+
require_relative 'tsd_metrics/async_queue_writer'
|
4
|
+
require_relative 'tsd_metrics/metric_builder_for_single_struct_receiver'
|
5
|
+
require_relative 'tsd_metrics/json_formatter_receiver'
|
6
|
+
require 'thread'
|
7
|
+
require 'logger'
|
8
|
+
|
9
|
+
module TsdMetrics
|
10
|
+
@metricBuilder = nil
|
11
|
+
@writerThread = nil
|
12
|
+
@fileWriter = nil
|
13
|
+
|
14
|
+
def self.buildMetric
|
15
|
+
init() if @metricBuilder == nil
|
16
|
+
@metricBuilder.build
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.init(filename="tsd_metric_2c.json")
|
20
|
+
outputFileQueue = Queue.new
|
21
|
+
# create writer
|
22
|
+
writer = QueueWriter.new(outputFileQueue)
|
23
|
+
# create json formatter to take newly-closed metrics
|
24
|
+
formatterStructReveiver = JsonFormatterReceiver.new(writer)
|
25
|
+
@metricBuilder = MetricBuilderForSingleStructReceiver.new(formatterStructReveiver)
|
26
|
+
logger = createHeaderlessLogger(filename, "daily")
|
27
|
+
# Create async monitor
|
28
|
+
@queueToFileWriter = AsyncQueueWriter.new(outputFileQueue, logger)
|
29
|
+
@queueToFileWriter.start
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def self.createHeaderlessLogger(*args)
|
35
|
+
# Disable the logger header
|
36
|
+
Logger::LogDevice.class_eval do
|
37
|
+
alias orig_add_log_header add_log_header
|
38
|
+
|
39
|
+
def add_log_header(file)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Quick, create an instance
|
44
|
+
logger = Logger.new(*args)
|
45
|
+
|
46
|
+
# Restore the old method:
|
47
|
+
Logger::LogDevice.class_eval do
|
48
|
+
alias add_log_header orig_add_log_header
|
49
|
+
end
|
50
|
+
|
51
|
+
logger
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tsd_metrics
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matthew Hayter
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-02-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.14'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.14'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: timecop
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.7'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.7'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: pry
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.9'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.9'
|
62
|
+
description: A client for logging to TSD-Aggregation-logging-compatible JSON files
|
63
|
+
email: matthewhayter@gmail.com
|
64
|
+
executables: []
|
65
|
+
extensions: []
|
66
|
+
extra_rdoc_files: []
|
67
|
+
files:
|
68
|
+
- lib/tsd_metrics.rb
|
69
|
+
homepage:
|
70
|
+
licenses: []
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.8.25
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: TSD Metrics client for Ruby
|
93
|
+
test_files: []
|