You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by dl...@apache.org on 2015/07/01 20:55:33 UTC

svn commit: r1688707 [4/7] - in /mesos/site: publish/ publish/documentation/ publish/documentation/allocation-module/ publish/documentation/app-framework-development-guide/ publish/documentation/clang-format/ publish/documentation/configuration/ publis...

Added: mesos/site/publish/documentation/monitoring/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/monitoring/index.html?rev=1688707&view=auto
==============================================================================
--- mesos/site/publish/documentation/monitoring/index.html (added)
+++ mesos/site/publish/documentation/monitoring/index.html Wed Jul  1 18:55:31 2015
@@ -0,0 +1,1164 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+		    <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
+		    
+		    <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
+				
+		    
+			
+			<!-- Google Analytics Magic -->
+			<script type="text/javascript">
+			  var _gaq = _gaq || [];
+			  _gaq.push(['_setAccount', 'UA-20226872-1']);
+			  _gaq.push(['_setDomainName', 'apache.org']);
+			  _gaq.push(['_trackPageview']);
+
+			  (function() {
+			    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			  })();
+			</script>
+    </head>
+    <body>
+			<!-- magical breadcrumbs -->
+			<div class="topnav">
+			<ul class="breadcrumb">
+			  <li>
+					<div class="dropdown">
+					  <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
+					  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+							<li><a href="http://www.apache.org">Apache Homepage</a></li>
+							<li><a href="http://www.apache.org/licenses/">License</a></li>
+					  	<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
+					  	<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+							<li><a href="http://www.apache.org/security/">Security</a></li>
+					  </ul>
+					</div>
+				</li>
+				<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
+				
+				
+					<li><a href="/documentation
+/">Documentation
+</a></li>
+				
+				
+			</ul><!-- /breadcrumb -->
+			</div>
+			
+			<!-- navbar excitement -->
+	    <div class="navbar navbar-static-top" role="navigation">
+	      <div class="navbar-inner">
+	        <div class="container">
+						<a href="/" class="logo"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+					<div class="nav-collapse">
+						<ul class="nav nav-pills navbar-right">
+						  <li><a href="/gettingstarted/">Getting Started</a></li>
+						  <li><a href="/documentation/latest/">Documentation</a></li>
+						  <li><a href="/downloads/">Downloads</a></li>
+						  <li><a href="/community/">Community</a></li>
+						</ul>
+					</div>
+	        </div>
+	      </div>
+	    </div><!-- /.navbar -->
+
+      <div class="container">
+
+			<div class="row-fluid">
+	<div class="col-md-4">
+		<h4>If you're new to Mesos</h4>
+		<p>See the <a href="/gettingstarted/">getting started</a> page for more information about downloading, building, and deploying Mesos.</p>
+		
+		<h4>If you'd like to get involved or you're looking for support</h4>
+		<p>See our <a href="/community/">community</a> page for more details.</p>
+	</div>
+	<div class="col-md-8">
+		<h1>Mesos Observability Metrics</h1>
+
+<p>This document describes the observability metrics provided by Mesos master and
+slave nodes. This document also provides some initial guidance on which metrics
+you should monitor to detect abnormal situations in your cluster.</p>
+
+<h2>Overview</h2>
+
+<p>Mesos master and slave nodes report a set of statistics and metrics that enable
+you to  monitor resource usage and detect abnormal situations early. The
+information reported by Mesos includes details about available resources, used
+resources, registered frameworks, active slaves, and task state. You can use
+this information to create automated alerts and to plot different metrics over
+time inside a monitoring dashboard.</p>
+
+<h2>Metric Types</h2>
+
+<p>Mesos provides two different kinds of metrics: counters and gauges.</p>
+
+<p><strong>Counters</strong> keep track of discrete events and are monotonically increasing. The
+value of a metric of this type is always a natural number. Examples include the
+number of failed tasks and the number of slave registrations. For some metrics
+of this type, the rate of change is often more useful than the value itself.</p>
+
+<p><strong>Gauges</strong> represent an instantaneous sample of some magnitude. Examples include
+the amount of used memory in the cluster and the number of connected slaves. For
+some metrics of this type, it is often useful to determine whether the value is
+above or below a threshold for a sustained period of time.</p>
+
+<p>The tables in this document indicate the type of each available metric.</p>
+
+<h2>Master Nodes</h2>
+
+<p>Metrics from the master node are available at the following URL:</p>
+
+<pre><code>http://&lt;mesos-master-ip&gt;:5050/metrics/snapshot
+</code></pre>
+
+<p>The response is a JSON object that contains metrics names and values as
+key-value pairs.</p>
+
+<h3>Observability metrics</h3>
+
+<p>This section lists all available metrics from Mesos master nodes grouped by
+category.</p>
+
+<h4>Resources</h4>
+
+<p>The following metrics provide information about the total resources available in
+the cluster and their current usage. High resource usage for sustained periods
+of time may indicate that you need to add capacity to your cluster or that a
+framework is misbehaving.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/cpus_percent</code>
+  </td>
+  <td>Percentage of allocated CPUs</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/cpus_used</code>
+  </td>
+  <td>Number of allocated CPUs</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/cpus_total</code>
+  </td>
+  <td>Number of CPUs</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/disk_percent</code>
+  </td>
+  <td>Percentage of allocated disk space</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/disk_used</code>
+  </td>
+  <td>Allocated disk space in MB</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/disk_total</code>
+  </td>
+  <td>Disk space in MB</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/mem_percent</code>
+  </td>
+  <td>Percentage of allocated memory</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/mem_used</code>
+  </td>
+  <td>Allocated memory in MB</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/mem_total</code>
+  </td>
+  <td>Memory in MB</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Master</h4>
+
+<p>The following metrics provide information about whether a master is currently
+elected and how long it has been running. A cluster with no elected master
+for sustained periods of time indicates a malfunctioning cluster. This
+points to either leadership election issues (so check the connection to
+ZooKeeper) or a flapping Master process. A low uptime value indicates that the
+master has restarted recently.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/elected</code>
+  </td>
+  <td>Whether this is the elected master</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/uptime_secs</code>
+  </td>
+  <td>Uptime in seconds</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>System</h4>
+
+<p>The following metrics provide information about the resources available on this
+master node and their current usage. High resource usage in a master node for
+sustained periods of time may degrade the performance of the cluster.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>system/cpus_total</code>
+  </td>
+  <td>Number of CPUs available in this master node</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/load_15min</code>
+  </td>
+  <td>Load average for the past 15 minutes</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/load_5min</code>
+  </td>
+  <td>Load average for the past 5 minutes</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/load_1min</code>
+  </td>
+  <td>Load average for the past minute</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/mem_free_bytes</code>
+  </td>
+  <td>Free memory in bytes</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/mem_total_bytes</code>
+  </td>
+  <td>Total memory in bytes</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Slaves</h4>
+
+<p>The following metrics provide information about slave events, slave counts, and
+slave states. A low number of active slaves may indicate that slaves are
+unhealthy or that they are not able to connect to the elected master.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/slave_registrations</code>
+  </td>
+  <td>Number of slaves that were able to cleanly re-join the cluster and
+      connect back to the master after the master is disconnected.</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slave_removals</code>
+  </td>
+  <td>Number of slave removed for various reasons, including maintenance</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slave_reregistrations</code>
+  </td>
+  <td>Number of slave re-registrations</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slave_shutdowns_scheduled</code>
+  </td>
+  <td>Number of slaves which have failed their health check and are scheduled
+      to be removed. They will not be immediately removed due to the Slave
+      Removal Rate-Limit, but <code>master/slave_shutdowns_completed</code>
+      will start increasing as they do get removed.</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slave_shutdowns_cancelled</code>
+  </td>
+  <td>Number of cancelled slave shutdowns. This happens when the slave removal
+      rate limit allows for a slave to reconnect and send a <code>PONG</code>
+      to the master before being removed.</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slave_shutdowns_completed</code>
+  </td>
+  <td>Number of slaves that failed their health check. These are slaves which
+      were not heard from despite the slave-removal rate limit, and have been
+      removed from the master's slave registry.</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slaves_active</code>
+  </td>
+  <td>Number of active slaves</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slaves_connected</code>
+  </td>
+  <td>Number of connected slaves</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slaves_disconnected</code>
+  </td>
+  <td>Number of disconnected slaves</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/slaves_inactive</code>
+  </td>
+  <td>Number of inactive slaves</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Frameworks</h4>
+
+<p>The following metrics provide information about the registered frameworks in the
+cluster. No active or connected frameworks may indicate that a scheduler is not
+registered or that it is misbehaving.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/frameworks_active</code>
+  </td>
+  <td>Number of active frameworks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/frameworks_connected</code>
+  </td>
+  <td>Number of connected frameworks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/frameworks_disconnected</code>
+  </td>
+  <td>Number of disconnected frameworks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/frameworks_inactive</code>
+  </td>
+  <td>Number of inactive frameworks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/outstanding_offers</code>
+  </td>
+  <td>Number of outstanding resource offers</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Tasks</h4>
+
+<p>The following metrics provide information about active and terminated tasks. A
+high rate of lost tasks may indicate that there is a problem with the cluster.
+The task states listed here match those of the task state machine.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/tasks_error</code>
+  </td>
+  <td>Number of tasks that were invalid</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_failed</code>
+  </td>
+  <td>Number of failed tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_finished</code>
+  </td>
+  <td>Number of finished tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_killed</code>
+  </td>
+  <td>Number of killed tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_lost</code>
+  </td>
+  <td>Number of lost tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_running</code>
+  </td>
+  <td>Number of running tasks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_staging</code>
+  </td>
+  <td>Number of staging tasks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/tasks_starting</code>
+  </td>
+  <td>Number of starting tasks</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Messages</h4>
+
+<p>The following metrics provide information about messages between the master and
+the slaves and between the framework and the executors. A high rate of dropped
+messages may indicate that there is a problem with the network.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/invalid_framework_to_executor_messages</code>
+  </td>
+  <td>Number of invalid framework to executor messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/invalid_status_update_acknowledgements</code>
+  </td>
+  <td>Number of invalid status update acknowledgements</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/invalid_status_updates</code>
+  </td>
+  <td>Number of invalid status updates</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/dropped_messages</code>
+  </td>
+  <td>Number of dropped messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_authenticate</code>
+  </td>
+  <td>Number of authentication messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_deactivate_framework</code>
+  </td>
+  <td>Number of framework deactivation messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_exited_executor</code>
+  </td>
+  <td>Number of terminated executor messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_framework_to_executor</code>
+  </td>
+  <td>Number of messages from a framework to an executor</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_kill_task</code>
+  </td>
+  <td>Number of kill task messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_launch_tasks</code>
+  </td>
+  <td>Number of launch task messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_reconcile_tasks</code>
+  </td>
+  <td>Number of reconcile task messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_register_framework</code>
+  </td>
+  <td>Number of framework registration messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_register_slave</code>
+  </td>
+  <td>Number of slave registration messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_reregister_framework</code>
+  </td>
+  <td>Number of framework re-registration messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_reregister_slave</code>
+  </td>
+  <td>Number of slave re-registration messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_resource_request</code>
+  </td>
+  <td>Number of resource request messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_revive_offers</code>
+  </td>
+  <td>Number of offer revival messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_status_udpate</code>
+  </td>
+  <td>Number of status update messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_status_update_acknowledgement</code>
+  </td>
+  <td>Number of status update acknowledgement messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_unregister_framework</code>
+  </td>
+  <td>Number of framework unregistration messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/messages_unregister_slave</code>
+  </td>
+  <td>Number of slave unregistration messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/valid_framework_to_executor_messages</code>
+  </td>
+  <td>Number of valid framework to executor messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/valid_status_update_acknowledgements</code>
+  </td>
+  <td>Number of valid status update acknowledgement messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>master/valid_status_updates</code>
+  </td>
+  <td>Number of valid status update messages</td>
+  <td>Counter</td>
+</tr>
+</table>
+
+
+<h4>Event queue</h4>
+
+<p>The following metrics provide information about different types of events in the
+event queue.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>master/event_queue_dispatches</code>
+  </td>
+  <td>Number of dispatches in the event queue</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/event_queue_http_requests</code>
+  </td>
+  <td>Number of HTTP requests in the event queue</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>master/event_queue_messages</code>
+  </td>
+  <td>Number of messages in the event queue</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Registrar</h4>
+
+<p>The following metrics provide information about read and write latency to the
+slave registrar.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>registrar/state_fetch_ms</code>
+  </td>
+  <td>Registry read latency in ms </td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms</code>
+  </td>
+  <td>Registry write latency in ms </td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/max</code>
+  </td>
+  <td>Maximum registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/min</code>
+  </td>
+  <td>Minimum registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/p50</code>
+  </td>
+  <td>Median registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/p90</code>
+  </td>
+  <td>90th percentile registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/p95</code>
+  </td>
+  <td>95th percentile registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/p99</code>
+  </td>
+  <td>99th percentile registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/p999</code>
+  </td>
+  <td>99.9th percentile registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>registrar/state_store_ms/p9999</code>
+  </td>
+  <td>99.99th percentile registry write latency in ms</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h3>Basic Alerts</h3>
+
+<p>This section lists some examples of basic alerts that you can use to detect
+abnormal situations in a cluster.</p>
+
+<h4>master/uptime_secs is low</h4>
+
+<p>The master has restarted.</p>
+
+<h4>master/uptime_secs &lt; 60 for sustained periods of time</h4>
+
+<p>The cluster has a flapping master node.</p>
+
+<h4>master/tasks_lost is increasing rapidly</h4>
+
+<p>Tasks in the cluster are disappearing. Possible causes include hardware
+failures, bugs in one of the frameworks, or bugs in Mesos.</p>
+
+<h4>master/slaves_active is low</h4>
+
+<p>Slaves are having trouble connecting to the master.</p>
+
+<h4>master/cpus_percent > 0.9 for sustained periods of time</h4>
+
+<p>Cluster CPU utilization is close to capacity.</p>
+
+<h4>master/mem_percent > 0.9 for sustained periods of time</h4>
+
+<p>Cluster memory utilization is close to capacity.</p>
+
+<h4>master/elected is 0 for sustained periods of time</h4>
+
+<p>No master is currently elected.</p>
+
+<h2>Slave Nodes</h2>
+
+<p>Metrics from each slave node are available at the following URL:</p>
+
+<pre><code>http://&lt;mesos-slave&gt;:5051/metrics/snapshot
+</code></pre>
+
+<p>The response is a JSON object that contains metrics names and values as key-
+value pairs.</p>
+
+<h3>Observability Metrics</h3>
+
+<p>This section lists all available metrics from Mesos slave nodes grouped by
+category.</p>
+
+<h4>Resources</h4>
+
+<p>The following metrics provide information about the total resources available in
+the slave and their current usage.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>slave/cpus_percent</code>
+  </td>
+  <td>Percentage of allocated CPUs</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/cpus_used</code>
+  </td>
+  <td>Number of allocated CPUs</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/cpus_total</code>
+  </td>
+  <td>Number of CPUs</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/disk_percent</code>
+  </td>
+  <td>Percentage of allocated disk space</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/disk_used</code>
+  </td>
+  <td>Allocated disk space in MB</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/disk_total</code>
+  </td>
+  <td>Disk space in MB</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/mem_percent</code>
+  </td>
+  <td>Percentage of allocated memory</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/mem_used</code>
+  </td>
+  <td>Allocated memory in MB</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/mem_total</code>
+  </td>
+  <td>Memory in MB</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Slave</h4>
+
+<p>The following metrics provide information about whether a slave is currently
+registered with a master and for how long it has been running.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>slave/registered</code>
+  </td>
+  <td>Whether this slave is registered with a master</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/uptime_secs</code>
+  </td>
+  <td>Uptime in seconds</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>System</h4>
+
+<p>The following metrics provide information about the slave system.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>system/cpus_total</code>
+  </td>
+  <td>Number of CPUs available</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/load_15min</code>
+  </td>
+  <td>Load average for the past 15 minutes</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/load_5min</code>
+  </td>
+  <td>Load average for the past 5 minutes</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/load_1min</code>
+  </td>
+  <td>Load average for the past minute</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/mem_free_bytes</code>
+  </td>
+  <td>Free memory in bytes</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>system/mem_total_bytes</code>
+  </td>
+  <td>Total memory in bytes</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Executors</h4>
+
+<p>The following metrics provide information about the executor instances running
+on the slave.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>slave/frameworks_active</code>
+  </td>
+  <td>Number of active frameworks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/executors_registering</code>
+  </td>
+  <td>Number of executors registering</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/executors_running</code>
+  </td>
+  <td>Number of executors running</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/executors_terminated</code>
+  </td>
+  <td>Number of terminated executors</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/executors_terminating</code>
+  </td>
+  <td>Number of terminating executors</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Tasks</h4>
+
+<p>The following metrics provide information about active and terminated tasks.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>slave/tasks_failed</code>
+  </td>
+  <td>Number of failed tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/tasks_finished</code>
+  </td>
+  <td>Number of finished tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/tasks_killed</code>
+  </td>
+  <td>Number of killed tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/tasks_lost</code>
+  </td>
+  <td>Number of lost tasks</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/tasks_running</code>
+  </td>
+  <td>Number of running tasks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/tasks_staging</code>
+  </td>
+  <td>Number of staging tasks</td>
+  <td>Gauge</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/tasks_starting</code>
+  </td>
+  <td>Number of starting tasks</td>
+  <td>Gauge</td>
+</tr>
+</table>
+
+
+<h4>Messages</h4>
+
+<p>The following metrics provide information about messages between the slaves and
+the master it is registered with.</p>
+
+<table class="table table-striped">
+<thead>
+<tr><th>Metric</th><th>Description</th><th>Type</th>
+</thead>
+<tr>
+  <td>
+  <code>slave/invalid_framework_messages</code>
+  </td>
+  <td>Number of invalid framework messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/invalid_status_udpates</code>
+  </td>
+  <td>Number of invalid status updates</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/valid_framework_messages</code>
+  </td>
+  <td>Number of valid framework messages</td>
+  <td>Counter</td>
+</tr>
+<tr>
+  <td>
+  <code>slave/valid_status_udpates</code>
+  </td>
+  <td>Number of valid status updates</td>
+  <td>Counter</td>
+</tr>
+</table>
+
+
+	</div>
+</div>
+
+			
+	      <hr>
+
+				<!-- footer -->
+	      <div class="footer">
+	        <p>&copy; 2012-2014 <a href="http://apache.org">The Apache Software Foundation</a>.
+	        Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.<p>
+	      </div><!-- /footer -->
+
+	    </div> <!-- /container -->
+
+	    <!-- JS -->
+	    <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
+			<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Modified: mesos/site/publish/documentation/network-monitoring/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/network-monitoring/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/network-monitoring/index.html (original)
+++ mesos/site/publish/documentation/network-monitoring/index.html Wed Jul  1 18:55:31 2015
@@ -106,7 +106,7 @@
 <p>Make sure the following packages are installed on the slave:</p>
 
 <ul>
-<li><a href="http://www.infradead.org/~tgr/libnl/">libnl3</a> >= 3.2.25</li>
+<li><a href="http://www.infradead.org/~tgr/libnl/">libnl3</a> >= 3.2.26</li>
 <li><a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2">iproute</a> (>= 2.6.39 is advised but not required for debugging purpose)</li>
 </ul>
 
@@ -114,7 +114,7 @@
 <p>On the build machine, you need to install the following packages:</p>
 
 <ul>
-<li><a href="http://www.infradead.org/~tgr/libnl/">libnl3-devel</a> >= 3.2.25</li>
+<li><a href="http://www.infradead.org/~tgr/libnl/">libnl3-devel</a> >= 3.2.26</li>
 </ul>
 
 

Modified: mesos/site/publish/documentation/reconciliation/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/reconciliation/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/reconciliation/index.html (original)
+++ mesos/site/publish/documentation/reconciliation/index.html Wed Jul  1 18:55:31 2015
@@ -138,15 +138,15 @@ reconciliation in a framework scheduler.
 
 <p>Frameworks send a list of <code>TaskStatus</code> messages to the master:</p>
 
-<pre><code>  // Allows the framework to query the status for non-terminal tasks.
-  // This causes the master to send back the latest task status for
-  // each task in 'statuses', if possible. Tasks that are no longer
-  // known will result in a TASK_LOST update. If statuses is empty,
-  // then the master will send the latest status for each task
-  // currently known.
-  message Reconcile {
-    repeated TaskStatus statuses = 1; // Should be non-terminal only.
-  }
+<pre><code>// Allows the framework to query the status for non-terminal tasks.
+// This causes the master to send back the latest task status for
+// each task in 'statuses', if possible. Tasks that are no longer
+// known will result in a TASK_LOST update. If statuses is empty,
+// then the master will send the latest status for each task
+// currently known.
+message Reconcile {
+  repeated TaskStatus statuses = 1; // Should be non-terminal only.
+}
 </code></pre>
 
 <p>Currently, the master will only examine two fields in <code>TaskStatus</code>:</p>

Modified: mesos/site/publish/documentation/release-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/release-guide/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/release-guide/index.html (original)
+++ mesos/site/publish/documentation/release-guide/index.html Wed Jul  1 18:55:31 2015
@@ -102,23 +102,23 @@ e.g., <code>(gpg --list-sigs &lt;your na
 servers where you must copy your encrypted Apache password which
 you can get from running <code>mvn --encrypt-password</code> (NOTE: you may
 need to first generate a <a href="http://maven.apache.org/guides/mini/guide-encryption.html">master
-password</a>.
-<code>
-&lt;settings&gt;
-&lt;servers&gt;
- &lt;server&gt;
-   &lt;id&gt;apache.snapshots.https&lt;/id&gt;
-   &lt;username&gt;APACHE USERNAME&lt;/username&gt;
-   &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
- &lt;/server&gt;
- &lt;server&gt;
-   &lt;id&gt;apache.releases.https&lt;/id&gt;
-   &lt;username&gt;APACHE USERNAME&lt;/username&gt;
-   &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
- &lt;/server&gt;
-&lt;/servers&gt;
-&lt;/settings&gt;
-</code></p></li>
+password</a>.</p>
+
+<pre><code> &lt;settings&gt;
+   &lt;servers&gt;
+     &lt;server&gt;
+       &lt;id&gt;apache.snapshots.https&lt;/id&gt;
+       &lt;username&gt;APACHE USERNAME&lt;/username&gt;
+       &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
+     &lt;/server&gt;
+     &lt;server&gt;
+       &lt;id&gt;apache.releases.https&lt;/id&gt;
+       &lt;username&gt;APACHE USERNAME&lt;/username&gt;
+       &lt;password&gt;APACHE ENCRYPTED PASSWORD&lt;/password&gt;
+     &lt;/server&gt;
+   &lt;/servers&gt;
+ &lt;/settings&gt;
+</code></pre></li>
 <li><p>Use <code>gpg-agent</code> to avoid typing your passphrase repeatedly.</p></li>
 </ol>
 

Added: mesos/site/publish/documentation/reservation/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/reservation/index.html?rev=1688707&view=auto
==============================================================================
--- mesos/site/publish/documentation/reservation/index.html (added)
+++ mesos/site/publish/documentation/reservation/index.html Wed Jul  1 18:55:31 2015
@@ -0,0 +1,404 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+		    <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
+		    
+		    <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
+				
+		    
+			
+			<!-- Google Analytics Magic -->
+			<script type="text/javascript">
+			  var _gaq = _gaq || [];
+			  _gaq.push(['_setAccount', 'UA-20226872-1']);
+			  _gaq.push(['_setDomainName', 'apache.org']);
+			  _gaq.push(['_trackPageview']);
+
+			  (function() {
+			    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			  })();
+			</script>
+    </head>
+    <body>
+			<!-- magical breadcrumbs -->
+			<div class="topnav">
+			<ul class="breadcrumb">
+			  <li>
+					<div class="dropdown">
+					  <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
+					  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+							<li><a href="http://www.apache.org">Apache Homepage</a></li>
+							<li><a href="http://www.apache.org/licenses/">License</a></li>
+					  	<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
+					  	<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+							<li><a href="http://www.apache.org/security/">Security</a></li>
+					  </ul>
+					</div>
+				</li>
+				<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
+				
+				
+					<li><a href="/documentation
+/">Documentation
+</a></li>
+				
+				
+			</ul><!-- /breadcrumb -->
+			</div>
+			
+			<!-- navbar excitement -->
+	    <div class="navbar navbar-static-top" role="navigation">
+	      <div class="navbar-inner">
+	        <div class="container">
+						<a href="/" class="logo"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+					<div class="nav-collapse">
+						<ul class="nav nav-pills navbar-right">
+						  <li><a href="/gettingstarted/">Getting Started</a></li>
+						  <li><a href="/documentation/latest/">Documentation</a></li>
+						  <li><a href="/downloads/">Downloads</a></li>
+						  <li><a href="/community/">Community</a></li>
+						</ul>
+					</div>
+	        </div>
+	      </div>
+	    </div><!-- /.navbar -->
+
+      <div class="container">
+
+			<div class="row-fluid">
+	<div class="col-md-4">
+		<h4>If you're new to Mesos</h4>
+		<p>See the <a href="/gettingstarted/">getting started</a> page for more information about downloading, building, and deploying Mesos.</p>
+		
+		<h4>If you'd like to get involved or you're looking for support</h4>
+		<p>See our <a href="/community/">community</a> page for more details.</p>
+	</div>
+	<div class="col-md-8">
+		<h1>Reservation</h1>
+
+<p>Mesos provides mechanisms to <strong>reserve</strong> resources in specific slaves.
+The concept was first introduced with <strong>static reservation</strong> in 0.14.0
+which enabled operators to specify the reserved resources on slave startup.
+This was extended with <strong>dynamic reservation</strong> in 0.23.0 which enabled operators
+and authorized <strong>frameworks</strong> to dynamically reserve resources in the cluster.</p>
+
+<p>No breaking changes were introduced with dynamic reservation, which means the
+existing static reservation mechanism continues to be fully supported.</p>
+
+<p>In both types of reservations, resources are reserved for a <strong>role</strong>.</p>
+
+<h2>Static Reservation (since 0.14.0)</h2>
+
+<p>An operator can configure a slave with resources reserved for a role.
+The reserved resources are specified via the <code>--resources</code> flag.
+For example, suppose we have 12 CPUs and 6144 MB of RAM available on a slave and
+that we want to reserve 8 CPUs and 4096 MB of RAM for the <code>ads</code> role.
+We start the slave like so:</p>
+
+<pre><code>    $ mesos-slave \
+      --master=&lt;ip&gt;:&lt;port&gt; \
+      --resources="cpus:4;mem:2048;cpus(ads):8;mem(ads):4096"
+</code></pre>
+
+<p>We now have 8 CPUs and 4096 MB of RAM reserved for <code>ads</code> on this slave.</p>
+
+<p><strong>CAVEAT:</strong> In order to modify a static reservation, the operator must drain and
+            restart the slave with the new configuration specifed in the
+            <code>--resources</code> flag.</p>
+
+<p><strong>NOTE:</strong> This feature is supported for backwards compatibility.
+          The recommended approach is to specify the total resources available
+          on the slave as unreserved via the <code>--resources</code> flag and manage
+          reservations dynamically via the master HTTP endpoints.</p>
+
+<h2>Dynamic Reservation (since 0.23.0)</h2>
+
+<p>As mentioned in <a href="#static-reservation-since-0140">Static Reservation</a>, specifying the
+reserved resources via the <code>--resources</code> flag makes the reservation static.
+This is, statically reserved resources cannot be reserved for another role nor
+be unreserved. Dynamic Reservation enables operators and authorized frameworks
+to reserve and unreserve resources post slave-startup.</p>
+
+<p>We require a <code>principal</code> from the operator or framework in order to
+authenticate/authorize the operations. <a href="/documentation/latest/authorization/">Authorization</a> is
+specified via the existing ACL mechanism. (<em>Coming Soon</em>)</p>
+
+<ul>
+<li><code>Offer::Operation::Reserve</code> and <code>Offer::Operation::Unreserve</code> messages are
+available for <strong>frameworks</strong> to send back via the <code>acceptOffers</code> API as a
+response to a resource offer.</li>
+<li><code>/reserve</code> and <code>/unreserve</code> HTTP endpoints are available for <strong>operators</strong>
+to manage dynamic reservations through the master. (<em>Coming Soon</em>).</li>
+</ul>
+
+
+<p>In the following sections, we will walk through examples of each of the
+interfaces described above.</p>
+
+<h3><code>Offer::Operation::Reserve</code></h3>
+
+<p>A framework is able to reserve resources through the resource offer cycle.
+Suppose we receive a resource offer with 12 CPUs and 6144 MB of RAM unreserved.</p>
+
+<pre><code>    {
+      "id": &lt;offer_id&gt;,
+      "framework_id": &lt;framework_id&gt;,
+      "slave_id": &lt;slave_id&gt;,
+      "hostname": &lt;hostname&gt;,
+      "resources": [
+        {
+          "name": "cpus",
+          "type": "SCALAR",
+          "scalar": { "value": 12 },
+          "role": "*",
+        },
+        {
+          "name": "mem",
+          "type": "SCALAR",
+          "scalar": { "value": 6144 },
+          "role": "*",
+        }
+      ]
+    }
+</code></pre>
+
+<p>We can reserve 8 CPUs and 4096 MB of RAM by sending the following
+<code>Offer::Operation</code> message. <code>Offer::Operation::Reserve</code> has a <code>resources</code> field
+which we specify with the resources to be reserved. We need to expicitly set
+the <code>role</code> and <code>principal</code> fields with the framework&rsquo;s role and principal.</p>
+
+<pre><code>    {
+      "type": Offer::Operation::RESERVE,
+      "reserve": {
+        "resources": [
+          {
+            "name": "cpus",
+            "type": "SCALAR",
+            "scalar": { "value": 8 },
+            "role": &lt;framework_role&gt;,
+            "reservation": {
+              "principal": &lt;framework_principal&gt;
+            }
+          },
+          {
+            "name": "mem",
+            "type": "SCALAR",
+            "scalar": { "value": 4096 },
+            "role": &lt;framework_role&gt;,
+            "reservation": {
+              "principal": &lt;framework_principal&gt;
+            }
+          }
+        ]
+      }
+    }
+</code></pre>
+
+<p>The subsequent resource offer will <strong>contain</strong> the following reserved resources:</p>
+
+<pre><code>    {
+      "id": &lt;offer_id&gt;,
+      "framework_id": &lt;framework_id&gt;,
+      "slave_id": &lt;slave_id&gt;,
+      "hostname": &lt;hostname&gt;,
+      "resources": [
+        {
+          "name": "cpus",
+          "type": "SCALAR",
+          "scalar": { "value": 8 },
+          "role": &lt;framework_role&gt;,
+          "reservation": {
+            "principal": &lt;framework_principal&gt;
+          }
+        },
+        {
+          "name": "mem",
+          "type": "SCALAR",
+          "scalar": { "value": 4096 },
+          "role": &lt;framework_role&gt;,
+          "reservation": {
+            "principal": &lt;framework_principal&gt;
+          }
+        },
+      ]
+    }
+</code></pre>
+
+<h3><code>Offer::Operation::Unreserve</code></h3>
+
+<p>A framework is able to unreserve resources through the resource offer cycle.
+In <a href="#offeroperationreserve">Offer::Operation::Reserve</a>, we reserved 8 CPUs
+and 4096 MB of RAM for our <code>role</code>. The master will continue to offer these
+resources to our <code>role</code>. Suppose we would like to unreserve these resources.
+First, we receive a resource offer (copy/pasted from above):</p>
+
+<pre><code>    {
+      "id": &lt;offer_id&gt;,
+      "framework_id": &lt;framework_id&gt;,
+      "slave_id": &lt;slave_id&gt;,
+      "hostname": &lt;hostname&gt;,
+      "resources": [
+        {
+          "name": "cpus",
+          "type": "SCALAR",
+          "scalar": { "value": 8 },
+          "role": &lt;framework_role&gt;,
+          "reservation": {
+            "principal": &lt;framework_principal&gt;
+          }
+        },
+        {
+          "name": "mem",
+          "type": "SCALAR",
+          "scalar": { "value": 4096 },
+          "role": &lt;framework_role&gt;,
+          "reservation": {
+            "principal": &lt;framework_principal&gt;
+          }
+        },
+      ]
+    }
+</code></pre>
+
+<p>We unreserve the 8 CPUs and 4096 MB of RAM by sending the following
+<code>Offer::Operation</code> message. <code>Offer::Operation::Unreserve</code> has a <code>resources</code> field
+which we specify with the resources to be unreserved.</p>
+
+<pre><code>    {
+      "type": Offer::Operation::UNRESERVE,
+      "unreserve": {
+        "resources": [
+          {
+            "name": "cpus",
+            "type": "SCALAR",
+            "scalar": { "value": 8 },
+            "role": &lt;framework_role&gt;,
+            "reservation": {
+              "principal": &lt;framework_principal&gt;
+            }
+          },
+          {
+            "name": "mem",
+            "type": "SCALAR",
+            "scalar": { "value": 4096 },
+            "role": &lt;framework_role&gt;,
+            "reservation": {
+              "principal": &lt;framework_principal&gt;
+            }
+          }
+        ]
+      }
+    }
+</code></pre>
+
+<p>The unreserved resources may now be offered to other frameworks.</p>
+
+<h3><code>/reserve</code> (<em>Coming Soon</em>)</h3>
+
+<p>Suppose we want to reserve 8 CPUs and 4096 MB of RAM for the <code>ads</code> role on
+a slave with id=<code>&lt;slave_id&gt;</code>. We send an HTTP POST request to the <code>/reserve</code>
+HTTP endpoint like so:</p>
+
+<pre><code>    $ curl -i \
+      -u &lt;operator_principal&gt;:&lt;password&gt; \
+      -d slaveId=&lt;slave_id&gt; \
+      -d resources='[ \
+        { \
+          "name": "cpus", \
+          "type": "SCALAR", \
+          "scalar": { "value": 8 }, \
+          "role": "ads", \
+          "reservation": { \
+            "principal": &lt;operator_principal&gt; \
+          } \
+        }, \
+        { \
+          "name": "mem", \
+          "type": "SCALAR", \
+          "scalar": { "value": 4096 }, \
+          "role": "ads", \
+          "reservation": { \
+            "principal": &lt;operator_principal&gt; \
+          } \
+        } \
+      ]' \
+      -X POST http://&lt;ip&gt;:&lt;port&gt;/master/reserve
+</code></pre>
+
+<p>The user receives one of the following HTTP responses:</p>
+
+<ul>
+<li><code>200 OK</code>: Success</li>
+<li><code>400 BadRequest</code>: Invalid arguments (e.g. missing parameters).</li>
+<li><code>401 Unauthorized</code>: Unauthorized request.</li>
+<li><code>409 Conflict</code>: Insufficient resources to satisfy the reserve operation.</li>
+</ul>
+
+
+<h3><code>/unreserve</code> (<em>Coming Soon</em>)</h3>
+
+<p>Suppose we want to unreserve the resources that we dynamically reserved above.
+We can send an HTTP POST request to the <code>/unreserve</code> HTTP endpoint like so:</p>
+
+<pre><code>    $ curl -i \
+      -u &lt;operator_principal&gt;:&lt;password&gt; \
+      -d slaveId=&lt;slave_id&gt; \
+      -d resources='[ \
+        { \
+          "name": "cpus", \
+          "type": "SCALAR", \
+          "scalar": { "value": 8 }, \
+          "role": "ads", \
+          "reservation": { \
+            "principal": &lt;operator_principal&gt; \
+          } \
+        }, \
+        { \
+          "name": "mem", \
+          "type": "SCALAR", \
+          "scalar": { "value": 4096 }, \
+          "role": "ads", \
+          "reservation": { \
+            "principal": &lt;operator_principal&gt; \
+          } \
+        } \
+      ]' \
+      -X POST http://&lt;ip&gt;:&lt;port&gt;/master/unreserve
+</code></pre>
+
+<p>The user receives one of the following HTTP responses:</p>
+
+<ul>
+<li><code>200 OK</code>: Success</li>
+<li><code>400 BadRequest</code>: Invalid arguments (e.g. missing parameters).</li>
+<li><code>401 Unauthorized</code>: Unauthorized request.</li>
+<li><code>409 Conflict</code>: Insufficient resources to satisfy unreserve operation.</li>
+</ul>
+
+
+	</div>
+</div>
+
+			
+	      <hr>
+
+				<!-- footer -->
+	      <div class="footer">
+	        <p>&copy; 2012-2014 <a href="http://apache.org">The Apache Software Foundation</a>.
+	        Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.<p>
+	      </div><!-- /footer -->
+
+	    </div> <!-- /container -->
+
+	    <!-- JS -->
+	    <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
+			<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
+    </body>
+</html>
\ No newline at end of file

Modified: mesos/site/publish/documentation/upgrades/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/upgrades/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/upgrades/index.html (original)
+++ mesos/site/publish/documentation/upgrades/index.html Wed Jul  1 18:55:31 2015
@@ -89,6 +89,12 @@
 
 <p><strong>NOTE</strong> In order to enable decorator modules to remove metadata (environment variables or labels), we changed the meaning of the return value for decorator hooks in Mesos 0.23.0. Please refer to the modules documentation for more details.</p>
 
+<p><strong>NOTE</strong> Slave ping timeouts are now configurable on the master via <code>--slave_ping_timeout</code> and <code>--max_slave_ping_timeouts</code>. Slaves should be upgraded to 0.23.x before changing these flags.</p>
+
+<p><strong>NOTE</strong> A new scheduler driver API, <code>acceptOffers</code>, has been introduced. This is a more general version of the <code>launchTasks</code> API, which allows the scheduler to accept an offer and specify a list of operations (Offer.Operation) to perform using the resources in the offer. Currently, the supported operations include LAUNCH (launching tasks), RESERVE (making dynamic reservations), UNRESERVE (releasing dynamic reservations), CREATE (creating persistent volumes) and DESTROY (releasing persistent volumes). Similar to the <code>launchTasks</code> API, any unused resources will be considered declined, and the specified filters will be applied on all unused resources.</p>
+
+<p><strong>NOTE</strong> The Resource protobuf has been extended to include more metadata for supporting persistence (DiskInfo), dynamic reservations (ReservationInfo) and oversubscription (RevocableInfo). You must not combine two Resource objects if they have different metadata.</p>
+
 <h2>Upgrading from 0.21.x to 0.22.x</h2>
 
 <p><strong>NOTE</strong> Slave checkpoint flag has been removed as it will be enabled for all
@@ -175,13 +181,13 @@ Please refer to the metrics/snapshot end
 
 <p>To ensure a smooth upgrade, we recommend to upgrade your python framework and executor first. You will be able to either import using the new configuration or the old. Replace the existing imports with something like the following:</p>
 
-<pre><code>    try:
-        from mesos.native import MesosExecutorDriver, MesosSchedulerDriver
-        from mesos.interface import Executor, Scheduler
-        from mesos.interface import mesos_pb2
-    except ImportError:
-        from mesos import Executor, MesosExecutorDriver, MesosSchedulerDriver, Scheduler
-        import mesos_pb2
+<pre><code>try:
+    from mesos.native import MesosExecutorDriver, MesosSchedulerDriver
+    from mesos.interface import Executor, Scheduler
+    from mesos.interface import mesos_pb2
+except ImportError:
+    from mesos import Executor, MesosExecutorDriver, MesosSchedulerDriver, Scheduler
+    import mesos_pb2
 </code></pre>
 
 <p><strong>NOTE</strong>: If you&rsquo;re using a pure language binding, please ensure that it sends status update acknowledgements through the master before upgrading.</p>

Modified: mesos/site/publish/gettingstarted/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/gettingstarted/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/gettingstarted/index.html (original)
+++ mesos/site/publish/gettingstarted/index.html Wed Jul  1 18:55:31 2015
@@ -180,34 +180,31 @@
 
 <h3>CentOS 7.1</h3>
 
-<ul>
-<li><p>Following are the instructions for stock CentOS 7.1. If you are using a different OS, please install the packages accordingly.</p>
+<p>Following are the instructions for stock CentOS 7.1. If you are using a different OS, please install the packages accordingly.</p>
 
-<pre><code>  # Install a few utility tools
-  $ sudo yum install -y tar wget
+<pre><code>    # Install a few utility tools
+    $ sudo yum install -y tar wget
 
-  # Fetch the Apache Maven repo file.
-  $ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
+    # Fetch the Apache Maven repo file.
+    $ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
 
-  # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
-  # not available in the default repositories.
-  # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' with content:
-
-    [WANdiscoSVN]
-    name=WANdisco SVN Repo 1.9
-    enabled=1
-    baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
-    gpgcheck=1
-    gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
-
-  # Install essential development tools.
-  $ sudo yum groupinstall -y "Development Tools"
-
-  # Install other Mesos dependencies.
-  $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
-</code></pre></li>
-</ul>
+    # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
+    # not available in the default repositories.
+    # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' with content:
+
+      [WANdiscoSVN]
+      name=WANdisco SVN Repo 1.9
+      enabled=1
+      baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
+      gpgcheck=1
+      gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
 
+    # Install essential development tools.
+    $ sudo yum groupinstall -y "Development Tools"
+
+    # Install other Mesos dependencies.
+    $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
+</code></pre>
 
 <h2>Building Mesos</h2>
 
@@ -224,7 +221,7 @@
     $ make
 </code></pre>
 
-<p>In order to speed up the build and reduce verbosity of the logs, you can append <code>-j=&lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
+<p>In order to speed up the build and reduce verbosity of the logs, you can append <code>-j &lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
 
 <pre><code>    # Run test suite.
     $ make check