fluent-plugin-clickhouse-json-format-output 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f72bb8f8db72bc05e7d66e40b4b2b8d804fc55141eb5de9311d56e357b112b2b
4
+ data.tar.gz: e95b49aeb219ca98f5be627f19cc555007fd57739e227d6e4a8ee8fc45ae8020
5
+ SHA512:
6
+ metadata.gz: cc9b3fd21641a97a1759667af5ae965c91fda0d68a4dbea2483b1a2872fcd9c38d4d810e3512bbc2ee5088d30c50c0e7012ea1c83cadae19c129c137b8473b18
7
+ data.tar.gz: 508b8d9a5571208b42ed4f2dde5d62655c89cd4fc7672504ff23b17661a44ca19e21537b427f11607c44ffab540a0472797bc9ab3564917cdc2fe9cf257cafe0
@@ -0,0 +1,80 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ module Fluent
4
+ class ClickHouseJsonOutput < Fluent::BufferedOutput
5
+ Fluent::Plugin.register_output('clickhousejson', self)
6
+
7
+ include Fluent::SetTimeKeyMixin
8
+ include Fluent::SetTagKeyMixin
9
+
10
+ config_param :host, :string, :default => 'localhost'
11
+ config_param :port, :string, :default => 8123
12
+ config_param :url, :string, :default => nil
13
+ config_param :database, :string, :default => 'default'
14
+ config_param :username, :string, :default => 'default'
15
+ config_param :password, :string, :default => nil, :secret => true
16
+ config_param :table, :string, :default => nil
17
+
18
+ attr_accessor :handler
19
+ attr_accessor :path
20
+
21
+ def initialize
22
+ super
23
+
24
+ require 'click_house'
25
+ end
26
+
27
+ unless method_defined?(:log)
28
+ define_method('log') { $log }
29
+ end
30
+
31
+ def configure(conf)
32
+ super
33
+ @cf = {}
34
+ if conf['username']
35
+ @cf['username'] = conf['username']
36
+ end
37
+ if conf['password']
38
+ @cf['password'] = conf['password']
39
+ end
40
+
41
+ if conf['url']
42
+ @url = @url.split(',').map { |m| m.strip }
43
+ elsif conf['host']
44
+ @cf['host'] = conf['host']
45
+ end
46
+ if conf['port']
47
+ @cf['port'] = conf['port']
48
+ end
49
+
50
+ @cf['database'] = conf['database']
51
+ end
52
+
53
+ def start
54
+ super
55
+ end
56
+
57
+ def shutdown
58
+ super
59
+ end
60
+
61
+ def format(tag, time, record)
62
+ [tag, time, record].to_msgpack
63
+ end
64
+
65
+ def write(chunk)
66
+ ClickHouse.config do |config|
67
+ config.host = @cf['host']
68
+ config.port = @cf['port']
69
+ config.username = @cf['username']
70
+ config.password = @cf['password']
71
+ end
72
+ ClickHouse.connection.insert(@table) do |rows|
73
+ chunk.msgpack_each { |tag, time, record|
74
+ rows << JSON.parse(JSON[record])
75
+ }
76
+ rows
77
+ end
78
+ end
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-clickhouse-json-format-output
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - wangchao
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: fluentd
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.12'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: click_house
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.1'
69
+ description: Fluentd output inserted into ClickHouse with json format as fast column-oriented
70
+ OLAP DBMS.
71
+ email:
72
+ - 1695040842@qq.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - lib/fluent/plugin/out_clickhousejson.rb
78
+ homepage: https://github.com/wangchaoforever
79
+ licenses:
80
+ - MIT
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubygems_version: 3.1.6
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Fluentd output plugin for inserting into ClickHouse with json format.
101
+ test_files: []