sensu-plugins-haproxy 0.0.5 → 0.1.0

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,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 977f24700c561ec67eceac0e6be8d40e73983a7e
4
- data.tar.gz: 35b56c3e766fb1a0766ecf28299cbc637dbea9ee
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YjBkMWU0ZTg2NDliZWYwMjBmOGRhNzg1ZDNhMzcyOTMyYTc3NTk4ZQ==
5
+ data.tar.gz: !binary |-
6
+ YjM3ZTFhZDNlZjJmMGQ2N2U3NWYwMGQzZDg4YTVlYzU1Y2MyZGU2OQ==
5
7
  SHA512:
6
- metadata.gz: c347bba6013e3b205e62259685fc5e27077b789232e7a8cdb4a268552c1a6536474a4c52c13f2037155d82059852571c90d328604f4b65d16b6f61c624de4e39
7
- data.tar.gz: 5d4a63847381d55d79a75c60946d0731da4a875a5834975cad75ad12be93f6bdb6ec4488ba5b9307859ed42acf924b1a9b13880add9d777cdf4058cfd4504bbd
8
+ metadata.gz: !binary |-
9
+ ZDA4ZDk4N2ViMjk0ZDRkNjFiZDlmYWFjOWU5NzNlZWNlODM2ZTZkNjI0N2M0
10
+ YzE3ZGU0NTc0NDkzZGI0NTM3OGU2NzQ5NzlkMTY5OTA0MDYzZWZmYTcxZTJi
11
+ NDQ5ZjhlZDY3NTk4NzBmY2U2MDdiNTlmOGQ5MDllZTg5MzllOWM=
12
+ data.tar.gz: !binary |-
13
+ M2JhMzgwOTE5MWRiNGU1Y2EzMmNjNzk2ODBhMTg5MDI5MTM2MmM1ZjRlMWY1
14
+ M2EwYmE5NDBjYTY4YWQ4MWVmYjNkZWIyYWFhOWY1OTM0OThhZGU5MWIzODRh
15
+ ZWNlYjQyM2FiZTkxM2VlMzY4ZTMzOTNjZWMxMjY2MjRiYzk2YTk=
data/CHANGELOG.md CHANGED
@@ -3,7 +3,15 @@ This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
- ## Unreleased
6
+ ## [Unreleased]
7
+
8
+ ## [0.1.0] - 2016-03-04
9
+ ### Added
10
+ - added `num_up` metric for each backend set showing the number of available backends
11
+ - added flags to check session availability per backend
12
+
13
+ ### Changed
14
+ - update rubocop rules and fix errors
7
15
 
8
16
  ## [0.0.5] - 2015-11-26
9
17
  ### Changed
@@ -19,14 +27,19 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
19
27
  - updated sensu-plugin gem to 1.2.0
20
28
 
21
29
  ## [0.0.2] - 2015-06-02
22
-
23
30
  ### Fixed
24
31
  - added binstubs
25
32
 
26
33
  ### Changed
27
34
  - removed cruft from /lib
28
35
 
29
- ## [0.0.1] - 2015-05-21
30
-
36
+ ## 0.0.1 - 2015-05-21
31
37
  ### Added
32
38
  - initial release
39
+
40
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-haproxy/compare/0.1.0...HEAD
41
+ [0.1.0]: https://github.com/sensu-plugins/sensu-plugins-haproxy/compare/0.0.5...0.1.0
42
+ [0.0.5]: https://github.com/sensu-plugins/sensu-plugins-haproxy/compare/0.0.4...0.0.5
43
+ [0.0.4]: https://github.com/sensu-plugins/sensu-plugins-haproxy/compare/0.0.3...0.0.4
44
+ [0.0.3]: https://github.com/sensu-plugins/sensu-plugins-haproxy/compare/0.0.2...0.0.3
45
+ [0.0.2]: https://github.com/sensu-plugins/sensu-plugins-haproxy/compare/0.0.1...0.0.2
data/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
  [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-haproxy/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-haproxy)
6
6
  [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-haproxy/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-haproxy)
7
7
  [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-haproxy.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-haproxy)
