fluent-plugin-rds-pgsql-log 0.3.0 → 0.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 05d2d7d1b6a3b106433747c8e6229f63bf602529
4
- data.tar.gz: aad9c859045a94d59d22b93aad98140a8ea8ca5f
3
+ metadata.gz: fab744e32ec93e5bef3dea688e69b125f07469e7
4
+ data.tar.gz: 5aa94105f7c5f92d986aab90d929505fb8ee1d1a
5
5
  SHA512:
6
- metadata.gz: 4508cfa98b617ff1709986a0986f0235f2b3cf40db3d283410b21317ad9d7994f6adb91c7bc155c51042d6026def2b5df9ff67a0df0f342b77e38d231ee1c2ff
7
- data.tar.gz: b8a3159094a83aff08f37150331d229b41b2df534a5e95bc430894459752888d914424be9a80a18e0cf62f0e72758e8fe8ca9f9a04610230634e1c38b7759179
6
+ metadata.gz: 28b7c0f858271e41ae47d07a94e33bd0be57f5dfa04d9d96db2185f612680280d803f7593ac534aa29ce8cf7574d8cee5a4ae157a2321ad73fe5557e9cadf8ad
7
+ data.tar.gz: 262bdd80dcf2f10924c23d69d91bbe271b3692983bf943d2045accb6e65098893a64ae5564b4701816862c8fc8cdad04d15c9032ed9356119424f2201ca9a864
data/README.md CHANGED
@@ -76,3 +76,5 @@ SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt (If you using amazon linux)
76
76
  ### 0.2.0
77
77
  - require fluentd version 0.14.0
78
78
 
79
+ ### 0.3.0
80
+ - use AWS SDK v3.x
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require "rake/testtask"
5
+ Rake::TestTask.new(:test) do |test|
6
+ test.libs << 'lib' << 'test'
7
+ test.pattern = 'test/**/test_*.rb'
8
+ test.verbose = true
9
+ end
10
+
11
+ task :default => :test
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-rds-pgsql-log"
6
- spec.version = "0.3.0"
6
+ spec.version = "0.3.1"
7
7
  spec.authors = ["shinsaka"]
8
8
  spec.email = ["shinx1265@gmail.com"]
9
9
  spec.summary = "Amazon RDS for PostgreSQL log input plugin"
@@ -20,4 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency "aws-sdk", "~> 3"
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "rake", "~> 12"
24
+ spec.add_development_dependency "test-unit", "~> 3.2"
25
+ spec.add_development_dependency "webmock", "~>3"
26
+ spec.add_development_dependency "simplecov", "~>0"
23
27
  end
@@ -44,7 +44,7 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
44
44
  end
45
45
  @rds = Aws::RDS::Client.new(options)
46
46
  rescue => e
47
- $log.warn "RDS Client error occurred: #{e.message}"
47
+ log.warn "RDS Client error occurred: #{e.message}"
48
48
  end
49
49
 
50
50
  @loop = Coolio::Loop.new
@@ -77,14 +77,14 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
77
77
  ec2 = Aws::EC2::Client.new(region: @region)
78
78
  !ec2.config.credentials.nil?
79
79
  rescue => e
80
- $log.warn "EC2 Client error occurred: #{e.message}"
80
+ log.warn "EC2 Client error occurred: #{e.message}"
81
81
  end
82
82
  end
83
83
 
84
84
  def get_and_parse_posfile
85
85
  begin
86
86
  # get & parse pos file
87
- $log.debug "pos file get start"
87
+ log.debug "pos file get start"
88
88
 
89
89
  pos_last_written_timestamp = 0
90
90
  pos_info = {}
@@ -94,27 +94,27 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
94
94
  pos_match = /^(\d+)$/.match(line)
95
95
  if pos_match
96
96
  pos_last_written_timestamp = pos_match[1].to_i
97
- $log.debug "pos_last_written_timestamp: #{pos_last_written_timestamp}"
97
+ log.debug "pos_last_written_timestamp: #{pos_last_written_timestamp}"
98
98
  end
99
99
 
100
100
  pos_match = /^(.+)\t(.+)$/.match(line)
101
101
  if pos_match
102
102
  pos_info[pos_match[1]] = pos_match[2]
