fluent-plugin-rds-slowlog 0.0.6 → 0.0.7

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: 8f911129eaa88bdb7e6637df787ccfb7b5c42a9d
4
- data.tar.gz: 3889a1524f662e638f104adce831750700481b64
3
+ metadata.gz: db90bf646e818655b609cd6ce8f33f8995596dfa
4
+ data.tar.gz: 16113ed4766d26efcfbf5478bba553d914af5338
5
5
  SHA512:
6
- metadata.gz: ffc66003262cb3c9c7492835064f7e4fa8e7e0e25575eb3d596a96aa54349cf61f75441aee4bc3179a59c419fab4da509b8ebcaf191d86e435edc8bca233972c
7
- data.tar.gz: d5c3bd047eb583eae7073a038b123d99943dc4057b760cf432558a38a4fc881acdaa4ae3484b5d795ef91705c078eacb65500761bb563f145d987ff2660d4aa0
6
+ metadata.gz: ca01b38aaa6d05181f8394f78071beff0b34a973c666b397d183cdb25e643aca4112d586f31d912613f160d0cefcbf076ff0ae55ba9f51582b6a333ba7e9c025
7
+ data.tar.gz: 326da4ace80776fd2f80f1729fa6f351e952014a72967bc8f6b2e2e3cc7216ff1293fb483c4f3eb6683f5f27fb8573b3b5823fa5d3688ebbd1b7f52675108f0e
data/README.md CHANGED
@@ -14,6 +14,7 @@
14
14
 
15
15
  1. **"CALL mysql.rds_rotate_slow_log"**
16
16
  2. **"SELECT * FROM slow_log_backup"**
17
+ 3. **"INSERT INTO yourdb.slow_log_custom_backup SELECT * FROM slow_log_backup"** (if you want to take a backup)
17
18
 
18
19
  every 10 seconds from AWS RDS.
19
20
 
@@ -26,6 +27,7 @@ every 10 seconds from AWS RDS.
26
27
  host [RDS Hostname]
27
28
  username [RDS Username]
28
29
  password [RDS Password]
30
+ backup_table [Your Backup Tablename]
29
31
  </source>
