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

Sign up to get free protection for your applications and to get access to all the features.
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