logstash-input-azurewadtable 0.9.1 → 0.9.2
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/lib/logstash/inputs/azurewadtable.rb +36 -3
- data/logstash-input-azurewadtable.gemspec +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: beb23cfe2ea41fa12ddda3b4621787935dd2702c
|
4
|
+
data.tar.gz: 47d847d746dfc9bc09c26cc9635a6b1d704866a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe7208633ee481551f0da0a69713cd7e3160423cf2cbb345ed8345da3c36c0cdbaf48ed5d14a8dc51c11439e2b5559d47e142c835f796dfe208536a3ba5ac7f2
|
7
|
+
data.tar.gz: f4ac28d8cfb5b2fa7f51682c082fc44e9529655ff0bbcfa230ba574da8e0ce1276dde40d2a225df869a66c708c7b88ba285f6b0b9929588eb445d630c9adbc17
|
@@ -15,6 +15,8 @@ class LogStash::Inputs::AzureWADTable < LogStash::Inputs::Base
|
|
15
15
|
config :table_name, :validate => :string
|
16
16
|
config :entity_count_to_process, :validate => :string, :default => 100
|
17
17
|
config :collection_start_time_utc, :validate => :string, :default => Time.now.utc.inspect
|
18
|
+
config :etw_pretty_print, :validate => :boolean, :default => false
|
19
|
+
config :idle_delay_seconds, :validate => :number, :default => 15
|
18
20
|
|
19
21
|
TICKS_SINCE_EPOCH = Time.utc(0001, 01, 01).to_i * 10000000
|
20
22
|
|
@@ -30,12 +32,16 @@ class LogStash::Inputs::AzureWADTable < LogStash::Inputs::Base
|
|
30
32
|
end
|
31
33
|
@azure_table_service = Azure::TableService.new
|
32
34
|
@last_timestamp = @collection_start_time_utc
|
35
|
+
@idle_delay = @idle_delay_seconds
|
33
36
|
end # register
|
34
37
|
|
35
38
|
public
|
36
39
|
def run(output_queue)
|
37
|
-
|
40
|
+
loop do
|
41
|
+
@logger.debug("Starting process method @" + Time.now.to_s);
|
38
42
|
process(output_queue)
|
43
|
+
@logger.debug("Starting delay of: " + @idle_delay_seconds.to_s + " seconds @" + Time.now.to_s);
|
44
|
+
sleep @idle_delay
|
39
45
|
end # loop
|
40
46
|
end # run
|
41
47
|
|
@@ -44,6 +50,7 @@ class LogStash::Inputs::AzureWADTable < LogStash::Inputs::Base
|
|
44
50
|
end
|
45
51
|
|
46
52
|
def process(output_queue)
|
53
|
+
@logger.debug(@last_timestamp)
|
47
54
|
# query data using start_from_time
|
48
55
|
query_filter = "PartitionKey gt '#{partitionkey_from_datetime(@last_timestamp)}' and PreciseTimeStamp gt datetime'#{@last_timestamp}'".gsub('"','')
|
49
56
|
query = { :top => @entity_count_to_process, :filter => query_filter }
|
@@ -53,12 +60,38 @@ class LogStash::Inputs::AzureWADTable < LogStash::Inputs::Base
|
|
53
60
|
result.each do |entity|
|
54
61
|
event = LogStash::Event.new(entity.properties)
|
55
62
|
event["type"] = @table_name
|
63
|
+
|
64
|
+
# Help pretty print etw files
|
65
|
+
if (@etw_pretty_print && !event["EventMessage"].nil? && !event["Message"].nil?)
|
66
|
+
logger.debug("event: " + event.to_s)
|
67
|
+
eventMessage = event["EventMessage"].to_s
|
68
|
+
message = event["Message"].to_s
|
69
|
+
logger.debug("EventMessage: " + eventMessage)
|
70
|
+
logger.debug("Message: " + message)
|
71
|
+
if (eventMessage.include? "%")
|
72
|
+
logger.debug("starting pretty print")
|
73
|
+
toReplace = eventMessage.scan(/%\d+/)
|
74
|
+
payload = message.scan(/(?<!\\S)([a-zA-Z]+)=(\"[^\"]*\")(?!\\S)/)
|
75
|
+
# Split up the format string to seperate all of the numbers
|
76
|
+
toReplace.each do |key|
|
77
|
+
logger.debug("Replacing key: " + key.to_s)
|
78
|
+
index = key.scan(/\d+/).join.to_i
|
79
|
+
newValue = payload[index - 1][1]
|
80
|
+
logger.debug("New Value: " + newValue)
|
81
|
+
eventMessage[key] = newValue
|
82
|
+
end
|
83
|
+
event["EventMessage"] = eventMessage
|
84
|
+
logger.debug("pretty print end. result: " + event["EventMessage"].to_s)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
56
88
|
output_queue << event
|
57
89
|
end # each block
|
58
|
-
|
90
|
+
@idle_delay = 0
|
59
91
|
@last_timestamp = result.last.properties["PreciseTimeStamp"].inspect
|
60
92
|
else
|
61
|
-
@logger.
|
93
|
+
@logger.debug("No new results found.")
|
94
|
+
@idle_delay = @idle_delay_seconds
|
62
95
|
end # if block
|
63
96
|
|
64
97
|
rescue => e
|
@@ -1,12 +1,12 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-azurewadtable'
|
3
|
-
s.version
|
3
|
+
s.version = '0.9.2'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "This plugin will collect Microsoft Azure Diagnostics data from Azure Storage."
|
6
6
|
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"
|
7
7
|
s.authors = ["Microsoft Corporation"]
|
8
8
|
s.email = 'juliusl@microsoft.com'
|
9
|
-
s.homepage = "https://github.com/juliusl/logstash-input-azurewadtable/
|
9
|
+
s.homepage = "https://github.com/juliusl/logstash-input-azurewadtable/"
|
10
10
|
s.require_paths = ["lib"]
|
11
11
|
|
12
12
|
# Files
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-azurewadtable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Microsoft Corporation
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logstash-core
|
@@ -72,7 +72,7 @@ files:
|
|
72
72
|
- lib/logstash/inputs/azurewadtable.rb
|
73
73
|
- logstash-input-azurewadtable.gemspec
|
74
74
|
- spec/inputs/azurewadtable_spec.rb
|
75
|
-
homepage: https://github.com/juliusl/logstash-input-azurewadtable/
|
75
|
+
homepage: https://github.com/juliusl/logstash-input-azurewadtable/
|
76
76
|
licenses:
|
77
77
|
- Apache License (2.0)
|
78
78
|
metadata:
|