fluent-plugin-aurora-slowquerylog 0.0.3 → 0.0.4

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: 5dd1670153a78f65af70f9303aa318c9a8fdbc78
4
- data.tar.gz: fe100a3287322ea38a4e059cf3022a2a0795e564
3
+ metadata.gz: 902711f56bfb142c7fe24ce7a5affb1315d54009
4
+ data.tar.gz: 15a4881d9f91ac27806da775e7e156085a510be4
5
5
  SHA512:
6
- metadata.gz: ab47e4561a21ae79196fc5528b14f3dfcb6f91fac533c593700dddcc162c1e96d97cec7a1dd003b527591cfb9d7028203e0e7d27cf6cfeb45f1a8ede9229b999
7
- data.tar.gz: 6754db30aae7c4ab901888ff4f5d49b1948f09d690b0f084cb977261d2e24c5be6afb67921f02e654e9a742a6b9ab8a0809b13eb8ab4b01866792b98a455157d
6
+ metadata.gz: 760664ecf893dea66deb99952b687846a3502898c13a7318005426b17c9b16e05f4dd36606fba47774084c31e2ac89011f37d9ca706d92135132b56401ac2edc
7
+ data.tar.gz: 91b63cebb52470b87aae79cbb3985815a3a752a666e45191c889945abd8c8945fd88d433e0669e5e9c8f0e6e294657effe53856c6ec17115ac604c378a7e408f
data/README.md CHANGED
@@ -1,28 +1,66 @@
1
- # Fluent::Plugin::Aurora::Slowquerylog
1
+ # [Fluentd](http://fluentd.org) input plugin for AWS RDS Aurora
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/fluent/plugin/aurora/slowquerylog`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ ## Overview
4
+ This fluent input plugin collects RDS Aurora slowquery log with ParameterGroup option `log_output=FILE`.
5
+ This plugin fetches only the difference between the latest and previous fetched slow query log.
4
6
 
5
- TODO: Delete this and the text above, and describe your gem
7
+ ## Background
8
+ There are a lot of RDS mysql slowlog input plugins that collect mysql slowquery logs with ParameterGroup option `log_output=TABLE`.
9
+ However if you use RDS Aurora with the option, there are two following problems:
6
10
 
7
- ## Installation
11
+ ### 1. mysql.slow_log table is operated with Engine=CSV
8
12
 
9
- Add this line to your application's Gemfile:
13
+ mysql.slow_log table is operated with Engine=CSV and we cannot add index to the table.
14
+ So if tons of slow queries are registered to mysql.slow_log, your `SELECT * FROM mysql.slow_log WHERE condition` queries also become slow.
10
15
 
11
- ```ruby
12
- gem 'fluent-plugin-aurora-slowquerylog'
16
+ ### 2. No way to rotate Aurora slowlog table
17
+
18
+ mysql.slow_log table on RDS mysql can be purged by using `CALL mysql.rds_rotate_slow_log`. On the other hand, the stored procedure executed on Aurora makes following error.
19
+
20
+ ```
21
+ > CALL mysql.rds_rotate_slow_log;
22
+ ERROR 1289 (HY000): The 'CSV' feature is disabled; you need MySQL built with 'CSV' to have it working
13
23
  ```
14
24
 
15
- And then execute:
25
+ According to the above reasons, I have implemented input plugin with `log_output=FILE` for Aurora.
16
26
 
17
- $ bundle
27
+ ## Installation
18
28
 
19
- Or install it yourself as:
29
+ ```ruby
30
+ $ fluent-gem install fluent-plugin-aurora-slowquerylog --no-document
31
+ ```
20
32
 
21
- $ gem install fluent-plugin-aurora-slowquerylog
33
+ ## Input: How It Works
34
+ TBW
22
35
 
23
36
  ## Usage
37
+ ### Sample configuration
38
+
39
+ ```
40
+ <source>
41
+ @type aurora_slowquerylog
42
+ tag aurora.slowlog
43
+ db_instance_identifier aurora_node_id
44
+ region us-east-1
45
+ log_file_name slowquery/mysql-slowquery.log
46
+ aurora_state_file /var/run/fluentd/aurora_state
47
+ log_fetch_interval 30 #optionnal
48
+ aws_access_key_id your_aws_access_key_id #optionnal
49
+ aws_secret_access_key your_aws_secret_access_key #optionnal
50
+ filename_contains mysql-slowquery.log # default 'mysql-slowquery.log'
51
+ </source>
52
+ ```
53
+
54
+ * **tag** tag name of events
55
+ * **db_instance_identifier** AWS Aurora node id
56
+ * **region** AWS region name
57
+ * **log_file_name** RDS slowlog name. Currently we cannot change file name from 'slowquery/mysql-slowquery.log'
58
+ * **aurora_state_file** state file that keeps maker information and current & last slowquery log name
59
+ * **log_fetch_interval** interval time(second) for log fetch (optional)
60
+ * **aws_access_key_id** AWS access key id. For AWS user IAM instance profile is recommended without using this option (optional)
61
+ * **aws_secret_access_key** AWS secret access key. For AWS user IAM instance profile is recommended without using this option (optional)
62
+ * **filename_contains** filter condition for fetching slow query log (optional)
24
63
 
25
- TODO: Write usage instructions here
26
64
 
27
65
  ## Development
28
66
 
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-aurora-slowquerylog"
7
- spec.version = "0.0.3"
7
+ spec.version = "0.0.4"
8
8
  spec.authors = ["Takayuki WATANABE"]
9
9
  spec.email = ["takanabe.w@gmail.com"]
10
10
 
@@ -86,17 +86,15 @@ module Fluent
86
86
  state = load_state
87
87
  if slowlog_rotated?(state)
88
88
  if state["additional_data_pending"]
89
- log_file_name = "#{@log_file_name}.#{Time.now.utc.strftime("%Y-%m-%d.%H")}"
90
- fetch_and_emit_log(log_file_name, state["marker"],true)
89
+ fetch_and_emit_log(@previous_slowlog, state["marker"],true)
91
90
  else
92
- log_file_name = "#{@log_file_name}.#{Time.now.utc.strftime("%Y-%m-%d.%H")}"
93
- fetch_and_emit_log(@log_file_name, state["marker"],false)
91
+ fetch_and_emit_log(@previous_slowlog, state["marker"],false)
94
92
  end
95
93
  else
96
- fetch_and_emit_log(@log_file_name, state["marker"],true)
94
+ fetch_and_emit_log(@current_slowlog, state["marker"],true)
97
95
  end
98
96
  else
99
- fetch_and_emit_log(@log_file_name, false, true)
97
+ fetch_and_emit_log(@current_slowlog, false, true)
100
98
  end
101
99
  end
102
100
 
@@ -113,7 +111,7 @@ module Fluent
113
111
  else
114
112
  fetched_file = @rds_client.download_db_log_file_portion(
115
113
  db_instance_identifier: @db_instance_identifier,
116
- log_file_name: "slowquery/mysql-slowquery.log")
114
+ log_file_name: log_file_name)
117
115
  save_state(fetched_file)
118
116
  records = parse_fetched_file(fetched_file)
119
117
  emit_slowlogs(records)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-aurora-slowquerylog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takayuki WATANABE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-02 00:00:00.000000000 Z
11
+ date: 2016-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd