fluent-plugin-cloudwatch 1.2.7 → 1.2.8
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|