30
32
  ```
31
33
 
@@ -39,6 +41,7 @@ every 10 seconds from AWS RDS.
39
41
  username [RDS Username]
40
42
  password [RDS Password]
41
43
  interval 10
44
+ backup_table [Your Backup Tablename]
42
45
  </source>
43
46
 
44
47
  <match rds-slowlog>
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = "fluent-plugin-rds-slowlog"
7
- gem.version = "0.0.6"
7
+ gem.version = "0.0.7"
8
8
  gem.authors = ["kenjiskywalker", "winebarrel"]
9
9
  gem.email = ["git@kenjiskywalker.org", "sgwr_dts@yahoo.co.jp"]
10
10
  gem.description = "Amazon RDS slow_log input plugin for Fluent event collector"
@@ -11,12 +11,13 @@ class Fluent::Rds_SlowlogInput < Fluent::Input
11
11
  define_method("router") { Fluent::Engine }
12
12
  end
13
13
 
14
- config_param :tag, :string
15
- config_param :host, :string, :default => nil
16
- config_param :port, :integer, :default => 3306
17
- config_param :username, :string, :default => nil
18
- config_param :password, :string, :default => nil, :secret => true
19
- config_param :interval, :integer, :default => 10
14
+ config_param :tag, :string
15
+ config_param :host, :string, :default => nil
16
+ config_param :port, :integer, :default => 3306
17
+ config_param :username, :string, :default => nil
18
+ config_param :password, :string, :default => nil, :secret => true
19
+ config_param :interval, :integer, :default => 10
20
+ config_param :backup_table, :string, :default => nil
20
21
 
21
22
  def initialize
22
23
  super
@@ -40,6 +41,10 @@ class Fluent::Rds_SlowlogInput < Fluent::Input
40
41
 
41
42
  def start
42
43
  super
44
+ if @backup_table
45
+ @client.query("CREATE TABLE IF NOT EXISTS #{@backup_table} LIKE slow_log")
46
+ end
47
+
43
48
  @loop = Coolio::Loop.new
44
49
  timer = TimerWatcher.new(@interval, true, log, &method(:output))
45
50
  @loop.attach(timer)
@@ -70,6 +75,10 @@ class Fluent::Rds_SlowlogInput < Fluent::Input
70
75
  row.each_key {|key| row[key].force_encoding(Encoding::ASCII_8BIT) if row[key].is_a?(String)}
71
76
  router.emit(tag, Fluent::Engine.now, row)
72
77
  end
78
+
79
+ if @backup_table
80
+ @client.query("INSERT INTO #{@backup_table} SELECT * FROM slow_log_backup")
81
+ end
73
82
  end
74
83
 
75
84
  class TimerWatcher < Coolio::TimerWatcher
@@ -36,6 +36,7 @@ class Rds_SlowlogInputTest < Test::Unit::TestCase
36
36
  client = mysql2_client
37
37
  client.query("DROP USER test_rds_user@localhost")
38
38
  client.query("DROP PROCEDURE `mysql`.`rds_rotate_slow_log`")
39
+ client.query("DROP TABLE `mysql`.`slow_log_custom_backup`")
39
40
  end
40
41
 
41
42
  def insert_slow_log_sql
@@ -87,6 +88,7 @@ class Rds_SlowlogInputTest < Test::Unit::TestCase
87
88
  username test_rds_user
88
89
  password test_rds_password
89
90
  interval 0
91
+ backup_table mysql.slow_log_custom_backup
90
92
  ]
91
93
 
92
94
  def create_driver(conf = CONFIG)
@@ -100,6 +102,7 @@ class Rds_SlowlogInputTest < Test::Unit::TestCase
100
102
  assert_equal 'test_rds_user', d.instance.username
101
103
  assert_equal 'test_rds_password', d.instance.password
102
104
  assert_equal 0, d.instance.interval
105
+ assert_equal 'mysql.slow_log_custom_backup', d.instance.backup_table
103
106
  end
104
107
 
105
108
  def test_output
@@ -116,4 +119,26 @@ class Rds_SlowlogInputTest < Test::Unit::TestCase
116
119
  ["rds-slowlog", 1432492200, {"start_time"=>"2015-09-29 15:43:45", "user_host"=>"root@localhost", "query_time"=>"00:00:00", "lock_time"=>"00:00:00", "rows_sent"=>"0", "rows_examined"=>"0", "db"=>"employees", "last_insert_id"=>"0", "insert_id"=>"0", "server_id"=>"1", "sql_text"=>"SELECT 2", "thread_id"=>"0"}],
117
120
  ], records
118
121
  end
122
+
123
+ def test_backup
124
+ d = create_driver
125
+ d.run
126
+
127
+ records = []
128
+ client = self.class.mysql2_client
129
+ slow_logs = client.query('SELECT * FROM `mysql`.`slow_log_custom_backup`', :cast => false)
130
+ slow_logs.each do |row|
131
+ row.each_key {|key| row[key].force_encoding(Encoding::ASCII_8BIT) if row[key].is_a?(String)}
132
+ records.push(row)
133
+ end
134
+
135
+ unless self.class.has_thread_id?
136
+ records.each {|r| r["thread_id"] = "0" }
137
+ end
138
+
139
+ assert_equal [
140
+ {"start_time"=>"2015-09-29 15:43:44", "user_host"=>"root@localhost", "query_time"=>"00:00:00", "lock_time"=>"00:00:00", "rows_sent"=>"0", "rows_examined"=>"0", "db"=>"employees", "last_insert_id"=>"0", "insert_id"=>"0", "server_id"=>"1", "sql_text"=>"SELECT 1", "thread_id"=>"0"},
141
+ {"start_time"=>"2015-09-29 15:43:45", "user_host"=>"root@localhost", "query_time"=>"00:00:00", "lock_time"=>"00:00:00", "rows_sent"=>"0", "rows_examined"=>"0", "db"=>"employees", "last_insert_id"=>"0", "insert_id"=>"0", "server_id"=>"1", "sql_text"=>"SELECT 2", "thread_id"=>"0"},
142
+ ], records
143
+ end
119
144
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-rds-slowlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - kenjiskywalker
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-13 00:00:00.000000000 Z
12
+ date: 2015-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd