README.md in sensu-plugins-mesos-2.3.0 vs README.md in sensu-plugins-mesos-2.4.0
- old
+ new
@@ -21,9 +21,107 @@
* bin/metrics-marathon.rb
* bin/metrics-mesos.rb
## Usage
+### bin/check-marathon-apps.rb
+
+Note: This check is an unconventional one. It won't output a check result as many
+other conventional check scripts, and will publish multiple check results via
+the local sensu agent endpoint, effectively breaks the expectation of 1:1
+mapping between check-definition and check-results.
+
+This plugin checks Marathon apps based on
+https://mesosphere.github.io/marathon/docs/marathon-ui.html#application-status-reference .
+It produces two check results per application. One for the apps `health` and
+another check result for the apps `status`.
+
+Check results can be customised by two ways:
+
+1. Default check result fields thats applied to all will be provided by a
+ default check config. Please see th esource code to see the whole defaults.
+2. Application owners can override check results by using marathon labels. This
+ allows each application to have different fields in the published result.
+ e.g. per app escalation or aggregate can be controlled by applying Marathon
+ labels to the apps.
+
+```
+SENSU_MARATHON_CONTACT = team_a_rotation
+SENSU_MARATHON_AGGREGATE = this_apps_aggregate # will be applied to both `status` and `health` check results
+SENSU_MARATHON_STATUS_AGGREGATE = status_aggregate # status result of the app have different aggregate
+SENSU_MARATHON_HEALTH_AGGREGATE = health_aggregate # health result of the app have different aggregate
+SENSU_MARATHON_STATUS_UNSCHEDULED_STATUS = 0 # Disable the check's fail status for this app when it's in unscheduled state.
+```
+
+The override templates that could be used in marathon app labels are:
+
+```
+SENSU_MARATHON_<check_result_field> # will be applied all below if not overridden
+SENSU_MARATHON_STATUS_<check_result_field> # will be applied all status states if not overridden
+SENSU_MARATHON_STATUS_<status_state>_<check_result_field>
+SENSU_MARATHON_HEALTH_<check_result_field> # will be applied all healt states if not overridden
+SENSU_MARATHON_RESULT_<result_state>_<check_result_field>
+```
+
+Where:
+* `check_result_field` could be any field in json.
+* `status_state` is one of "waiting", "delayed", "suspended", "deploying" or "running".
+* `health_state` is one of "unscheduled", "overcapacity", "staged", "unknown", "unhealthy" or "healthy".
+
+Example run:
+
+```
+$ check-marathon-task.rb
+heckMarathonApps OK: Marathon Apps Status and Health check is running properly
+```
+
+The command output of the check script will always be same independently from
+which apps are being checked, but you'll see 2 check-results per app like these
+in sensu:
+
+```
+{
+ "name": "check_marathon_app_test_status",
+ "executed": 1519305736,
+ "marathon": {
+ "id": "/test",
+ "version": "2018-02-20T15:09:43.086Z",
+ "versionInfo": {
+ "lastScalingAt": "2018-02-20T15:09:43.086Z",
+ "lastConfigChangeAt": "2018-02-20T15:09:43.086Z"
+ },
+ "tasksStaged": 0,
+ "tasksRunning": 1,
+ "tasksHealthy": 1,
+ "tasksUnhealthy": 0
+ },
+ "output": "STATUS Unscheduled - tasksRunning(1), tasksStaged(0), tasksHealthy(1), tasksUnhealthy(0)",
+ "ttl": 10,
+ "source": "marathon",
+ "status": 2
+}
+{
+ "name": "check_marathon_app_test_health",
+ "executed": 1519305736,
+ "marathon": {
+ "id": "/test",
+ "version": "2018-02-20T15:09:43.086Z",
+ "versionInfo": {
+ "lastScalingAt": "2018-02-20T15:09:43.086Z",
+ "lastConfigChangeAt": "2018-02-20T15:09:43.086Z"
+ },
+ "tasksStaged": 0,
+ "tasksRunning": 1,
+ "tasksHealthy": 1,
+ "tasksUnhealthy": 0
+ },
+ "output": "HEALTH Healthy - tasksRunning(1), tasksStaged(0), tasksHealthy(1), tasksUnhealthy(0)",
+ "ttl": 10,
+ "source": "marathon",
+ "status": 0
+}
+```
+
## Installation
[Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
## Notes