8
- [ ![Codeship Status for sensu-plugins/sensu-plugins-haproxy](https://codeship.com/projects/f196a180-d1e5-0132-1723-16c1124d299d/status?branch=master)](https://codeship.com/projects/77420)
9
8
 
10
9
  ## Functionality
11
10
 
data/bin/check-haproxy.rb CHANGED
@@ -80,6 +80,14 @@ class CheckHAProxy < Sensu::Plugin::Check::CLI
80
80
  default: 90,
81
81
  proc: proc(&:to_i),
82
82
  description: 'Session Limit Critical Percent, default: 90'
83
+ option :backend_session_warn_percent,
84
+ short: '-b PERCENT',
85
+ proc: proc(&:to_i),
86
+ description: 'Per Backend Session Limit Warning Percent'
87
+ option :backend_session_crit_percent,
88
+ short: '-B PERCENT',
89
+ proc: proc(&:to_i),
90
+ description: 'Per Backend Session Limit Critical Percent'
83
91
  option :min_warn_count,
84
92
  short: '-M COUNT',
85
93
  default: 0,
@@ -126,19 +134,39 @@ class CheckHAProxy < Sensu::Plugin::Check::CLI
126
134
  critical_sessions = services.select { |svc| svc[:slim].to_i > 0 && (100 * svc[:scur].to_f / svc[:slim].to_f) > config[:session_crit_percent] }
127
135
  warning_sessions = services.select { |svc| svc[:slim].to_i > 0 && (100 * svc[:scur].to_f / svc[:slim].to_f) > config[:session_warn_percent] }
128
136
 
137
+ critical_backends = services.select do |svc|
138
+ config[:backend_session_crit_percent] &&
139
+ svc[:svname] == 'BACKEND' &&
140
+ svc[:smax].to_i > 0 &&
141
+ (100 * svc[:scur].to_f / svc[:smax].to_f) > config[:backend_session_crit_percent]
142
+ end
143
+
144
+ warning_backends = services.select do |svc|
145
+ config[:backend_session_warn_percent] &&
146
+ svc[:svname] == 'BACKEND' &&
147
+ svc[:smax].to_i > 0 &&
148
+ (100 * svc[:scur].to_f / svc[:smax].to_f) > config[:backend_session_warn_percent]
149
+ end
150
+
129
151
  status = "UP: #{percent_up}% of #{services.size} /#{config[:service]}/ services" + (failed_names.empty? ? '' : ", DOWN: #{failed_names.join(', ')}")
130
152
  if services.size < config[:min_crit_count]
131
153
  critical status
132
154
  elsif percent_up < config[:crit_percent]
133
155
  critical status
134
- elsif !critical_sessions.empty?
156
+ elsif !critical_sessions.empty? && config[:backend_session_crit_percent].nil?
135
157
  critical status + '; Active sessions critical: ' + critical_sessions.map { |s| "#{s[:scur]} #{s[:pxname]}.#{s[:svname]}" }.join(', ')
158
+ elsif config[:backend_session_crit_percent] && !critical_backends.empty?
159
+ critical status + '; Active backends critical: ' +
160
+ critical_backends.map { |s| "current sessions: #{s[:scur]}, maximum sessions: #{s[:smax]} for #{s[:pxname]} backend." }.join(', ')
136
161
  elsif services.size < config[:min_warn_count]
137
162
  warning status
138
163
  elsif percent_up < config[:warn_percent]
139
164
  warning status
140
- elsif !warning_sessions.empty?
165
+ elsif !warning_sessions.empty? && config[:backend_session_warn_percent].nil?
141
166
  warning status + '; Active sessions warning: ' + warning_sessions.map { |s| "#{s[:scur]} #{s[:pxname]}.#{s[:svname]}" }.join(', ')
167
+ elsif config[:backend_session_warn_percent] && !warning_backends.empty?
168
+ critical status + '; Active backends warning: ' +
169
+ warning_backends.map { |s| "current sessions: #{s[:scur]}, maximum sessions: #{s[:smax]} for #{s[:pxname]} backend." }.join(', ')
142
170
  else
143
171
  ok status
144
172
  end
@@ -175,7 +203,7 @@ class CheckHAProxy < Sensu::Plugin::Check::CLI
175
203
  if config[:all_services]
176
204
  haproxy_stats
177
205
  else
178
- regexp = config[:exact_match] ? Regexp.new("^#{config[:service]}$") : Regexp.new("#{config[:service]}")
206
+ regexp = config[:exact_match] ? Regexp.new("^#{config[:service]}$") : Regexp.new(config[:service].to_s)
179
207
  haproxy_stats.select do |svc|
180
208
  svc[:pxname] =~ regexp
181
209
  # #YELLOW
@@ -80,7 +80,7 @@ class HAProxyMetrics < Sensu::Plugin::Metric::CLI::Graphite
80
80
  short: '-f BACKEND1[,BACKEND2]',
81
81
  long: '--backends BACKEND1[,BACKEND2]',
82
82
  proc: proc { |l| l.split(',') },
83
- default: [] # an empty list means show all backends
83
+ default: [] # an empty list means show all backends
84
84
 
85
85
  option :server_metrics,
86
86
  description: 'Add metrics for backend servers',
@@ -141,6 +141,7 @@ class HAProxyMetrics < Sensu::Plugin::Metric::CLI::Graphite
141
141
  warning "Unable to fetch stats from haproxy after #{config[:retries]} attempts"
142
142
  end
143
143
 
144
+ up_by_backend = {}
144
145
  parsed = CSV.parse(out)
145
146
  parsed.shift
146
147
  parsed.each do |line|
@@ -175,7 +176,17 @@ class HAProxyMetrics < Sensu::Plugin::Metric::CLI::Graphite
175
176
  elsif config[:server_metrics]
176
177
  output "#{config[:scheme]}.#{line[0]}.#{line[1]}.session_total", line[7]
177
178
  end
179
+
180
+ if line[1] != 'BACKEND' && !line[1].nil?
181
+ up_by_backend[line[0]] ||= 0
182
+ up_by_backend[line[0]] += (line[17] == 'UP') ? 1 : 0
183
+ end
178
184
  end
185
+
186
+ up_by_backend.each_pair do |backend, count|
187
+ output "#{config[:scheme]}.#{backend}.num_up", count
188
+ end
189
+
179
190
  ok
180
191
  end
181
192
  end
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsHAProxy
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 0
5
- PATCH = 5
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,185 +1,162 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-haproxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRIwEAYDVQQDDAltYXR0
14
- am9uZXMxGDAWBgoJkiaJk/IsZAEZFgh5aWVsZGJvdDETMBEGCgmSJomT8ixkARkW
15
- A2NvbTAeFw0xNTAxMjgyMTAyNTFaFw0xNjAxMjgyMTAyNTFaMEMxEjAQBgNVBAMM
16
- CW1hdHRqb25lczEYMBYGCgmSJomT8ixkARkWCHlpZWxkYm90MRMwEQYKCZImiZPy
17
- LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyTSzVYnO
18
- CLgyrIyT1mBQakArQyW8xhi6MlDqyzXHJGeERT790U6EgoBVeS4XoK0ptFZNR8Tf
19
- zko0w+Nv47TarSCgkPOaxY+mxWnAVR10dOmfeLr7huiMyps+YD56/EF2FqQ3jf/+
20
- qohENfKD91qy1ieEy+Fn7Pf74ltbNKUdkb9a9eFXQ0DQ4ip5vik7DzjQkUTj4lca
21
- k6ArwnmHX4YDhZoYtrQJ8jVktN0/+NtA40M5qkCYHNe5tUW25b/tKVYuioxG6b2Z
22
- oIzaZxRLxf6HVAWpCVRT/F5+/yjigkX4u++eYacfLGleXQzoK7BL65vHGMJygWEE
23
- 0TKGqFOrl/L0AQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
24
- HQ4EFgQUEf6a8Td7MrSZc8ImbLFZAENPbz0wIQYDVR0RBBowGIEWbWF0dGpvbmVz
25
- QHlpZWxkYm90LmNvbTAhBgNVHRIEGjAYgRZtYXR0am9uZXNAeWllbGRib3QuY29t
26
- MA0GCSqGSIb3DQEBBQUAA4IBAQBbzXAYA3BVGw8DZ0YYoY1VHPNEcH5qPIApmHO8
27
- rvSmuUT0yMEi7u00H/5uHRFf4LleGT/+sTdyXKsNPGT9kdRuQEgwi+vf7Zfvd8aX
28
- UF/+4VkEYf/8rV8Ere6u2QaWPgApdMV6JjKr1fAwCTd8AuGXNaWItiPPMseSQzLJ
29
- JKP4hVvbc1d+oS925B1lcBiqn2aYvElbyNAVmQPywNNqkWmvtlqj9ZVJfV5HQLdu
30
- 8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
- HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
- -----END CERTIFICATE-----
33
- date: 2015-11-26 00:00:00.000000000 Z
10
+ cert_chain: []
11
+ date: 2016-03-04 00:00:00.000000000 Z
34
12
  dependencies:
35
13
  - !ruby/object:Gem::Dependency
36
14
  name: sensu-plugin
37
15
  requirement: !ruby/object:Gem::Requirement
38
16
  requirements:
39
- - - '='
17
+ - - ~>
40
18
  - !ruby/object:Gem::Version
41
- version: 1.2.0
19
+ version: '1.2'
42
20
  type: :runtime
43
21
  prerelease: false
44
22
  version_requirements: !ruby/object:Gem::Requirement
45
23
  requirements:
46
- - - '='
24
+ - - ~>
47
25
  - !ruby/object:Gem::Version
48
- version: 1.2.0
26
+ version: '1.2'
49
27
  - !ruby/object:Gem::Dependency
50
28
  name: bundler
51
29
  requirement: !ruby/object:Gem::Requirement
52
30
  requirements:
53
- - - "~>"
31
+ - - ~>
54
32
  - !ruby/object:Gem::Version
55
33
  version: '1.7'
56
34
  type: :development
57
35
  prerelease: false
58
36
  version_requirements: !ruby/object:Gem::Requirement
59
37
  requirements:
60
- - - "~>"
38
+ - - ~>
61
39
  - !ruby/object:Gem::Version
62
40
  version: '1.7'
63
41
  - !ruby/object:Gem::Dependency
64
42
  name: codeclimate-test-reporter
65
43
  requirement: !ruby/object:Gem::Requirement
66
44
  requirements:
67
- - - "~>"
45
+ - - ~>
68
46
  - !ruby/object:Gem::Version
69
47
  version: '0.4'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
51
  requirements:
74
- - - "~>"
52
+ - - ~>
75
53
  - !ruby/object:Gem::Version
76
54
  version: '0.4'
77
55
  - !ruby/object:Gem::Dependency
78
56
  name: github-markup
79
57
  requirement: !ruby/object:Gem::Requirement
80
58
  requirements:
81
- - - "~>"
59
+ - - ~>
82
60
  - !ruby/object:Gem::Version
83
61
  version: '1.3'
84
62
  type: :development
85
63
  prerelease: false
86
64
  version_requirements: !ruby/object:Gem::Requirement
87
65
  requirements:
88
- - - "~>"
66
+ - - ~>
89
67
  - !ruby/object:Gem::Version
90
68
  version: '1.3'
91
69
  - !ruby/object:Gem::Dependency
92
70
  name: pry
93
71
  requirement: !ruby/object:Gem::Requirement
94
72
  requirements:
95
- - - "~>"
73
+ - - ~>
96
74
  - !ruby/object:Gem::Version
97
75
  version: '0.10'
98
76
  type: :development
99
77
  prerelease: false
100
78
  version_requirements: !ruby/object:Gem::Requirement
101
79
  requirements:
102
- - - "~>"
80
+ - - ~>
103
81
  - !ruby/object:Gem::Version
104
82
  version: '0.10'
105
83
  - !ruby/object:Gem::Dependency
106
84
  name: rake
107
85
  requirement: !ruby/object:Gem::Requirement
108
86
  requirements:
109
- - - "~>"
87
+ - - ~>
110
88
  - !ruby/object:Gem::Version
111
89
  version: '10.0'
112
90
  type: :development
113
91
  prerelease: false
114
92
  version_requirements: !ruby/object:Gem::Requirement
115
93
  requirements:
116
- - - "~>"
94
+ - - ~>
117
95
  - !ruby/object:Gem::Version
118
96
  version: '10.0'
119
97
  - !ruby/object:Gem::Dependency
120
98
  name: redcarpet
121
99
  requirement: !ruby/object:Gem::Requirement
122
100
  requirements:
123
- - - "~>"
101
+ - - ~>
124
102
  - !ruby/object:Gem::Version
125
103
  version: '3.2'
126
104
  type: :development
127
105
  prerelease: false
128
106
  version_requirements: !ruby/object:Gem::Requirement
129
107
  requirements:
130
- - - "~>"
108
+ - - ~>
131
109
  - !ruby/object:Gem::Version
132
110
  version: '3.2'
133
111
  - !ruby/object:Gem::Dependency
134
112
  name: rspec
135
113
  requirement: !ruby/object:Gem::Requirement
136
114
  requirements:
137
- - - "~>"
115
+ - - ~>
138
116
  - !ruby/object:Gem::Version
139
117
  version: '3.1'
140
118
  type: :development
141
119
  prerelease: false
142
120
  version_requirements: !ruby/object:Gem::Requirement
143
121
  requirements:
144
- - - "~>"
122
+ - - ~>
145
123
  - !ruby/object:Gem::Version
146
124
  version: '3.1'
147
125
  - !ruby/object:Gem::Dependency
148
126
  name: rubocop
149
127
  requirement: !ruby/object:Gem::Requirement
150
128
  requirements:
151
- - - '='
129
+ - - ~>
152
130
  - !ruby/object:Gem::Version
153
- version: 0.32.1
131
+ version: '0.37'
154
132
  type: :development
155
133
  prerelease: false
156
134
  version_requirements: !ruby/object:Gem::Requirement
157
135
  requirements:
158
- - - '='
136
+ - - ~>
159
137
  - !ruby/object:Gem::Version
160
- version: 0.32.1
138
+ version: '0.37'
161
139
  - !ruby/object:Gem::Dependency
162
140
  name: yard
163
141
  requirement: !ruby/object:Gem::Requirement
164
142
  requirements:
165
- - - "~>"
143
+ - - ~>
166
144
  - !ruby/object:Gem::Version
167
145
  version: '0.8'
168
146
  type: :development
169
147
  prerelease: false
170
148
  version_requirements: !ruby/object:Gem::Requirement
171
149
  requirements:
172
- - - "~>"
150
+ - - ~>
173
151
  - !ruby/object:Gem::Version
174
152
  version: '0.8'
175
- description: |-
176
- This plugin provides native HAProxy instrumentation
177
- for monitoring and metrics collection, including:
178
- service health and backend server metrics.
179
- email: "<sensu-users@googlegroups.com>"
153
+ description: ! "This plugin provides native HAProxy instrumentation\n for
154
+ monitoring and metrics collection, including:\n service
155
+ health and backend server metrics."
156
+ email: <sensu-users@googlegroups.com>
180
157
  executables:
181
- - metrics-haproxy.rb
182
158
  - check-haproxy.rb
159
+ - metrics-haproxy.rb
183
160
  extensions: []
184
161
  extra_rdoc_files: []
185
162
  files:
@@ -206,17 +183,17 @@ require_paths:
206
183
  - lib
207
184
  required_ruby_version: !ruby/object:Gem::Requirement
208
185
  requirements:
209
- - - ">="
186
+ - - ! '>='
210
187
  - !ruby/object:Gem::Version
211
188
  version: 1.9.3
212
189
  required_rubygems_version: !ruby/object:Gem::Requirement
213
190
  requirements:
214
- - - ">="
191
+ - - ! '>='
215
192
  - !ruby/object:Gem::Version
216
193
  version: '0'
217
194
  requirements: []
218
195
  rubyforge_project:
219
- rubygems_version: 2.4.8
196
+ rubygems_version: 2.4.5
220
197
  signing_key:
221
198
  specification_version: 4
222
199
  summary: Sensu plugins for haproxy
checksums.yaml.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- ���W')Xz
+ ���׼��iY;1F�����w���D��(W8?H�⡖wt����g[��(B3�����">�[����ȍ0n3<�/��~�
2
-
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
Binary file