sensu-plugins-mesos 2.3.0 → 2.4.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,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e10b24c48670147d1b92bd26eb23f9d3d41cc8898a9eceae4e8eec37337c275d
4
- data.tar.gz: 36f43ad36b03fa997bd3658d2f918a503d1a5e0ae74cab0bbef9bc40cedeef44
3
+ metadata.gz: 66f974c1746c5c76ec41774dfa2d2c883be9ec69833343ca8d059dbe1ed81fb7
4
+ data.tar.gz: 21d72c1e2cdd1b959b99cfb1e86638d8d6511b690b9b726b9ac166724198c206
5
5
  SHA512:
6
- metadata.gz: 7f1dd2f114f1179da80e69c48555a700e64bde5ac561827e8353aec76c305d92def4afec8b00110f7d6b2be832def154716bb178bd378976d0d3511c35967222
7
- data.tar.gz: e6e8302cd5a95ba10e2f6dafe8556e32eb2c718245f212664b6316224f2e883509093abff12e0b7e234edb527f12a43639ac293dbd416c6c43f6131693850078
6
+ metadata.gz: c3f7a279c708dd1601b34b0b40b08da212b8c3f28de668b27756328889d1246ac0ad622b083549bf8eb587ec2c1ce81982a40e315b4b82f2849d01c2f8f5d90c
7
+ data.tar.gz: 2fb9fe06014643337d6b4af8daea52e3596df0cea134b1aeafad721f8a5041f62732a1d3e4107591cd5dcb68e079a79b834fec9d9eb594fa1cea74b5838c8096
data/CHANGELOG.md CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.4.0] - 2018-03-20
9
+ ### Changed
10
+ - check-marathon-apps.rb: minor fixes and documentation update for this check (@bergerx)
11
+
8
12
  ## [2.3.0] - 2018-03-17
9
13
  ### Added
10
14
  - testing skeleton for `test-kitchen`, `kitchen-docker`, and `serverspec` (@majormoses)
@@ -94,7 +98,8 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
94
98
  ### Added
95
99
  - initial release
96
100
 
97
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.3.0...HEAD
101
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.4.0...HEAD
102
+ [2.4.0]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.3.0...2.4.0
98
103
  [2.3.0]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.2.2...2.3.0
99
104
  [2.2.2]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.1.2...2.2.2
100
105
  [2.1.2]: https://github.com/sensu-plugins/sensu-plugins-mesos/compare/2.1.1...2.1.2
data/README.md CHANGED
@@ -23,6 +23,104 @@
23
23
 
24
24
  ## Usage
25
25
 
26
+ ### bin/check-marathon-apps.rb
27
+
28
+ Note: This check is an unconventional one. It won't output a check result as many
29
+ other conventional check scripts, and will publish multiple check results via
30
+ the local sensu agent endpoint, effectively breaks the expectation of 1:1
31
+ mapping between check-definition and check-results.
32
+
33
+ This plugin checks Marathon apps based on
34
+ https://mesosphere.github.io/marathon/docs/marathon-ui.html#application-status-reference .
35
+ It produces two check results per application. One for the apps `health` and
36
+ another check result for the apps `status`.
37
+
38
+ Check results can be customised by two ways:
39
+
40
+ 1. Default check result fields thats applied to all will be provided by a
41
+ default check config. Please see th esource code to see the whole defaults.
42
+ 2. Application owners can override check results by using marathon labels. This
43
+ allows each application to have different fields in the published result.
44
+ e.g. per app escalation or aggregate can be controlled by applying Marathon
45
+ labels to the apps.
46
+
47
+ ```
48
+ SENSU_MARATHON_CONTACT = team_a_rotation
49
+ SENSU_MARATHON_AGGREGATE = this_apps_aggregate # will be applied to both `status` and `health` check results
50
+ SENSU_MARATHON_STATUS_AGGREGATE = status_aggregate # status result of the app have different aggregate
51
+ SENSU_MARATHON_HEALTH_AGGREGATE = health_aggregate # health result of the app have different aggregate
52
+ SENSU_MARATHON_STATUS_UNSCHEDULED_STATUS = 0 # Disable the check's fail status for this app when it's in unscheduled state.
53
+ ```
54
+
55
+ The override templates that could be used in marathon app labels are:
56
+
57
+ ```
58
+ SENSU_MARATHON_<check_result_field> # will be applied all below if not overridden
59
+ SENSU_MARATHON_STATUS_<check_result_field> # will be applied all status states if not overridden
60
+ SENSU_MARATHON_STATUS_<status_state>_<check_result_field>
61
+ SENSU_MARATHON_HEALTH_<check_result_field> # will be applied all healt states if not overridden
62
+ SENSU_MARATHON_RESULT_<result_state>_<check_result_field>
63
+ ```
64
+
65
+ Where:
66
+ * `check_result_field` could be any field in json.
67
+ * `status_state` is one of "waiting", "delayed", "suspended", "deploying" or "running".
68
+ * `health_state` is one of "unscheduled", "overcapacity", "staged", "unknown", "unhealthy" or "healthy".
69
+
70
+ Example run:
71
+
72
+ ```
73
+ $ check-marathon-task.rb
74
+ heckMarathonApps OK: Marathon Apps Status and Health check is running properly
75
+ ```
76
+
77
+ The command output of the check script will always be same independently from
78
+ which apps are being checked, but you'll see 2 check-results per app like these
79
+ in sensu:
80
+
81
+ ```
82
+ {
83
+ "name": "check_marathon_app_test_status",
84
+ "executed": 1519305736,
85
+ "marathon": {
86
+ "id": "/test",
87
+ "version": "2018-02-20T15:09:43.086Z",
88
+ "versionInfo": {
89
+ "lastScalingAt": "2018-02-20T15:09:43.086Z",
90
+ "lastConfigChangeAt": "2018-02-20T15:09:43.086Z"
91
+ },
92
+ "tasksStaged": 0,
93
+ "tasksRunning": 1,
94
+ "tasksHealthy": 1,
95
+ "tasksUnhealthy": 0
96
+ },
97
+ "output": "STATUS Unscheduled - tasksRunning(1), tasksStaged(0), tasksHealthy(1), tasksUnhealthy(0)",
98
+ "ttl": 10,
99
+ "source": "marathon",
100
+ "status": 2
101
+ }
102
+ {
103
+ "name": "check_marathon_app_test_health",
104
+ "executed": 1519305736,
105
+ "marathon": {
106
+ "id": "/test",
107
+ "version": "2018-02-20T15:09:43.086Z",
108
+ "versionInfo": {
109
+ "lastScalingAt": "2018-02-20T15:09:43.086Z",
110
+ "lastConfigChangeAt": "2018-02-20T15:09:43.086Z"
111
+ },
112
+ "tasksStaged": 0,
113
+ "tasksRunning": 1,
114
+ "tasksHealthy": 1,
115
+ "tasksUnhealthy": 0
116
+ },
117
+ "output": "HEALTH Healthy - tasksRunning(1), tasksStaged(0), tasksHealthy(1), tasksUnhealthy(0)",
118
+ "ttl": 10,
119
+ "source": "marathon",
120
+ "status": 0
121
+ }
122
+ ```
123
+
26
124
  ## Installation
