fluent-plugin-cloudwatch 1.2.7 → 1.2.8
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 +4 -4
- data/README.md +13 -14
- data/fluent-plugin-cloudwatch.gemspec +3 -3
- data/lib/fluent/plugin/in_cloudwatch.rb +27 -12
- data/test/plugin/test_in_cloudwatch.rb +23 -0
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 676e50628ee8eaed446c8ce90ee2415b4590c58e
|
4
|
+
data.tar.gz: b5d61bd882a2d9391552f56840c3d723efc76c7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49aee0b5ad1da7a0f30b440d0faf37f4a861305469efd89757b20cc26bdbab1485716376cc4228d443817fe14d5d0e37653ed13e7944a65e4aae66c198abca55
|
7
|
+
data.tar.gz: 393eb9f72736d129b3edd8967a4dce328b95df8c9d31fd8e0feea57dc199c06f66b899295ecb84a7f845d49a745672f876c9499fda524fa0083ff6fce9d9dcde
|
data/README.md
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
## Overview
|
5
|
-
***AWS CloudWatch*** input plugin.
|
6
5
|
|
7
|
-
|
8
|
-
get metrics from cloudwatch.
|
6
|
+
***AWS CloudWatch*** input plugin.
|
9
7
|
|
10
|
-
|
11
|
-
|
8
|
+
This plugin is simple.
|
9
|
+
Get metrics from cloudwatch to fluentd.
|
10
|
+
|
11
|
+
* Get metrics from AWS CloudWatch API.
|
12
|
+
* Interval is 300(default. config=interval) seconds
|
13
|
+
* Fetch datapoints in recent (interval * 10) seconds, and emit the latest datapoint to Fluentd data stream.
|
12
14
|
|
13
15
|
## Configuration
|
14
16
|
|
@@ -27,8 +29,8 @@ get metrics from cloudwatch.
|
|
27
29
|
dimensions_value [dimensions value]
|
28
30
|
period [period] (default: 300)
|
29
31
|
interval [interval] (default: 300)
|
32
|
+
delayed_start [bool] (default: false)
|
30
33
|
</source>
|
31
|
-
|
32
34
|
```
|
33
35
|
|
34
36
|
### GET RDS Metric
|
@@ -94,13 +96,11 @@ get metrics from cloudwatch.
|
|
94
96
|
#### output data format
|
95
97
|
|
96
98
|
```
|
97
|
-
|
98
99
|
2013-03-21T14:08:00+09:00 cloudwatch {"HealthyHostCount":2.0}
|
99
100
|
2013-03-21T14:08:00+09:00 cloudwatch {"HTTPCode_Backend_2XX":1.0}
|
100
101
|
2013-03-21T14:08:00+09:00 cloudwatch {"Latency":0.004025}
|
101
102
|
2013-03-21T14:08:00+09:00 cloudwatch {"RequestCount":1.0}
|
102
103
|
2013-03-21T14:09:00+09:00 cloudwatch {"UnHealthyHostCount":0.0}
|
103
|
-
|
104
104
|
```
|
105
105
|
|
106
106
|
|
@@ -124,7 +124,6 @@ get metrics from cloudwatch.
|
|
124
124
|
#### output data format
|
125
125
|
|
126
126
|
```
|
127
|
-
|
128
127
|
2013-02-25T00:44:00+09:00 cloudwatch {"CPUUtilization":1.58}
|
129
128
|
2013-02-25T00:44:00+09:00 cloudwatch {"DiskReadBytes":0.0}
|
130
129
|
2013-02-25T00:44:00+09:00 cloudwatch {"DiskReadBytes":0.0}
|
@@ -132,7 +131,6 @@ get metrics from cloudwatch.
|
|
132
131
|
2013-02-25T00:44:00+09:00 cloudwatch {"DiskWriteOps":0.0}
|
133
132
|
2013-02-25T00:44:00+09:00 cloudwatch {"NetworkIn":95183.0}
|
134
133
|
2013-02-25T00:44:00+09:00 cloudwatch {"NetworkOut":95645.0}
|
135
|
-
|
136
134
|
```
|
137
135
|
|
138
136
|
### GET DynamoDB Metirc
|
@@ -156,10 +154,8 @@ get metrics from cloudwatch.
|
|
156
154
|
#### output data format
|
157
155
|
|
158
156
|
```
|
159
|
-
|
160
157
|
2013-04-11 15:13:00 +0900 cloudwatch {"ConsumedReadCapacityUnits":8271.5}
|
161
158
|
2013-04-11 15:13:00 +0900 cloudwatch {"ConsumedWriteCapacityUnits":2765.5}
|
162
|
-
|
163
159
|
```
|
164
160
|
|
165
161
|
### GET Billing Metirc
|
@@ -183,10 +179,8 @@ Note: Billing requires the us-east-1 endpoint
|
|
183
179
|
#### output data format
|
184
180
|
|
185
181
|
```
|
186
|
-
|
187
182
|
2013-06-10 02:03:00 +0900 cloudwatch {"EstimatedCharges_in_USD":"543.175"}
|
188
183
|
2013-06-10 04:03:00 +0900 cloudwatch {"EstimatedCharges_in_USD":"550.39"}
|
189
|
-
|
190
184
|
```
|
191
185
|
|
192
186
|
### GET StorageGateway Metirc
|
@@ -212,6 +206,11 @@ Note: Billing requires the us-east-1 endpoint
|
|
212
206
|
2014-01-20 20:12:00 +0900 cloudwatch: {"CachePercentUsed":95.15519175634687}
|
213
207
|
```
|
214
208
|
|
209
|
+
|
210
|
+
## config: delayed_start
|
211
|
+
|
212
|
+
When config `delayed_start` is set true, plugin startup will be delayed in random seconds(0 ~ interval).
|
213
|
+
|
215
214
|
## Contributing
|
216
215
|
|
217
216
|
1. Fork it
|
@@ -4,9 +4,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "fluent-plugin-cloudwatch"
|
7
|
-
gem.version = "1.2.
|
8
|
-
gem.authors = ["Yusuke Nomura", "kenjiskywalker"]
|
9
|
-
gem.email = ["yunomu@gmail.com", "git@kenjiskywalker.org"]
|
7
|
+
gem.version = "1.2.8"
|
8
|
+
gem.authors = ["Yusuke Nomura", "kenjiskywalker", "FUJIWARA Shunichiro"]
|
9
|
+
gem.email = ["yunomu@gmail.com", "git@kenjiskywalker.org", "fujiwara.shunichiro@gmail.com"]
|
10
10
|
gem.description = %q{Input plugin for AWS CloudWatch.}
|
11
11
|
gem.homepage = "https://github.com/yunomu/fluent-plugin-cloudwatch"
|
12
12
|
gem.summary = gem.description
|
@@ -20,6 +20,7 @@ class Fluent::CloudwatchInput < Fluent::Input
|
|
20
20
|
config_param :interval, :integer, :default => 300
|
21
21
|
config_param :open_timeout, :integer, :default => 10
|
22
22
|
config_param :read_timeout, :integer, :default => 30
|
23
|
+
config_param :delayed_start, :bool, :default => false
|
23
24
|
|
24
25
|
attr_accessor :dimensions
|
25
26
|
|
@@ -52,30 +53,45 @@ class Fluent::CloudwatchInput < Fluent::Input
|
|
52
53
|
:http_open_timeout => @open_timeout,
|
53
54
|
:http_read_timeout => @read_timeout,
|
54
55
|
)
|
55
|
-
|
56
|
-
@cw = AWS::CloudWatch.new(
|
57
|
-
:access_key_id => @aws_key_id,
|
58
|
-
:secret_access_key => @aws_sec_key,
|
59
|
-
:cloud_watch_endpoint => @cw_endpoint,
|
60
|
-
).client
|
61
56
|
end
|
62
57
|
|
63
58
|
def start
|
64
59
|
super
|
60
|
+
@running = true
|
65
61
|
@watcher = Thread.new(&method(:watch))
|
66
62
|
end
|
67
63
|
|
68
64
|
def shutdown
|
69
65
|
super
|
66
|
+
@running = false
|
70
67
|
@watcher.terminate
|
71
68
|
@watcher.join
|
72
69
|
end
|
73
70
|
|
74
71
|
private
|
75
72
|
def watch
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
if @delayed_start
|
74
|
+
delay = rand() * @interval
|
75
|
+
log.debug("delay at start #{delay} sec")
|
76
|
+
sleep(delay)
|
77
|
+
end
|
78
|
+
|
79
|
+
@cw = AWS::CloudWatch.new(
|
80
|
+
:access_key_id => @aws_key_id,
|
81
|
+
:secret_access_key => @aws_sec_key,
|
82
|
+
:cloud_watch_endpoint => @cw_endpoint,
|
83
|
+
).client
|
84
|
+
|
85
|
+
output
|
86
|
+
|
87
|
+
started = Time.now
|
88
|
+
while @running
|
89
|
+
now = Time.now
|
90
|
+
sleep 1
|
91
|
+
if now - started >= @interval
|
92
|
+
output
|
93
|
+
started = now
|
94
|
+
end
|
79
95
|
end
|
80
96
|
end
|
81
97
|
|
@@ -86,7 +102,7 @@ class Fluent::CloudwatchInput < Fluent::Input
|
|
86
102
|
:metric_name => m,
|
87
103
|
:statistics => [@statistics],
|
88
104
|
:dimensions => @dimensions,
|
89
|
-
:start_time => (Time.now - @period*
|
105
|
+
:start_time => (Time.now - @period*10).iso8601,
|
90
106
|
:end_time => Time.now.iso8601,
|
91
107
|
:period => @period,
|
92
108
|
})
|
@@ -102,9 +118,8 @@ class Fluent::CloudwatchInput < Fluent::Input
|
|
102
118
|
output_data = {m => data}
|
103
119
|
Fluent::Engine.emit(tag, catch_time, output_data)
|
104
120
|
else
|
105
|
-
log.warn "cloudwatch:
|
121
|
+
log.warn "cloudwatch: #{@namespace} #{@dimensions_name} #{@dimensions_value} #{m} datapoints is empty"
|
106
122
|
end
|
107
123
|
}
|
108
|
-
sleep 1
|
109
124
|
end
|
110
125
|
end
|
@@ -93,4 +93,27 @@ class CloudwatchInputTest < Test::Unit::TestCase
|
|
93
93
|
assert_equal [{ :name => "GatewayId", :value => "sgw-XXXXXXXX" }, { :name => "GatewayName", :value => "mygateway" }], d.instance.dimensions
|
94
94
|
end
|
95
95
|
|
96
|
+
### delayed_start
|
97
|
+
CONFIG_DELAYED_START = CONFIG_RDS + %[
|
98
|
+
delayed_start true
|
99
|
+
]
|
100
|
+
|
101
|
+
def create_driver_delayed_start(conf = CONFIG_DELAYED_START)
|
102
|
+
Fluent::Test::InputTestDriver.new(Fluent::CloudwatchInput).configure(conf)
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_configure_delayed_start
|
106
|
+
d = create_driver_delayed_start
|
107
|
+
assert_equal 'cloudwatch', d.instance.tag
|
108
|
+
assert_equal 'test_key_id', d.instance.aws_key_id
|
109
|
+
assert_equal 'test_sec_key', d.instance.aws_sec_key
|
110
|
+
assert_equal 'test_cloud_watch_endpoint', d.instance.cw_endpoint
|
111
|
+
assert_equal 'AWS/RDS', d.instance.namespace
|
112
|
+
assert_equal 'CPUUtilization,FreeStorageSpace,DiskQueueDepth,FreeableMemory,SwapUsage,ReadIOPS,ReadLatency,ReadThroughput,WriteIOPS,WriteLatency,WriteThroughput', d.instance.metric_name
|
113
|
+
assert_equal 'DBInstanceIdentifier', d.instance.dimensions_name
|
114
|
+
assert_equal 'rds01', d.instance.dimensions_value
|
115
|
+
assert_equal [{ :name => 'DBInstanceIdentifier', :value => 'rds01' }], d.instance.dimensions
|
116
|
+
assert_equal true, d.instance.delayed_start
|
117
|
+
end
|
118
|
+
|
96
119
|
end
|
metadata
CHANGED
@@ -1,28 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-cloudwatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yusuke Nomura
|
8
8
|
- kenjiskywalker
|
9
|
+
- FUJIWARA Shunichiro
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2014-
|
13
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: fluentd
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
17
18
|
requirements:
|
18
|
-
- - ~>
|
19
|
+
- - "~>"
|
19
20
|
- !ruby/object:Gem::Version
|
20
21
|
version: 0.10.30
|
21
22
|
type: :runtime
|
22
23
|
prerelease: false
|
23
24
|
version_requirements: !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
|
-
- - ~>
|
26
|
+
- - "~>"
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
version: 0.10.30
|
28
29
|
- !ruby/object:Gem::Dependency
|
@@ -43,26 +44,27 @@ dependencies:
|
|
43
44
|
name: rake
|
44
45
|
requirement: !ruby/object:Gem::Requirement
|
45
46
|
requirements:
|
46
|
-
- -
|
47
|
+
- - ">="
|
47
48
|
- !ruby/object:Gem::Version
|
48
49
|
version: 0.9.2
|
49
50
|
type: :development
|
50
51
|
prerelease: false
|
51
52
|
version_requirements: !ruby/object:Gem::Requirement
|
52
53
|
requirements:
|
53
|
-
- -
|
54
|
+
- - ">="
|
54
55
|
- !ruby/object:Gem::Version
|
55
56
|
version: 0.9.2
|
56
57
|
description: Input plugin for AWS CloudWatch.
|
57
58
|
email:
|
58
59
|
- yunomu@gmail.com
|
59
60
|
- git@kenjiskywalker.org
|
61
|
+
- fujiwara.shunichiro@gmail.com
|
60
62
|
executables: []
|
61
63
|
extensions: []
|
62
64
|
extra_rdoc_files: []
|
63
65
|
files:
|
64
|
-
- .gitignore
|
65
|
-
- .travis.yml
|
66
|
+
- ".gitignore"
|
67
|
+
- ".travis.yml"
|
66
68
|
- Gemfile
|
67
69
|
- LICENSE
|
68
70
|
- README.md
|
@@ -81,17 +83,17 @@ require_paths:
|
|
81
83
|
- lib
|
82
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
85
|
requirements:
|
84
|
-
- -
|
86
|
+
- - ">="
|
85
87
|
- !ruby/object:Gem::Version
|
86
88
|
version: '0'
|
87
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
90
|
requirements:
|
89
|
-
- -
|
91
|
+
- - ">="
|
90
92
|
- !ruby/object:Gem::Version
|
91
93
|
version: '0'
|
92
94
|
requirements: []
|
93
95
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
96
|
+
rubygems_version: 2.2.2
|
95
97
|
signing_key:
|
96
98
|
specification_version: 4
|
97
99
|
summary: Input plugin for AWS CloudWatch.
|