aws_instance_list 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +11 -7
- data/aws_instance_list.gemspec +1 -0
- data/lib/aws_instance_list.rb +1 -0
- data/lib/aws_instance_list/elasticsearch_service.rb +56 -0
- data/lib/aws_instance_list/list.rb +8 -0
- data/lib/aws_instance_list/metric.rb +35 -0
- data/lib/aws_instance_list/version.rb +1 -1
- data/lib/config/default_settings.yaml +7 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 692af55b47adcbd7975dd292f849e90485c95ff4
|
4
|
+
data.tar.gz: '058426807bb95f28adf9817d1f5dea65db8f9a82'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3ed672e3c251a6111bbe4fe5baee0809d570ec6c666b390c971859116a89c2c8412c928bde70453e23ec9e1bbc7cfdeb5c290074ae060726749d65429aeee78
|
7
|
+
data.tar.gz: e896a54ec3345f15cbcad0d6684a008a39753d5a48cb61601dace87782d386801ceba3b9384b6405d206b928bb1bba06357dd417a0d5f82d53ca13fc550f9453
|
data/Gemfile.lock
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
aws_instance_list (1.3.
|
4
|
+
aws_instance_list (1.3.3)
|
5
5
|
aws-sdk-cloudwatch (~> 1.6)
|
6
6
|
aws-sdk-ec2 (~> 1.37)
|
7
7
|
aws-sdk-elasticache (~> 1.7)
|
8
|
+
aws-sdk-elasticsearchservice (~> 1.13)
|
8
9
|
aws-sdk-rds (~> 1.23)
|
9
10
|
dotenv (~> 2.5)
|
10
11
|
|
@@ -12,22 +13,25 @@ GEM
|
|
12
13
|
remote: https://rubygems.org/
|
13
14
|
specs:
|
14
15
|
aws-eventstream (1.0.1)
|
15
|
-
aws-partitions (1.
|
16
|
-
aws-sdk-cloudwatch (1.
|
16
|
+
aws-partitions (1.106.0)
|
17
|
+
aws-sdk-cloudwatch (1.11.0)
|
17
18
|
aws-sdk-core (~> 3, >= 3.26.0)
|
18
19
|
aws-sigv4 (~> 1.0)
|
19
|
-
aws-sdk-core (3.
|
20
|
+
aws-sdk-core (3.34.0)
|
20
21
|
aws-eventstream (~> 1.0)
|
21
22
|
aws-partitions (~> 1.0)
|
22
23
|
aws-sigv4 (~> 1.0)
|
23
24
|
jmespath (~> 1.0)
|
24
|
-
aws-sdk-ec2 (1.
|
25
|
+
aws-sdk-ec2 (1.52.0)
|
25
26
|
aws-sdk-core (~> 3, >= 3.26.0)
|
26
27
|
aws-sigv4 (~> 1.0)
|
27
|
-
aws-sdk-elasticache (1.
|
28
|
+
aws-sdk-elasticache (1.8.0)
|
28
29
|
aws-sdk-core (~> 3, >= 3.26.0)
|
29
30
|
aws-sigv4 (~> 1.0)
|
30
|
-
aws-sdk-
|
31
|
+
aws-sdk-elasticsearchservice (1.13.0)
|
32
|
+
aws-sdk-core (~> 3, >= 3.26.0)
|
33
|
+
aws-sigv4 (~> 1.0)
|
34
|
+
aws-sdk-rds (1.34.0)
|
31
35
|
aws-sdk-core (~> 3, >= 3.26.0)
|
32
36
|
aws-sigv4 (~> 1.0)
|
33
37
|
aws-sigv4 (1.0.3)
|
data/aws_instance_list.gemspec
CHANGED
@@ -40,5 +40,6 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.add_dependency "aws-sdk-ec2", "~> 1.37"
|
41
41
|
spec.add_dependency "aws-sdk-cloudwatch", "~> 1.6"
|
42
42
|
spec.add_dependency "aws-sdk-elasticache", "~> 1.7"
|
43
|
+
spec.add_dependency "aws-sdk-elasticsearchservice", "~> 1.13"
|
43
44
|
spec.add_dependency "dotenv", "~> 2.5"
|
44
45
|
end
|
data/lib/aws_instance_list.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'aws-sdk-elasticsearchservice'
|
2
|
+
|
3
|
+
module AwsInstanceList
|
4
|
+
|
5
|
+
class ElasticsearchService < AwsInstanceList::Base
|
6
|
+
|
7
|
+
def initialize region: 'eu-west-1'
|
8
|
+
|
9
|
+
super region: region
|
10
|
+
|
11
|
+
@client=Aws::ElasticsearchService::Client.new region: region
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def domain_names
|
16
|
+
client.list_domain_names.map { |x| x.domain_names.map { |d| d.domain_name } }.flatten
|
17
|
+
end
|
18
|
+
|
19
|
+
def descriptions
|
20
|
+
total_domains=domain_names
|
21
|
+
begin
|
22
|
+
@instances+=client.describe_elasticsearch_domains(domain_names: total_domains.first(5) ).domain_status_list
|
23
|
+
total_domains=total_domains.drop(5)
|
24
|
+
end while !total_domains.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
def instances
|
28
|
+
descriptions
|
29
|
+
@instances
|
30
|
+
end
|
31
|
+
|
32
|
+
def domain_list
|
33
|
+
instances.map do |i|
|
34
|
+
fields.map { |f| i.send(f) } + metrics(i) << region
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def fields
|
39
|
+
yaml['domain_status']['fields']
|
40
|
+
end
|
41
|
+
|
42
|
+
def metrics instance
|
43
|
+
type=instance.elasticsearch_cluster_config.instance_type
|
44
|
+
nodes=instance.elasticsearch_cluster_config.instance_count
|
45
|
+
dimensions = [ { name: 'DomainName', value: instance.domain_name },
|
46
|
+
{ name: 'ClientId', value: instance.domain_id.split('/').first }
|
47
|
+
]
|
48
|
+
free=metric.es_free_storage_space( dimensions )
|
49
|
+
used=metric.cluster_used_space(dimensions)
|
50
|
+
[type, nodes, free + used,free, used ]
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
@@ -47,5 +47,13 @@ module AwsInstanceList
|
|
47
47
|
ec.cache_list
|
48
48
|
end
|
49
49
|
|
50
|
+
def elasticsearch_list
|
51
|
+
list call_to: :elasticsearch_service_list
|
52
|
+
end
|
53
|
+
|
54
|
+
def elasticsearch_service_list region:
|
55
|
+
es=AwsInstanceList::ElasticsearchService.new region: region
|
56
|
+
es.domain_list
|
57
|
+
end
|
50
58
|
end
|
51
59
|
end
|
@@ -83,6 +83,41 @@ module AwsInstanceList
|
|
83
83
|
|
84
84
|
end
|
85
85
|
|
86
|
+
def es_free_storage_space dimensions
|
87
|
+
resp=statistics( {
|
88
|
+
namespace: "AWS/ES",
|
89
|
+
metric_name: "FreeStorageSpace",
|
90
|
+
dimensions: dimensions,
|
91
|
+
start_time: Time.now - 600,
|
92
|
+
end_time: Time.now ,
|
93
|
+
period: 60,
|
94
|
+
statistics: ["Minimum"]
|
95
|
+
})
|
96
|
+
|
97
|
+
if resp.datapoints.empty?
|
98
|
+
'-'
|
99
|
+
else
|
100
|
+
resp.datapoints.last.minimum
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def cluster_used_space dimensions
|
105
|
+
resp=statistics( {
|
106
|
+
namespace: "AWS/ES",
|
107
|
+
metric_name: "ClusterUsedSpace",
|
108
|
+
dimensions: dimensions,
|
109
|
+
start_time: Time.now - 600,
|
110
|
+
end_time: Time.now ,
|
111
|
+
period: 60,
|
112
|
+
statistics: ["Maximum"]
|
113
|
+
})
|
114
|
+
|
115
|
+
if resp.datapoints.empty?
|
116
|
+
'-'
|
117
|
+
else
|
118
|
+
resp.datapoints.last.maximum
|
119
|
+
end
|
120
|
+
end
|
86
121
|
end
|
87
122
|
end
|
88
123
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws_instance_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego PL
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '1.7'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: aws-sdk-elasticsearchservice
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.13'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.13'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: dotenv
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -160,6 +174,7 @@ files:
|
|
160
174
|
- lib/aws_instance_list.rb
|
161
175
|
- lib/aws_instance_list/base.rb
|
162
176
|
- lib/aws_instance_list/elasti_cache.rb
|
177
|
+
- lib/aws_instance_list/elasticsearch_service.rb
|
163
178
|
- lib/aws_instance_list/list.rb
|
164
179
|
- lib/aws_instance_list/metric.rb
|
165
180
|
- lib/aws_instance_list/rds.rb
|