103
- $log.debug "log_file: #{pos_match[1]}, marker: #{pos_match[2]}"
103
+ log.debug "log_file: #{pos_match[1]}, marker: #{pos_match[2]}"
104
104
  end
105
105
  end
106
106
  @pos_last_written_timestamp = pos_last_written_timestamp
107
107
  @pos_info = pos_info
108
108
  end
109
109
  rescue => e
110
- $log.warn "pos file get and parse error occurred: #{e.message}"
110
+ log.warn "pos file get and parse error occurred: #{e.message}"
111
111
  end
112
112
  end
113
113
 
114
114
  def put_posfile
115
115
  # pos file write
116
116
  begin
117
- $log.debug "pos file write"
117
+ log.debug "pos file write"
118
118
  File.open(@pos_file, File::WRONLY|File::TRUNC) do |file|
119
119
  file.puts @pos_last_written_timestamp.to_s
120
120
 
@@ -123,20 +123,20 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
123
123
  end
124
124
  end
125
125
  rescue => e
126
- $log.warn "pos file write error occurred: #{e.message}"
126
+ log.warn "pos file write error occurred: #{e.message}"
127
127
  end
128
128
  end
129
129
 
130
130
  def get_logfile_list
131
131
  begin
132
- $log.debug "get logfile-list from rds: db_instance_identifier=#{@db_instance_identifier}, pos_last_written_timestamp=#{@pos_last_written_timestamp}"
132
+ log.debug "get logfile-list from rds: db_instance_identifier=#{@db_instance_identifier}, pos_last_written_timestamp=#{@pos_last_written_timestamp}"
133
133
  @rds.describe_db_log_files(
134
134
  db_instance_identifier: @db_instance_identifier,
135
135
  file_last_written: @pos_last_written_timestamp,
136
136
  max_records: 10,
137
137
  )
138
138
  rescue => e
139
- $log.warn "RDS Client describe_db_log_files error occurred: #{e.message}"
139
+ log.warn "RDS Client describe_db_log_files error occurred: #{e.message}"
140
140
  end
141
141
  end
142
142
 
@@ -151,7 +151,7 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
151
151
  log_file_name = item[:log_file_name]
152
152
  marker = @pos_info.has_key?(log_file_name) ? @pos_info[log_file_name] : "0"
153
153
 