27
125
 
28
126
  [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
@@ -3,7 +3,7 @@
3
3
  # check-marathon-apps
4
4
  #
5
5
  # DESCRIPTION:
6
- # This plugin creates checks results for each Marathon app that is running,
6
+ # This check script creates checks results for each Marathon app that is running,
7
7
  # and reports the status of the app based on Marathon Application Status Reference.
8
8
  # https://mesosphere.github.io/marathon/docs/marathon-ui.html#application-status-reference
9
9
  #
@@ -173,7 +173,7 @@ class MarathonAppsCheck < Sensu::Plugin::Check::CLI
173
173
  '`--default-check-config` will override this one.'
174
174
 
175
175
  option :sensu_client_url,
176
- description: 'Sensu client HTTP URL socket',
176
+ description: 'Sensu client HTTP URL',
177
177
  long: '--sensu-client-url url',
178
178
  default: 'http://localhost:3031'
179
179
 
@@ -246,7 +246,7 @@ class MarathonAppsCheck < Sensu::Plugin::Check::CLI
246
246
  "tasksHealthy(#{app['tasksHealthy'].to_i}), tasksUnhealthy(#{app['tasksUnhealthy'].to_i})"
247
247
 
248
248
  # Make sure that check result data types are correct
249
- sanitize_check_result(check_result)
249
+ enforce_sensu_field_types(check_result)
250
250
 
251
251
  # Send the result to sensu-client HTTP socket
252
252
  post_check_result(check_result)
@@ -267,7 +267,7 @@ class MarathonAppsCheck < Sensu::Plugin::Check::CLI
267
267
  }
268
268
  end
269
269
 
270
- def sanitize_check_result(check_result)
270
+ def enforce_sensu_field_types(check_result)
271
271
  # Force data types of different fields on the check result
272
272
  # https://sensuapp.org/docs/latest/reference/checks.html#example-check-definition
273
273
  # https://sensuapp.org/docs/latest/reference/checks.html#check-result-specification
@@ -285,7 +285,7 @@ class MarathonAppsCheck < Sensu::Plugin::Check::CLI
285
285
  end
286
286
  end
287
287
 
288
- def get(path)
288
+ def rest_client(path)
289
289
  RestClient.get("#{config[:url]}#{path}",
290
290
  user: config[:username],
291
291
  password: config[:password],
@@ -298,12 +298,12 @@ class MarathonAppsCheck < Sensu::Plugin::Check::CLI
298
298
  def fetch_apps
299
299
  # http://mesosphere.github.io/marathon/api-console/index.html
300
300
  resources_query = APPS_EMBED_RESOURCES.map { |resource| "embed=#{resource}" }.join('&')
301
- parse_json(get("/v2/apps?#{resources_query}"))['apps']
301
+ parse_json(rest_client("/v2/apps?#{resources_query}"))['apps']
302
302
  end
303
303
 
304
304
  def fetch_queue
305
305
  # http://mesosphere.github.io/marathon/api-console/index.html
306
- parse_json(get('/v2/queue'))['queue']
306
+ parse_json(rest_client('/v2/queue'))['queue']
307
307
  end
308
308
 
309
309
  def post_check_result(data)
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsMesos
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 3
4
+ MINOR = 4
5
5
  PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-mesos
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-17 00:00:00.000000000 Z
11
+ date: 2018-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client