logstash-output-graphtastic 0.1.4 → 0.1.5
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 +4 -4
- data/CHANGELOG.md +0 -0
- data/NOTICE.TXT +5 -0
- data/README.md +1 -1
- data/lib/logstash/outputs/graphtastic.rb +34 -34
- data/logstash-output-graphtastic.gemspec +1 -1
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f94772319557d56e697387c4f31a763a83d5fb0c
|
4
|
+
data.tar.gz: b917178284eaf1237fb9236c91335e11b1487969
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fc2d694b8e0d162bde98d617335e09cab91c3e8129cad182087f81d645e79bbff9ca331384f78fdb78edc439e0309207d669c8155f9b0571c77c648c613a35b
|
7
|
+
data.tar.gz: db8800377eec4f6534ddeb82b1b97c0ae469d407cbc5fce363fcc22a34ebaf2df973807dc440bbdf026fd407c8ea9b9eb09f93b531d17738b1068125514fe086
|
data/CHANGELOG.md
ADDED
File without changes
|
data/NOTICE.TXT
ADDED
data/README.md
CHANGED
@@ -13,7 +13,7 @@ Logstash provides infrastructure to automatically generate documentation for thi
|
|
13
13
|
|
14
14
|
## Need Help?
|
15
15
|
|
16
|
-
Need help? Try #logstash on freenode IRC or the logstash
|
16
|
+
Need help? Try #logstash on freenode IRC or the https://discuss.elastic.co/c/logstash discussion forum.
|
17
17
|
|
18
18
|
## Developing
|
19
19
|
|
@@ -8,32 +8,32 @@ require "logstash/namespace"
|
|
8
8
|
# a respectable alternative that would also run on any Windows
|
9
9
|
# machine - which is the problem and why I am not going with Graphite
|
10
10
|
# and statsd. This application provides multiple integration options
|
11
|
-
# so as to make its use under your network requirements possible.
|
11
|
+
# so as to make its use under your network requirements possible.
|
12
12
|
# This includes a REST option that is always enabled for your use
|
13
|
-
# in case you want to write a small script to send the occasional
|
14
|
-
# metric data.
|
13
|
+
# in case you want to write a small script to send the occasional
|
14
|
+
# metric data.
|
15
15
|
#
|
16
16
|
# Find GraphTastic here : https://github.com/NickPadilla/GraphTastic
|
17
17
|
class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
18
|
-
|
18
|
+
|
19
19
|
config_name "graphtastic"
|
20
20
|
|
21
21
|
# options are udp(fastest - default) - rmi(faster) - rest(fast) - tcp(don't use TCP yet - some problems - errors out on linux)
|
22
22
|
config :integration, :validate => ["udp","tcp","rmi","rest"], :default => "udp"
|
23
|
-
|
23
|
+
|
24
24
|
# if using rest as your end point you need to also provide the application url
|
25
25
|
# it defaults to localhost/graphtastic. You can customize the application url
|
26
|
-
# by changing the name of the .war file. There are other ways to change the
|
26
|
+
# by changing the name of the .war file. There are other ways to change the
|
27
27
|
# application context, but they vary depending on the Application Server in use.
|
28
28
|
# Please consult your application server documentation for more on application
|
29
29
|
# contexts.
|
30
30
|
config :context, :validate => :string, :default => "graphtastic"
|
31
|
-
|
32
|
-
# metrics hash - you will provide a name for your metric and the metric
|
31
|
+
|
32
|
+
# metrics hash - you will provide a name for your metric and the metric
|
33
33
|
# data as key value pairs. so for example:
|
34
34
|
#
|
35
35
|
# [source,ruby]
|
36
|
-
# metrics => { "Response" => "%{response}" }
|
36
|
+
# metrics => { "Response" => "%{response}" }
|
37
37
|
#
|
38
38
|
# example for the logstash config
|
39
39
|
#
|
@@ -42,30 +42,31 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
42
42
|
#
|
43
43
|
# NOTE: you can also use the dynamic fields for the key value as well as the actual value
|
44
44
|
config :metrics, :validate => :hash, :default => {}
|
45
|
-
|
45
|
+
|
46
46
|
# host for the graphtastic server - defaults to 127.0.0.1
|
47
47
|
config :host, :validate => :string, :default => "127.0.0.1"
|
48
|
-
|
48
|
+
|
49
49
|
# port for the graphtastic instance - defaults to 1199 for RMI, 1299 for TCP, 1399 for UDP, and 8080 for REST
|
50
50
|
config :port, :validate => :number
|
51
|
-
|
51
|
+
|
52
52
|
# number of attempted retry after send error - currently only way to integrate
|
53
53
|
# errored transactions - should try and save to a file or later consumption
|
54
54
|
# either by graphtastic utility or by this program after connectivity is
|
55
|
-
# ensured to be established.
|
55
|
+
# ensured to be established.
|
56
56
|
config :retries, :validate => :number, :default => 1
|
57
|
-
|
58
|
-
# the number of metrics to send to GraphTastic at one time. 60 seems to be the perfect
|
59
|
-
# amount for UDP, with default packet size.
|
57
|
+
|
58
|
+
# the number of metrics to send to GraphTastic at one time. 60 seems to be the perfect
|
59
|
+
# amount for UDP, with default packet size.
|
60
60
|
config :batch_number, :validate => :number, :default => 60
|
61
|
-
|
61
|
+
|
62
62
|
# setting allows you to specify where we save errored transactions
|
63
63
|
# this makes the most sense at this point - will need to decide
|
64
64
|
# on how we reintegrate these error metrics
|
65
65
|
# NOT IMPLEMENTED!
|
66
66
|
config :error_file, :validate => :string, :default => ""
|
67
|
-
|
67
|
+
|
68
68
|
public
|
69
|
+
|
69
70
|
def register
|
70
71
|
@batch = []
|
71
72
|
begin
|
@@ -80,7 +81,7 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
80
81
|
registry = java.rmi.registry.LocateRegistry.getRegistry(@host, @port);
|
81
82
|
@remote = registry.lookup("RmiMetricService")
|
82
83
|
elsif @integration.downcase == "rest"
|
83
|
-
require "net/http"
|
84
|
+
require "net/http"
|
84
85
|
if @port.nil?
|
85
86
|
@port = 8080
|
86
87
|
gem "mail" #outputs/email, # License: MIT License
|
@@ -88,12 +89,11 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
88
89
|
@http = Net::HTTP.new(@host, @port)
|
89
90
|
end
|
90
91
|
@logger.info("GraphTastic Output Successfully Registered! Using #{@integration} Integration!")
|
91
|
-
rescue
|
92
|
+
rescue
|
92
93
|
@logger.error("*******ERROR : #{$!}")
|
93
94
|
end
|
94
95
|
end
|
95
96
|
|
96
|
-
public
|
97
97
|
def receive(event)
|
98
98
|
return unless output?(event)
|
99
99
|
# Set Intersection - returns a new array with the items that are the same between the two
|
@@ -105,25 +105,25 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
105
105
|
@retry = 1
|
106
106
|
@logger.debug("Event found for GraphTastic!", :tags => @tags, :event => event)
|
107
107
|
@metrics.each do |name, metric|
|
108
|
-
postMetric(event.sprintf(name),event.sprintf(metric),(event
|
108
|
+
postMetric(event.sprintf(name), event.sprintf(metric), (event.timestamp.to_i * 1000)) #unix_timestamp is what I need in seconds - multiply by 1000 to make milliseconds.
|
109
109
|
end
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
def postMetric(name, metric, timestamp)
|
113
|
-
message = name+","+metric+","+timestamp.to_s
|
113
|
+
message = name + "," + metric + "," + timestamp.to_s
|
114
114
|
if @batch.length < @batch_number
|
115
115
|
@batch.push(message)
|
116
116
|
else
|
117
|
-
flushMetrics()
|
118
|
-
end
|
117
|
+
flushMetrics()
|
118
|
+
end
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
def flushMetrics()
|
122
122
|
begin
|
123
123
|
if @integration.downcase == "tcp"
|
124
124
|
flushViaTCP()
|
125
125
|
elsif @integration.downcase == "rmi"
|
126
|
-
flushViaRMI()
|
126
|
+
flushViaRMI()
|
127
127
|
elsif @integration.downcase == "udp"
|
128
128
|
flushViaUDP()
|
129
129
|
elsif @integration.downcase == "rest"
|
@@ -141,7 +141,7 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
144
|
-
|
144
|
+
|
145
145
|
# send metrics via udp
|
146
146
|
def flushViaUDP()
|
147
147
|
if @port.nil?
|
@@ -150,7 +150,7 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
150
150
|
udpsocket.send(@batch.join(','), 0, @host, @port)
|
151
151
|
@logger.debug("GraphTastic Sent Message Using UDP : #{@batch.join(',')}")
|
152
152
|
end
|
153
|
-
|
153
|
+
|
154
154
|
# send metrics via REST
|
155
155
|
def flushViaREST()
|
156
156
|
request = Net::HTTP::Put.new("/#{@context}/addMetric/#{@batch.join(',')}")
|
@@ -158,9 +158,9 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
158
158
|
if response == 'ERROR'
|
159
159
|
raise 'Error happend when sending metric to GraphTastic using REST!'
|
160
160
|
end
|
161
|
-
@logger.debug("GraphTastic Sent Message Using REST : #{@batch.join(',')}", :response => response.inspect)
|
161
|
+
@logger.debug("GraphTastic Sent Message Using REST : #{@batch.join(',')}", :response => response.inspect)
|
162
162
|
end
|
163
|
-
|
163
|
+
|
164
164
|
# send metrics via RMI
|
165
165
|
def flushViaRMI()
|
166
166
|
if RUBY_ENGINE != "jruby"
|
@@ -169,7 +169,7 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
169
169
|
@remote.insertMetrics(@batch.join(','))
|
170
170
|
@logger.debug("GraphTastic Sent Message Using RMI : #{@batch.join(',')}")
|
171
171
|
end
|
172
|
-
|
172
|
+
|
173
173
|
# send metrics via tcp
|
174
174
|
def flushViaTCP()
|
175
175
|
# to correctly read the line we need to ensure we send \r\n at the end of every message.
|
@@ -183,5 +183,5 @@ class LogStash::Outputs::GraphTastic < LogStash::Outputs::Base
|
|
183
183
|
end
|
184
184
|
|
185
185
|
def udpsocket; @socket ||= UDPSocket.new end
|
186
|
-
|
186
|
+
|
187
187
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-output-graphtastic'
|
4
|
-
s.version = '0.1.
|
4
|
+
s.version = '0.1.5'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Send metrics to GraphTastic"
|
7
7
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-graphtastic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
14
|
+
name: logstash-core
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - '>='
|
17
18
|
- !ruby/object:Gem::Version
|
@@ -19,10 +20,7 @@ dependencies:
|
|
19
20
|
- - <
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 2.0.0
|
22
|
-
|
23
|
-
prerelease: false
|
24
|
-
type: :runtime
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
26
24
|
requirements:
|
27
25
|
- - '>='
|
28
26
|
- !ruby/object:Gem::Version
|
@@ -30,20 +28,22 @@ dependencies:
|
|
30
28
|
- - <
|
31
29
|
- !ruby/object:Gem::Version
|
32
30
|
version: 2.0.0
|
31
|
+
prerelease: false
|
32
|
+
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
|
34
|
+
name: logstash-devutils
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
36
|
requirements:
|
36
37
|
- - '>='
|
37
38
|
- !ruby/object:Gem::Version
|
38
39
|
version: '0'
|
39
|
-
|
40
|
-
prerelease: false
|
41
|
-
type: :development
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
43
41
|
requirements:
|
44
42
|
- - '>='
|
45
43
|
- !ruby/object:Gem::Version
|
46
44
|
version: '0'
|
45
|
+
prerelease: false
|
46
|
+
type: :development
|
47
47
|
description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
|
48
48
|
email: info@elastic.co
|
49
49
|
executables: []
|
@@ -51,9 +51,11 @@ extensions: []
|
|
51
51
|
extra_rdoc_files: []
|
52
52
|
files:
|
53
53
|
- .gitignore
|
54
|
+
- CHANGELOG.md
|
54
55
|
- CONTRIBUTORS
|
55
56
|
- Gemfile
|
56
57
|
- LICENSE
|
58
|
+
- NOTICE.TXT
|
57
59
|
- README.md
|
58
60
|
- Rakefile
|
59
61
|
- lib/logstash/outputs/graphtastic.rb
|