154
- $log.debug "download log from rds: log_file_name=#{log_file_name}, marker=#{marker}"
154
+ log.debug "download log from rds: log_file_name=#{log_file_name}, marker=#{marker}"
155
155
  logs = @rds.download_db_log_file_portion(
156
156
  db_instance_identifier: @db_instance_identifier,
157
157
  log_file_name: log_file_name,
@@ -164,7 +164,7 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
164
164
  end
165
165
  end
166
166
  rescue => e
167
- $log.warn e.message
167
+ log.warn e.message
168
168
  end
169
169
  end
170
170
 
@@ -179,17 +179,17 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
179
179
  raw_records += log.log_file_data.split("\n")
180
180
  end
181
181
  rescue => e
182
- $log.warn e.message
182
+ log.warn e.message
183
183
  end
184
184
  return raw_records
185
185
  end
186
186
 
187
187
  def parse_and_emit(raw_records, log_file_name)
188
188
  begin
189
- $log.debug "raw_records.count: #{raw_records.count}"
189
+ log.debug "raw_records.count: #{raw_records.count}"
190
190
  record = nil
191
191
  raw_records.each do |raw_record|
192
- $log.debug "raw_record=#{raw_record}"
192
+ log.debug "raw_record=#{raw_record}"
193
193
  line_match = LOG_REGEXP.match(raw_record)
194
194
 
195
195
  unless line_match
@@ -215,7 +215,7 @@ class Fluent::Plugin::RdsPgsqlLogInput < Fluent::Plugin::Input
215
215
  # emit last record
216
216
  router.emit(@tag, Fluent::Engine.now, record) unless record.nil?
217
217
  rescue => e
218
- $log.warn e.message
218
+ log.warn e.message
219
219
  end
220
220
  end
221
221
 
data/test/helper.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'bundler/setup'
2
+ require 'test/unit'
3
+ require 'webmock/test_unit'
4
+ require 'simplecov'
5
+
6
+ SimpleCov.start do
7
+ add_filter '/test/'
8
+ end
9
+
10
+ $LOAD_PATH.unshift(File.join(__dir__, '..', 'lib'))
11
+ $LOAD_PATH.unshift(__dir__)
12
+ require 'fluent/test'
13
+ require 'fluent/test/helpers'
14
+ require 'fluent/test/driver/input'
15
+ require 'fluent/plugin/in_rds_pgsql_log'
16
+
17
+ class Test::Unit::TestCase
18
+ include Fluent::Test::Helpers
19
+ extend Fluent::Test::Helpers
20
+ end
@@ -0,0 +1,51 @@
1
+ require_relative '../helper'
2
+
3
+ class RdsPgsqlLogInputTest < Test::Unit::TestCase
4
+ def setup
5
+ Fluent::Test.setup
6
+ end
7
+
8
+ DEFAULT_CONFIG = {
9
+ access_key_id: 'dummy_access_key_id',
10
+ secret_access_key: 'dummy_secret_access_key',
11
+ region: 'ap-northeast-1',
12
+ db_instance_identifier: 'test-postgres-id',
13
+ refresh_interval: 30,
14
+ pos_file: 'pgsql-log-pos.dat',
15
+ }
16
+
17
+ def parse_config(conf = {})
18
+ ''.tap{|s| conf.each { |k, v| s << "#{k} #{v}\n" } }
19
+ end
20
+
21
+ def create_driver(conf = DEFAULT_CONFIG)
22
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::RdsPgsqlLogInput).configure(parse_config conf)
23
+ end
24
+
25
+ def iam_info_url
26
+ 'http://169.254.169.254/latest/meta-data/iam/security-credentials/'
27
+ end
28
+
29
+ def use_iam_role
30
+ stub_request(:get, iam_info_url)
31
+ .to_return(status: [200, 'OK'], body: "hostname")
32
+ stub_request(:get, "#{iam_info_url}hostname")
33
+ .to_return(status: [200, 'OK'],
34
+ body: {
35
+ "AccessKeyId" => "dummy",
36
+ "SecretAccessKey" => "secret",
37
+ "Token" => "token"
38
+ }.to_json)
39
+ end
40
+
41
+ def test_configure
42
+ use_iam_role
43
+ d = create_driver
44
+ assert_equal 'dummy_access_key_id', d.instance.access_key_id
45
+ assert_equal 'dummy_secret_access_key', d.instance.secret_access_key
46
+ assert_equal 'ap-northeast-1', d.instance.region
47
+ assert_equal 'test-postgres-id', d.instance.db_instance_identifier
48
+ assert_equal 'pgsql-log-pos.dat', d.instance.pos_file
49
+ assert_equal 30, d.instance.refresh_interval
50
+ end
51
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-rds-pgsql-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - shinsaka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-27 00:00:00.000000000 Z
11
+ date: 2018-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -58,6 +58,62 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '1.7'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '12'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '12'
75
+ - !ruby/object:Gem::Dependency
76
+ name: test-unit
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.2'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.2'
89
+ - !ruby/object:Gem::Dependency
90
+ name: webmock
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '3'
103
+ - !ruby/object:Gem::Dependency
104
+ name: simplecov
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
61
117
  description: fluentd plugin for Amazon RDS for PostgreSQL log input
62
118
  email:
63
119
  - shinx1265@gmail.com
@@ -69,9 +125,12 @@ files:
69
125
  - Gemfile
70
126
  - LICENSE.txt
71
127
  - README.md
128
+ - Rakefile
72
129
  - fluent-plugin-rds-pgsql-log.gemspec
73
130
  - fluent.conf.sample
74
131
  - lib/fluent/plugin/in_rds_pgsql_log.rb
132
+ - test/helper.rb
133
+ - test/plugin/test_in_rds_pgsql.rb
75
134
  homepage: https://github.com/shinsaka/fluent-plugin-rds-pgsql-log
76
135
  licenses:
77
136
  - MIT
@@ -96,4 +155,6 @@ rubygems_version: 2.6.11
96
155
  signing_key:
97
156
  specification_version: 4
98
157
  summary: Amazon RDS for PostgreSQL log input plugin
99
- test_files: []
158
+ test_files:
159
+ - test/helper.rb
160
+ - test/plugin/test_in_rds_pgsql.rb