sensu-plugins-edgelab 1.5.0 → 1.5.1

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/metrics-elb.rb +161 -0
  3. metadata +17 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aff0f83083b3b45316ce9789b73c0ed28d65b95c
4
- data.tar.gz: 6ba237be39191b6af36b6e510876047a552848b6
3
+ metadata.gz: 5f4873000006af1ae4e2d3a50b0224f846580071
4
+ data.tar.gz: 7a87b35a86c7cd91077f889575e7cb3bf6335a37
5
5
  SHA512:
6
- metadata.gz: a3439b60756ee772557f80590689502d959f21180d305316320895876f1beb3883fea39cd4358002acddaf7662b08e62913a1f04d111eb58d8be1eecdbc59bcf
7
- data.tar.gz: 8c1625aee402668b80f0d244d58d0581f67c7041d4420caed1ee7db5643dc5528edf37a9ad71ca6ca97629fa561cc742ae90837a5abe3db15c32cf471b835979
6
+ metadata.gz: 0e7b86ef303fc7e7092ac5adc90c0c5dc1af6aa3ad2bfdce95d0f232070cea3d91b68ece7b6c4ca3bb6206e988c84e82d8ff25d07c31458fef13a51a21da715a
7
+ data.tar.gz: 654dbd0d169f50e4c8af3320599cac010e54b2c194097d76e5028cd9aa21e2b874d222ce2d4d76a4470f1d6f577aa3e49cb55386539063994f071c0566fb72d8
@@ -0,0 +1,161 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # elb-metrics
4
+ #
5
+ # DESCRIPTION:
6
+ # Gets latency metrics from CloudWatch and puts them in Graphite for longer term storage
7
+ #
8
+ # OUTPUT:
9
+ # metric-data
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ #
14
+ # DEPENDENCIES:
15
+ # gem: aws-sdk
16
+ # gem: sensu-plugin
17
+ # gem: sensu-plugin-aws
18
+ # gem: time
19
+ #
20
+ # USAGE:
21
+ # #YELLOW
22
+ #
23
+ # NOTES:
24
+ # Returns latency statistics by default. You can specify any valid ELB metric type, see
25
+ # http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html#elb-metricscollected
26
+ #
27
+ # By default fetches statistics from one minute ago. You may need to fetch further back than this;
28
+ # high traffic ELBs can sometimes experience statistic delays of up to 10 minutes. If you experience this,
29
+ # raising a ticket with AWS support should get the problem resolved.
30
+ # As a workaround you can use eg -f 300 to fetch data from 5 minutes ago.
31
+ #
32
+ # LICENSE:
33
+ # Copyright 2013 Bashton Ltd http://www.bashton.com/
34
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
35
+ # for details.
36
+ # Updated by Peter Hoppe <peter.hoppe.extern@bertelsmann.de> 09.11.2016
37
+ # Using aws sdk version 2
38
+
39
+ require 'sensu-plugin/metric/cli'
40
+ require 'aws-sdk'
41
+ require 'sensu-plugins-aws'
42
+ require 'time'
43
+
44
+ class ELBMetrics < Sensu::Plugin::Metric::CLI::Graphite
45
+ include Common
46
+ option :elbname,
47
+ description: 'Name of the Elastic Load Balancer',
48
+ short: '-n ELB_NAME',
49
+ long: '--name ELB_NAME'
50
+
51
+ option :scheme,
52
+ description: 'Metric naming scheme, text to prepend to metric',
53
+ short: '-s SCHEME',
54
+ long: '--scheme SCHEME',
55
+ default: ''
56
+
57
+ option :fetch_age,
58
+ description: 'How long ago to fetch metrics for',
59
+ short: '-f AGE',
60
+ long: '--fetch_age',
61
+ default: 60,
62
+ proc: proc(&:to_i)
63
+
64
+ option :statistic,
65
+ description: 'Statistics type',
66
+ short: '-t STATISTIC',
67
+ long: '--statistic',
68
+ default: ''
69
+
70
+ option :aws_region,
71
+ short: '-r AWS_REGION',
72
+ long: '--aws-region REGION',
73
+ description: 'AWS Region (defaults to us-east-1).',
74
+ default: ENV['AWS_REGION']
75
+
76
+ option :end_time,
77
+ short: '-t T',
78
+ long: '--end-time TIME',
79
+ default: Time.now,
80
+ proc: proc { |a| Time.parse a },
81
+ description: 'CloudWatch metric statistics end time'
82
+
83
+ option :period,
84
+ short: '-p N',
85
+ long: '--period SECONDS',
86
+ default: 60,
87
+ proc: proc(&:to_i),
88
+ description: 'CloudWatch metric statistics period'
89
+
90
+ def cloud_watch
91
+ @cloud_watch = Aws::CloudWatch::Client.new
92
+ end
93
+
94
+ def loadbalancer
95
+ @loadbalancer = Aws::ElasticLoadBalancing::Client.new
96
+ end
97
+
98
+ def cloud_watch_metric(metric_name, value, load_balancer_name)
99
+ cloud_watch.get_metric_statistics(
100
+ namespace: 'AWS/ELB',
101
+ metric_name: metric_name,
102
+ dimensions: [
103
+ {
104
+ name: 'LoadBalancerName',
105
+ value: load_balancer_name
106
+ }
107
+ ],
108
+ statistics: [value],
109
+ start_time: config[:end_time] - config[:period],
110
+ end_time: config[:end_time],
111
+ period: config[:period]
112
+ )
113
+ end
114
+
115
+ def print_statistics(load_balancer_name, statistics)
116
+ result = {}
117
+ static_value = {}
118
+ statistics.each do |key, static|
119
+ r = cloud_watch_metric(key, static, load_balancer_name)
120
+ static_value[config[:scheme] + '.' + 'loadbalancer.' + load_balancer_name + '.' + key + '.' + static] = static
121
+ result[config[:scheme] + '.' + 'loadbalancer.' + load_balancer_name + '.' + key + '.' + static] = r[:datapoints][0] unless r[:datapoints][0].nil?
122
+ end
123
+ result.each do |key, value|
124
+ output key.downcase.to_s, value[static_value[key].downcase], value[:timestamp].to_i
125
+ end
126
+ end
127
+
128
+ def run
129
+ if config[:statistic] == ''
130
+ default_statistic_per_metric = {
131
+ 'Latency' => 'Average',
132
+ 'RequestCount' => 'Sum',
133
+ 'UnHealthyHostCount' => 'Average',
134
+ 'HealthyHostCount' => 'Average',
135
+ 'HTTPCode_Backend_2XX' => 'Sum',
136
+ 'HTTPCode_Backend_3XX' => 'Sum',
137
+ 'HTTPCode_Backend_4XX' => 'Sum',
138
+ 'HTTPCode_Backend_5XX' => 'Sum',
139
+ 'HTTPCode_ELB_4XX' => 'Sum',
140
+ 'HTTPCode_ELB_5XX' => 'Sum',
141
+ 'BackendConnectionErrors' => 'Sum',
142
+ 'SurgeQueueLength' => 'Maximum',
143
+ 'SpilloverCount' => 'Sum'
144
+ }
145
+ statistic = default_statistic_per_metric
146
+ else
147
+ statistic = config[:statistic]
148
+ end
149
+
150
+ begin
151
+ if config[:elbname].nil?
152
+ loadbalancer.describe_load_balancers.load_balancer_descriptions.each do |elb|
153
+ print_statistics(elb.load_balancer_name, statistic)
154
+ end
155
+ else
156
+ print_statistics(config[:elbname], statistic)
157
+ end
158
+ ok
159
+ end
160
+ end
161
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-edgelab
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgelab
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: diplomat
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.14.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.14.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: inifile
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -130,6 +144,7 @@ executables:
130
144
  - check-swarm-cluster.rb
131
145
  - metrics-asg.rb
132
146
  - check-nomad-leader.rb
147
+ - metrics-elb.rb
133
148
  - check-apt-expired-keys.rb
134
149
  - metrics-swarm-cluster.rb
135
150
  - metrics-mysql-processes.rb
@@ -141,6 +156,7 @@ files:
141
156
  - bin/check-nomad-leader.rb
142
157
  - bin/check-swarm-cluster.rb
143
158
  - bin/metrics-asg.rb
159
+ - bin/metrics-elb.rb
144
160
  - bin/metrics-mysql-processes.rb
145
161
  - bin/metrics-rds.rb
146
162
  - bin/metrics-swarm-cluster.rb