logstash-output-kusto 1.0.0-java
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 +7 -0
- data/CHANGELOG.md +31 -0
- data/CONTRIBUTORS +10 -0
- data/Gemfile +20 -0
- data/LICENSE +201 -0
- data/README.md +79 -0
- data/lib/com/fasterxml/jackson/core/jackson-annotations/2.9.10/jackson-annotations-2.9.10.jar +0 -0
- data/lib/com/fasterxml/jackson/core/jackson-core/2.9.4/jackson-core-2.9.4.jar +0 -0
- data/lib/com/fasterxml/jackson/core/jackson-databind/2.9.10.7/jackson-databind-2.9.10.7.jar +0 -0
- data/lib/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar +0 -0
- data/lib/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar +0 -0
- data/lib/com/google/guava/guava/20.0/guava-20.0.jar +0 -0
- data/lib/com/microsoft/azure/adal4j/1.6.5/adal4j-1.6.5.jar +0 -0
- data/lib/com/microsoft/azure/azure-keyvault-core/1.0.0/azure-keyvault-core-1.0.0.jar +0 -0
- data/lib/com/microsoft/azure/azure-storage/8.3.0/azure-storage-8.3.0.jar +0 -0
- data/lib/com/microsoft/azure/kusto/kusto-data/2.1.2/kusto-data-2.1.2.jar +0 -0
- data/lib/com/microsoft/azure/kusto/kusto-ingest/2.1.2/kusto-ingest-2.1.2.jar +0 -0
- data/lib/com/nimbusds/lang-tag/1.5/lang-tag-1.5.jar +0 -0
- data/lib/com/nimbusds/nimbus-jose-jwt/9.3/nimbus-jose-jwt-9.3.jar +0 -0
- data/lib/com/nimbusds/oauth2-oidc-sdk/6.5/oauth2-oidc-sdk-6.5.jar +0 -0
- data/lib/com/sun/mail/javax.mail/1.6.1/javax.mail-1.6.1.jar +0 -0
- data/lib/com/univocity/univocity-parsers/2.1.1/univocity-parsers-2.1.1.jar +0 -0
- data/lib/commons-codec/commons-codec/1.14/commons-codec-1.14.jar +0 -0
- data/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar +0 -0
- data/lib/javax/activation/activation/1.1/activation-1.1.jar +0 -0
- data/lib/logstash-output-kusto_jars.rb +64 -0
- data/lib/logstash/outputs/kusto.rb +413 -0
- data/lib/logstash/outputs/kusto/ingestor.rb +123 -0
- data/lib/logstash/outputs/kusto/interval.rb +81 -0
- data/lib/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar +0 -0
- data/lib/net/minidev/json-smart/2.3/json-smart-2.3.jar +0 -0
- data/lib/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar +0 -0
- data/lib/org/apache/httpcomponents/httpclient/4.5.8/httpclient-4.5.8.jar +0 -0
- data/lib/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.jar +0 -0
- data/lib/org/jetbrains/annotations/17.0.0/annotations-17.0.0.jar +0 -0
- data/lib/org/json/json/20190722/json-20190722.jar +0 -0
- data/lib/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar +0 -0
- data/lib/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar +0 -0
- data/logstash-output-kusto.gemspec +35 -0
- data/spec/outputs/kusto/ingestor_spec.rb +109 -0
- data/spec/outputs/kusto_spec.rb +54 -0
- data/spec/spec_helpers.rb +21 -0
- metadata +203 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'logstash/outputs/base'
|
4
|
+
require 'logstash/namespace'
|
5
|
+
require 'logstash/errors'
|
6
|
+
|
7
|
+
class LogStash::Outputs::Kusto < LogStash::Outputs::Base
|
8
|
+
##
|
9
|
+
# Bare-bones utility for running a block of code at an interval.
|
10
|
+
#
|
11
|
+
class Interval
|
12
|
+
##
|
13
|
+
# Initializes a new Interval with the given arguments and starts it
|
14
|
+
# before returning it.
|
15
|
+
#
|
16
|
+
# @param interval [Integer] (see: Interval#initialize)
|
17
|
+
# @param procsy [#call] (see: Interval#initialize)
|
18
|
+
#
|
19
|
+
# @return [Interval]
|
20
|
+
#
|
21
|
+
def self.start(interval, procsy)
|
22
|
+
new(interval, procsy).tap(&:start)
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# @param interval [Integer]: time in seconds to wait between calling the given proc
|
27
|
+
# @param procsy [#call]: proc or lambda to call periodically; must not raise exceptions.
|
28
|
+
def initialize(interval, procsy)
|
29
|
+
@interval = interval
|
30
|
+
@procsy = procsy
|
31
|
+
|
32
|
+
# Mutex, ConditionVariable, etc.
|
33
|
+
@mutex = Mutex.new
|
34
|
+
@sleeper = ConditionVariable.new
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Starts the interval, or returns if it has already been started.
|
39
|
+
#
|
40
|
+
# @return [void]
|
41
|
+
def start
|
42
|
+
@mutex.synchronize do
|
43
|
+
return if @thread && @thread.alive?
|
44
|
+
|
45
|
+
@thread = Thread.new { run }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Stop the interval.
|
51
|
+
# Does not interrupt if execution is in-progress.
|
52
|
+
def stop
|
53
|
+
@mutex.synchronize do
|
54
|
+
@stopped = true
|
55
|
+
end
|
56
|
+
|
57
|
+
@thread && @thread.join
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# @return [Boolean]
|
62
|
+
def alive?
|
63
|
+
@thread && @thread.alive?
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def run
|
69
|
+
@mutex.synchronize do
|
70
|
+
loop do
|
71
|
+
@sleeper.wait(@mutex, @interval)
|
72
|
+
break if @stopped
|
73
|
+
|
74
|
+
@procsy.call
|
75
|
+
end
|
76
|
+
end
|
77
|
+
ensure
|
78
|
+
@sleeper.broadcast
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'logstash-output-kusto' #WATCH OUT: we hardcoded usage of this name in one of the classes.
|
3
|
+
s.version = '1.0.0'
|
4
|
+
s.licenses = ['Apache-2.0']
|
5
|
+
s.summary = 'Writes events to Azure Data Explorer (Kusto)'
|
6
|
+
s.description = 'This is a logstash output plugin used to write events to an Azure Data Explorer (a.k.a Kusto)'
|
7
|
+
s.homepage = 'https://github.com/Azure/logstash-output-kusto'
|
8
|
+
s.authors = ['Tamir Kamara', 'Asaf Mahlev']
|
9
|
+
s.email = 'nugetkusto@microsoft.com'
|
10
|
+
s.require_paths = ['lib']
|
11
|
+
s.platform = 'java'
|
12
|
+
|
13
|
+
# Files
|
14
|
+
s.files = Dir['lib/**/*', 'spec/**/*', 'vendor/**/*', '*.gemspec', '*.md', 'CONTRIBUTORS', 'Gemfile', 'LICENSE', 'NOTICE.TXT']
|
15
|
+
|
16
|
+
# Tests
|
17
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
|
+
|
19
|
+
# Special flag to let us know this is actually a logstash plugin
|
20
|
+
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "output" }
|
21
|
+
|
22
|
+
# Gem dependencies
|
23
|
+
s.add_runtime_dependency 'logstash-core-plugin-api', '~> 2.0'
|
24
|
+
s.add_runtime_dependency 'logstash-codec-json_lines'
|
25
|
+
s.add_runtime_dependency 'logstash-codec-line'
|
26
|
+
|
27
|
+
s.add_development_dependency 'logstash-devutils'
|
28
|
+
s.add_development_dependency 'flores'
|
29
|
+
s.add_development_dependency 'logstash-input-generator'
|
30
|
+
s.add_development_dependency 'ruby-maven', '~> 3.3.11'
|
31
|
+
|
32
|
+
# Jar dependencies
|
33
|
+
s.requirements << "jar 'com.microsoft.azure.kusto, kusto-ingest, 2.1.2"
|
34
|
+
s.add_runtime_dependency 'jar-dependencies'
|
35
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require_relative "../../spec_helpers.rb"
|
3
|
+
require 'logstash/outputs/kusto'
|
4
|
+
require 'logstash/outputs/kusto/ingestor'
|
5
|
+
|
6
|
+
describe LogStash::Outputs::Kusto::Ingestor do
|
7
|
+
|
8
|
+
let(:ingest_url) { "mycluster" }
|
9
|
+
let(:app_id) { "myid" }
|
10
|
+
let(:app_key) { LogStash::Util::Password.new("mykey") }
|
11
|
+
let(:app_tenant) { "mytenant" }
|
12
|
+
let(:database) { "mydatabase" }
|
13
|
+
let(:table) { "mytable" }
|
14
|
+
let(:json_mapping) { "mymapping" }
|
15
|
+
let(:delete_local) { false }
|
16
|
+
let(:logger) { spy('logger') }
|
17
|
+
|
18
|
+
describe '#initialize' do
|
19
|
+
|
20
|
+
it 'does not throw an error when initializing' do
|
21
|
+
# note that this will cause an internal error since connection is being tried.
|
22
|
+
# however we still want to test that all the java stuff is working as expected
|
23
|
+
expect {
|
24
|
+
ingestor = described_class.new(ingest_url, app_id, app_key, app_tenant, database, table, json_mapping, delete_local, logger)
|
25
|
+
ingestor.stop
|
26
|
+
}.not_to raise_error
|
27
|
+
end
|
28
|
+
|
29
|
+
dynamic_name_array = ['/a%{name}/', '/a %{name}/', '/a- %{name}/', '/a- %{name}']
|
30
|
+
|
31
|
+
context 'doesnt allow database to have some dynamic part' do
|
32
|
+
dynamic_name_array.each do |test_database|
|
33
|
+
it "with database: #{test_database}" do
|
34
|
+
expect {
|
35
|
+
ingestor = described_class.new(ingest_url, app_id, app_key, app_tenant, test_database, table, json_mapping, delete_local, logger)
|
36
|
+
ingestor.stop
|
37
|
+
}.to raise_error(LogStash::ConfigurationError)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'doesnt allow table to have some dynamic part' do
|
43
|
+
dynamic_name_array.each do |test_table|
|
44
|
+
it "with database: #{test_table}" do
|
45
|
+
expect {
|
46
|
+
ingestor = described_class.new(ingest_url, app_id, app_key, app_tenant, database, test_table, json_mapping, delete_local, logger)
|
47
|
+
ingestor.stop
|
48
|
+
}.to raise_error(LogStash::ConfigurationError)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'doesnt allow mapping to have some dynamic part' do
|
54
|
+
dynamic_name_array.each do |test_json_mapping|
|
55
|
+
it "with database: #{test_json_mapping}" do
|
56
|
+
expect {
|
57
|
+
ingestor = described_class.new(ingest_url, app_id, app_key, app_tenant, database, table, test_json_mapping, delete_local, logger)
|
58
|
+
ingestor.stop
|
59
|
+
}.to raise_error(LogStash::ConfigurationError)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
# describe 'receiving events' do
|
67
|
+
|
68
|
+
# context 'with non-zero flush interval' do
|
69
|
+
# let(:temporary_output_file) { Stud::Temporary.pathname }
|
70
|
+
|
71
|
+
# let(:event_count) { 100 }
|
72
|
+
# let(:flush_interval) { 5 }
|
73
|
+
|
74
|
+
# let(:events) do
|
75
|
+
# event_count.times.map do |idx|
|
76
|
+
# LogStash::Event.new('subject' => idx)
|
77
|
+
# end
|
78
|
+
# end
|
79
|
+
|
80
|
+
# let(:output) { described_class.new(options.merge( {'path' => temporary_output_file, 'flush_interval' => flush_interval, 'delete_temp_files' => false } )) }
|
81
|
+
|
82
|
+
# before(:each) { output.register }
|
83
|
+
|
84
|
+
# after(:each) do
|
85
|
+
# output.close
|
86
|
+
# File.exist?(temporary_output_file) && File.unlink(temporary_output_file)
|
87
|
+
# File.exist?(temporary_output_file + '.kusto') && File.unlink(temporary_output_file + '.kusto')
|
88
|
+
# end
|
89
|
+
|
90
|
+
# it 'eventually flushes without receiving additional events' do
|
91
|
+
# output.multi_receive_encoded(events)
|
92
|
+
|
93
|
+
# # events should not all be flushed just yet...
|
94
|
+
# expect(File.read(temporary_output_file)).to satisfy("have less than #{event_count} lines") do |contents|
|
95
|
+
# contents && contents.lines.count < event_count
|
96
|
+
# end
|
97
|
+
|
98
|
+
# # wait for the flusher to run...
|
99
|
+
# sleep(flush_interval + 1)
|
100
|
+
|
101
|
+
# # events should all be flushed
|
102
|
+
# expect(File.read(temporary_output_file)).to satisfy("have exactly #{event_count} lines") do |contents|
|
103
|
+
# contents && contents.lines.count == event_count
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
# end
|
107
|
+
|
108
|
+
# end
|
109
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'logstash/devutils/rspec/spec_helper'
|
3
|
+
require 'logstash/outputs/kusto'
|
4
|
+
require 'logstash/codecs/plain'
|
5
|
+
require 'logstash/event'
|
6
|
+
|
7
|
+
describe LogStash::Outputs::Kusto do
|
8
|
+
|
9
|
+
let(:options) { { "path" => "./kusto_tst/%{+YYYY-MM-dd-HH-mm}",
|
10
|
+
"ingest_url" => "mycluster",
|
11
|
+
"app_id" => "myid",
|
12
|
+
"app_key" => "mykey",
|
13
|
+
"app_tenant" => "mytenant",
|
14
|
+
"database" => "mydatabase",
|
15
|
+
"table" => "mytable",
|
16
|
+
"json_mapping" => "mymapping"
|
17
|
+
} }
|
18
|
+
|
19
|
+
describe '#register' do
|
20
|
+
|
21
|
+
it 'doesnt allow the path to start with a dynamic string' do
|
22
|
+
kusto = described_class.new(options.merge( {'path' => '/%{name}'} ))
|
23
|
+
expect { kusto.register }.to raise_error(LogStash::ConfigurationError)
|
24
|
+
kusto.close
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'path must include a dynamic string to allow file rotation' do
|
28
|
+
kusto = described_class.new(options.merge( {'path' => '/{name}'} ))
|
29
|
+
expect { kusto.register }.to raise_error(LogStash::ConfigurationError)
|
30
|
+
kusto.close
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
dynamic_name_array = ['/a%{name}/', '/a %{name}/', '/a- %{name}/', '/a- %{name}']
|
35
|
+
|
36
|
+
context 'doesnt allow the root directory to have some dynamic part' do
|
37
|
+
dynamic_name_array.each do |test_path|
|
38
|
+
it "with path: #{test_path}" do
|
39
|
+
kusto = described_class.new(options.merge( {'path' => test_path} ))
|
40
|
+
expect { kusto.register }.to raise_error(LogStash::ConfigurationError)
|
41
|
+
kusto.close
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'allow to have dynamic part after the file root' do
|
47
|
+
kusto = described_class.new(options.merge({'path' => '/tmp/%{name}'}))
|
48
|
+
expect { kusto.register }.not_to raise_error
|
49
|
+
kusto.close
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "logstash/devutils/rspec/spec_helper"
|
3
|
+
require "logstash/logging/logger"
|
4
|
+
|
5
|
+
LogStash::Logging::Logger::configure_logging("debug")
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
# register around filter that captures stdout and stderr
|
9
|
+
config.around(:each) do |example|
|
10
|
+
$stdout = StringIO.new
|
11
|
+
$stderr = StringIO.new
|
12
|
+
|
13
|
+
example.run
|
14
|
+
|
15
|
+
example.metadata[:stdout] = $stdout.string
|
16
|
+
example.metadata[:stderr] = $stderr.string
|
17
|
+
|
18
|
+
$stdout = STDOUT
|
19
|
+
$stderr = STDERR
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: logstash-output-kusto
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: java
|
6
|
+
authors:
|
7
|
+
- Tamir Kamara
|
8
|
+
- Asaf Mahlev
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2020-12-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
name: logstash-core-plugin-api
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '2.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
name: logstash-codec-json_lines
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
name: logstash-codec-line
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
name: logstash-devutils
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
name: flores
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
name: logstash-input-generator
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.3.11
|
104
|
+
name: ruby-maven
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 3.3.11
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
name: jar-dependencies
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: This is a logstash output plugin used to write events to an Azure Data
|
127
|
+
Explorer (a.k.a Kusto)
|
128
|
+
email: nugetkusto@microsoft.com
|
129
|
+
executables: []
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files: []
|
132
|
+
files:
|
133
|
+
- CHANGELOG.md
|
134
|
+
- CONTRIBUTORS
|
135
|
+
- Gemfile
|
136
|
+
- LICENSE
|
137
|
+
- README.md
|
138
|
+
- lib/com/fasterxml/jackson/core/jackson-annotations/2.9.10/jackson-annotations-2.9.10.jar
|
139
|
+
- lib/com/fasterxml/jackson/core/jackson-core/2.9.4/jackson-core-2.9.4.jar
|
140
|
+
- lib/com/fasterxml/jackson/core/jackson-databind/2.9.10.7/jackson-databind-2.9.10.7.jar
|
141
|
+
- lib/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar
|
142
|
+
- lib/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar
|
143
|
+
- lib/com/google/guava/guava/20.0/guava-20.0.jar
|
144
|
+
- lib/com/microsoft/azure/adal4j/1.6.5/adal4j-1.6.5.jar
|
145
|
+
- lib/com/microsoft/azure/azure-keyvault-core/1.0.0/azure-keyvault-core-1.0.0.jar
|
146
|
+
- lib/com/microsoft/azure/azure-storage/8.3.0/azure-storage-8.3.0.jar
|
147
|
+
- lib/com/microsoft/azure/kusto/kusto-data/2.1.2/kusto-data-2.1.2.jar
|
148
|
+
- lib/com/microsoft/azure/kusto/kusto-ingest/2.1.2/kusto-ingest-2.1.2.jar
|
149
|
+
- lib/com/nimbusds/lang-tag/1.5/lang-tag-1.5.jar
|
150
|
+
- lib/com/nimbusds/nimbus-jose-jwt/9.3/nimbus-jose-jwt-9.3.jar
|
151
|
+
- lib/com/nimbusds/oauth2-oidc-sdk/6.5/oauth2-oidc-sdk-6.5.jar
|
152
|
+
- lib/com/sun/mail/javax.mail/1.6.1/javax.mail-1.6.1.jar
|
153
|
+
- lib/com/univocity/univocity-parsers/2.1.1/univocity-parsers-2.1.1.jar
|
154
|
+
- lib/commons-codec/commons-codec/1.14/commons-codec-1.14.jar
|
155
|
+
- lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
|
156
|
+
- lib/javax/activation/activation/1.1/activation-1.1.jar
|
157
|
+
- lib/logstash-output-kusto_jars.rb
|
158
|
+
- lib/logstash/outputs/kusto.rb
|
159
|
+
- lib/logstash/outputs/kusto/ingestor.rb
|
160
|
+
- lib/logstash/outputs/kusto/interval.rb
|
161
|
+
- lib/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar
|
162
|
+
- lib/net/minidev/json-smart/2.3/json-smart-2.3.jar
|
163
|
+
- lib/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar
|
164
|
+
- lib/org/apache/httpcomponents/httpclient/4.5.8/httpclient-4.5.8.jar
|
165
|
+
- lib/org/apache/httpcomponents/httpcore/4.4.11/httpcore-4.4.11.jar
|
166
|
+
- lib/org/jetbrains/annotations/17.0.0/annotations-17.0.0.jar
|
167
|
+
- lib/org/json/json/20190722/json-20190722.jar
|
168
|
+
- lib/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar
|
169
|
+
- lib/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar
|
170
|
+
- logstash-output-kusto.gemspec
|
171
|
+
- spec/outputs/kusto/ingestor_spec.rb
|
172
|
+
- spec/outputs/kusto_spec.rb
|
173
|
+
- spec/spec_helpers.rb
|
174
|
+
homepage: https://github.com/Azure/logstash-output-kusto
|
175
|
+
licenses:
|
176
|
+
- Apache-2.0
|
177
|
+
metadata:
|
178
|
+
logstash_plugin: 'true'
|
179
|
+
logstash_group: output
|
180
|
+
post_install_message:
|
181
|
+
rdoc_options: []
|
182
|
+
require_paths:
|
183
|
+
- lib
|
184
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - ">="
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '0'
|
194
|
+
requirements:
|
195
|
+
- jar 'com.microsoft.azure.kusto, kusto-ingest, 2.1.2
|
196
|
+
rubygems_version: 3.0.6
|
197
|
+
signing_key:
|
198
|
+
specification_version: 4
|
199
|
+
summary: Writes events to Azure Data Explorer (Kusto)
|
200
|
+
test_files:
|
201
|
+
- spec/outputs/kusto/ingestor_spec.rb
|
202
|
+
- spec/outputs/kusto_spec.rb
|
203
|
+
- spec/spec_helpers.rb
|