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 [2/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...

Modified: mesos/site/publish/documentation/latest/mesos-doxygen-style-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-doxygen-style-guide/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-doxygen-style-guide/index.html (original)
+++ mesos/site/publish/documentation/latest/mesos-doxygen-style-guide/index.html Wed Jul  1 18:55:31 2015
@@ -89,57 +89,7 @@ using <a href="http://www.doxygen.org">D
 There is an ongoing, incremental effort with the goal to document all public Mesos, libprocess, and stout APIs this way.
 For now, existing code may not follow these guidelines, but new code should.</p>
 
-<h2>Preliminaries</h2>
-
-<p>We follow the <a href="https://www.ietf.org/rfc/rfc2119.txt">IETF RFC2119</a>
-on how to use words such as &ldquo;must&rdquo;, &ldquo;should&rdquo;, &ldquo;can&rdquo;,
-and other requirement-related notions.</p>
-
-<h2>Building Doxygen Documentation</h2>
-
-<p>As of right now, the Doxygen documentation should be built from the <em>build</em> subdirectory using <em>doxygen ../Doxyfile</em> . The documentation will then be generated into the <em>./doxygen</em> subdirectory.
-Todo: We should create a regular make target.</p>
-
-<h2>Doxygen Tags</h2>
-
-<p><em>When following these links be aware that the doxygen documentation is using another syntax in that @param is explained as \param.</em></p>
-
-<ul>
-<li><a href="http://doxygen.org/manual/commands.html#cmdparam">@param</a> Describes function parameters.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdreturn">@return</a> Describes return values.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdsa">@see</a> Describes a cross-reference to classes, functions, methods, variables, files or URL.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdfile">@file</a> Describes a refence to a file. It is required when documenting global functions, variables, typedefs, or enums in separate files.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdlink">@link</a> and <a href="http://doxygen.org/manual/commands.html#cmdendlink">@endlink</a> Describes a link to a file, class, or member.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdexample">@example</a> Describes source code examples.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdtodo">@todo</a> Describes a TODO item.</li>
-<li><a href="http://doxygen.org/manual/commands.html#cmdimage">@image</a> Describes an image.</li>
-</ul>
-
-
-<h2>Wrapping</h2>
-
-<p>We wrap long descriptions using 4 spaces on the next line.
-~~~
-@param uncompressed The input string that requires
-    a very long description and an even longer
-    description on this line as well.
-~~~</p>
-
-<h2>Outside Source Code</h2>
-
-<h3>Library and Component Overview Pages and User Guides</h3>
-
-<p>Substantial libraries, components, and subcomponents of the Mesos system such as
-stout, libprocess, master, slave, containerizer, allocator, and others
-should have an overview page in markdown format that explains their
-purpose, overall structure, and general use. This can even be a complete user guide.</p>
-
-<p>This page must be located in the top directory of the library/component and named &ldquo;REAMDE.md&rdquo;.</p>
-
-<p>The first line in such a document must be a section heading bearing the title which will appear in the generated Doxygen index.
-Example: &ldquo;# Libprocess User Guide&rdquo;</p>
-
-<h2>In Source Code</h2>
+<h2>Source Code Documentation Syntax</h2>
 
 <p>Doxygen documentation needs only to be applied to source code parts that
 constitute an interface for which we want to generate Mesos API documentation
@@ -149,6 +99,12 @@ enhanced by source code comments as appr
 <p>We follow the <a href="http://en.wikipedia.org/wiki/Javadoc">Javadoc syntax</a> to mark comment blocks.
 These have the general form:</p>
 
+<!-- NOTE: In order to show the comments as part of the code blocks in
+this we must use indentation instead of fenced code blocks (i.e.,
+~~~{.cpp}) because doxygen will remove all of the comments and just
+render the code. -->
+
+
 <pre><code>/**
  * Brief summary.
  *
@@ -173,21 +129,144 @@ These have the general form:</p>
  std::string compress(const std::string&amp; uncompressed);
 </code></pre>
 
-<h3>Constants and Variables</h3>
+<h3>Doxygen Tags</h3>
+
+<p>This is the allowed set of doxygen tags that can be used.</p>
+
+<ul>
+<li><a href="http://doxygen.org/manual/commands.html#cmdparam">\@param</a> Describes function parameters.</li>
+<li><a href="http://doxygen.org/manual/commands.html#cmdreturn">\@return</a> Describes return values.</li>
+<li><a href="http://doxygen.org/manual/commands.html#cmdsa">\@see</a> Describes a cross-reference to classes, functions, methods, variables, files or URL.</li>
+<li><a href="http://doxygen.org/manual/commands.html#cmdfile">\@file</a> Describes a refence to a file. It is required when documenting global functions, variables, typedefs, or enums in separate files.</li>
+<li><a href="http://doxygen.org/manual/commands.html#cmdlink">\@link</a> and <a href="http://doxygen.org/manual/commands.html#cmdendlink">\@endlink</a> Describes a link to a file, class, or member.</li>
+<li><a href="http://doxygen.org/manual/commands.html#cmdexample">\@example</a> Describes source code examples.</li>
+<li><a href="http://doxygen.org/manual/commands.html#cmdtodo">\@todo</a> Describes a TODO item.</li>
+<li><p><a href="http://doxygen.org/manual/commands.html#cmdimage">\@image</a> Describes an image.</p></li>
+<li><p>When following these links be aware that the doxygen documentation is using another syntax in that \@param is explained as \param.</p></li>
+</ul>
+
+
+<h3>Wrapping</h3>
+
+<p>We wrap long descriptions using four spaces on the next line.</p>
+
+<pre><code>@param uncompressed The input string that requires
+    a very long description and an even longer
+    description on this line as well.
+</code></pre>
 
-<h3>Functions</h3>
+<h3>Constants and Variables</h3>
 
-<h3>Classes</h3>
+<p>Example:</p>
 
-<h4>Methods</h4>
+<pre><code>/**
+ * Prefix used to name Docker containers in order to distinguish
+ * those created by Mesos from those created manually.
+ */
+extern const std::string DOCKER_NAME_PREFIX;
+</code></pre>
 
 <h4>Fields</h4>
 
-<h3>Templates</h3>
+<p>Example:</p>
+
+<pre><code>/**
+ * The parent side of the pipe for stdin.
+ * If the mode is not PIPE, None will be stored.
+ * @note: stdin is a macro on some systems, hence this name instead.
+ */
+Option&lt;int&gt; in;
+</code></pre>
+
+<h3>Functions and Methods</h3>
+
+<p>Example:</p>
 
-<h3>Macros</h3>
+<pre><code>/**
+ * Forks a subprocess and execs the specified 'path' with the
+ * specified 'argv', redirecting stdin, stdout, and stderr as
+ * specified by 'in', 'out', and 'err' respectively.
+ *
+ * If 'setup' is not None, runs the specified function after forking
+ * but before exec'ing. If the return value of 'setup' is non-zero
+ * then that gets returned in 'status()' and we will not exec.
+ *
+ * @param path Relative or absolute path in the filesytem to the
+ *     executable.
+ * @param argv Argument vector to pass to exec.
+ * @param in Redirection specification for stdin.
+ * @param out Redirection specification for stdout.
+ * @param err Redirection specification for stderr.
+ * @param flags Flags to be stringified and appended to 'argv'.
+ * @param environment Environment variables to use for the new
+ *     subprocess or if None (the default) then the new subprocess
+ *     will inherit the environment of the current process.
+ * @param setup Function to be invoked after forking but before
+ *     exec'ing. NOTE: Take extra care not to invoke any
+ *     async unsafe code in the body of this function.
+ * @param clone Function to be invoked in order to fork/clone the
+ *     subprocess.
+ * @return The subprocess or an error if one occurred.
+ */
+Try&lt;Subprocess&gt; subprocess(
+    const std::string&amp; path,
+    std::vector&lt;std::string&gt; argv,
+    const Subprocess::IO&amp; in = Subprocess::FD(STDIN_FILENO),
+    const Subprocess::IO&amp; out = Subprocess::FD(STDOUT_FILENO),
+    const Subprocess::IO&amp; err = Subprocess::FD(STDERR_FILENO),
+    const Option&lt;flags::FlagsBase&gt;&amp; flags = None(),
+    const Option&lt;std::map&lt;std::string, std::string&gt;&gt;&amp; environment = None(),
+    const Option&lt;lambda::function&lt;int()&gt;&gt;&amp; setup = None(),
+    const Option&lt;lambda::function&lt;
+        pid_t(const lambda::function&lt;int()&gt;&amp;)&gt;&gt;&amp; clone = None());
+</code></pre>
+
+<h3>Classes and Structs</h3>
+
+<p>Example:</p>
+
+<pre><code>/**
+ * Represents a fork() exec()ed subprocess. Access is provided to the
+ * input / output of the process, as well as the exit status. The
+ * input / output file descriptors are only closed after:
+ *   1. The subprocess has terminated.
+ *   2. There are no longer any references to the associated
+ *      Subprocess object.
+ */
+class Subprocess
+{
+public:
+</code></pre>
+
+<h2>Library and Component Overview Pages and Developer Guides</h2>
+
+<p>Substantial libraries, components, and subcomponents of the Mesos system such as
+stout, libprocess, master, slave, containerizer, allocator, and others
+should have an overview page in markdown format that explains their
+purpose, overall structure, and general use. This can even be a complete developer guide.</p>
+
+<p>This page must be located in the top directory of the library/component and named &ldquo;REAMDE.md&rdquo;.</p>
+
+<p>The first line in such a document must be a section heading bearing the title which will appear in the generated Doxygen index.
+Example: &ldquo;# Libprocess Developer Guide&rdquo;</p>
+
+<h3>Example Code</h3>
+
+<p>C++ code examples should be enclosed by &lsquo;~~~{.cpp}&rsquo;.</p>
+
+<p>Example:</p>
+
+<pre><code class="{.cpp}">int main(int argc, char** argv)
+{
+  ...
+}
+</code></pre>
+
+<p><strong>NOTE</strong>: Because of shortcomings of Doxygen&rsquo;s markdown parser we currently use indentation for wrapping all non C++ code blocks.</p>
+
+<h2>Building Doxygen Documentation</h2>
 
-<h3>Global declarations outside classes</h3>
+<p>As of right now, the Doxygen documentation should be built from the <em>build</em> subdirectory using <em>doxygen ../Doxyfile</em> . The documentation will then be generated into the <em>./doxygen</em> subdirectory.</p>
 
 	</div>
 </div>

Added: mesos/site/publish/documentation/latest/mesos-markdown-style-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-markdown-style-guide/index.html?rev=1688707&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-markdown-style-guide/index.html (added)
+++ mesos/site/publish/documentation/latest/mesos-markdown-style-guide/index.html Wed Jul  1 18:55:31 2015
@@ -0,0 +1,213 @@
+<!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 Markdown Style Guide</h1>
+
+<p>This guide introduces a consistent documentation style to be used across the entire non-code documentation.
+User guides and non-code technical documentation are stored in markdown files in the <code>docs/</code> folder. These files get rendered for the <a href="http://mesos.apache.org/documentation/latest/">online documentation</a>.</p>
+
+<p><strong>NOTE:</strong> As of right now this is work in progress and the existing documentation might not yet comply to this style.</p>
+
+<h2>What to document?</h2>
+
+<p>Any new substantial feature should be documented in its own markdown file.
+If the link between source code and documentation is not obvious, consider inserting a short code comment stating that there is non-code documentation that needs to be kept in sync and indicating where it is located.</p>
+
+<h2>Keep documentation and style-guides in sync with code.</h2>
+
+<p>When changing code consider whether you need to update the documentation.
+This is especially relevant when introducing new or updating existing command line flags.
+These should be reflected in <code>configuration.md</code>!</p>
+
+<h2>Code Examples</h2>
+
+<p>Code examples should be specified as follows:</p>
+
+<pre><code>~~~{.cpp}
+int main(int argc, char** argv)
+{
+  ....
+}
+~~~
+</code></pre>
+
+<p><strong>NOTE:</strong> Because of shortcomings of Doxygen&rsquo;s markdown parser we currently use indentation for wrapping all non C++ code blocks.</p>
+
+<h2>Notes/Emphasis</h2>
+
+<p>Notes are used to highlight important parts of the text and should be specified as follows.</p>
+
+<pre><code class="{.txt}">**NOTE:**  Short note.
+Continued longer note.
+</code></pre>
+
+<p>We use single backticks to highlight individual words in a sentence such as certain identifiers:</p>
+
+<pre><code class="{.txt}">Use the default `HierarchicalDRF` allocator....
+</code></pre>
+
+<h2>Commands</h2>
+
+<p>We use single backticks to highlight sample commands as follows:</p>
+
+<pre><code class="{.txt}">`mesos-master --help`
+</code></pre>
+
+<h2>Files/Path</h2>
+
+<p>Files and path references should be specified as follows:</p>
+
+<pre><code class="{.text}">Remember you can also use the `file:///path/to/file` or `/path/to/file`
+</code></pre>
+
+<h2>Tables</h2>
+
+<p>In order to avoid problems with markdown formatting we should specify tables in html directly:</p>
+
+<p>~~~{.html}</p>
+
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Flag
+      </th>
+      <th>
+        Explanation
+      </th>
+  </thead>
+  <tr>
+    <td>
+      --ip=VALUE
+    </td>
+    <td>
+      IP address to listen on
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --[no-]help
+    </td>
+    <td>
+      Prints this help message (default: false)
+
+    </td>
+  </tr>
+</table>
+
+
+<pre><code>
+
+## Indendation and Whitespace
+
+We use no extra indentation in markdown files.
+We have one new line after section headings and two blank lines
+in between sections.
+</code></pre>
+
+<p>&hellip; end of previous section.</p>
+
+<h2>New Section</h2>
+
+<p>Beginning of new section &hellip;.
+~~~</p>
+
+	</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

Added: mesos/site/publish/documentation/latest/mesos-ssl/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-ssl/index.html?rev=1688707&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-ssl/index.html (added)
+++ mesos/site/publish/documentation/latest/mesos-ssl/index.html Wed Jul  1 18:55:31 2015
@@ -0,0 +1,210 @@
+<!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>Configuration</h1>
+
+<p>There is currently only one implementation of the <a href="https://github.com/apache/mesos/blob/master/3rdparty/libprocess/include/process/socket.hpp">libprocess socket interface</a> that supports SSL. This implementation uses <a href="https://github.com/libevent/libevent">libevent</a>. Specifically it relies on the <code>libevent-openssl</code> library that wraps <code>openssl</code>.</p>
+
+<p>After building <code>Mesos 0.23.0</code> from source, assuming you have installed the required <a href="#Dependencies">Dependencies</a>, you can modify your configure line to enable SSL as follows:</p>
+
+<pre><code>../configure --enable-libevent --enable-ssl
+</code></pre>
+
+<h1>Running</h1>
+
+<p>Once you have successfully built and installed your new binaries, here are the environment variables that are applicable to the <code>Master</code>, <code>Slave</code>, <code>Framework Scheduler/Executor</code>, or any <code>libprocess process</code>:</p>
+
+<h5>SSL_ENABLED=(false|0,true|1) [default=false|0]</h5>
+
+<p>Turn on or off SSL. When it is turned off it is the equivalent of default mesos with libevent as the backing for events. All sockets default to the non-SSL implementation. When it is turned on, the default configuration for sockets is SSL. This means outgoing connections will use SSL, and incoming connections will be expected to speak SSL as well. None of the below flags are relevant if SSL is not enabled.</p>
+
+<h5>SSL_SUPPORT_DOWNGRADE=(false|0,true|1) [default=false|0]</h5>
+
+<p>Control whether or not non-SSL connections can be established. If this is enabled <strong>on the accepting side</strong>, then the accepting side will downgrade to a non-SSL socket if the connecting side is attempting to communicate via non-SSL. (e.g. http). See <a href="#Upgrading">Upgrading Your Cluster</a> for more details.</p>
+
+<h5>SSL_CERT_FILE=(path to certificate)</h5>
+
+<p>The location of the certificate this binary will present.</p>
+
+<h5>SSL_KEY_FILE=(path to key)</h5>
+
+<p>The location of the private key used by OpenSSL.</p>
+
+<h5>SSL_VERIFY_CERT=(false|0,true|1) [default=false|0]</h5>
+
+<p>Control whether certificates are verified when presented. If this is false, even when a certificate is presented, it will not be verified. When <code>SSL_REQUIRE_CERT</code> is true, <code>SSL_VERIFY_CERT</code> is overridden and all certificates will be verified <em>and</em> required.</p>
+
+<h5>SSL_REQUIRE_CERT=(false|0,true|1) [default=false|0]</h5>
+
+<p>Enforce that certificates must be presented by connecting clients. This means all connections (including tools hitting endpoints) must present valid certificates in order to establish a connection.</p>
+
+<h5>SSL_VERIFY_DEPTH=(4) [default=4]</h5>
+
+<p>The maximum depth used to verify certificates. The default is 4. See the OpenSSL documentation or contact your system administrator to learn why you may want to change this.</p>
+
+<h5>SSL_CA_DIR=(path to CA directory)</h5>
+
+<p>The directory used to find the certificate authority / authorities. You can specify <code>SSL_CA_DIR</code> or <code>SSL_CA_FILE</code> depending on how you want to restrict your certificate authorization.</p>
+
+<h5>SSL_CA_FILE=(path to CA file)</h5>
+
+<p>The file used to find the certificate authority. You can specify <code>SSL_CA_DIR</code> or <code>SSL_CA_FILE</code> depending on how you want to restrict your certificate authorization.</p>
+
+<h5>SSL_CIPHERS=(accepted ciphers separated by &lsquo;:&rsquo;) [default=AES128-SHA:AES256-SHA:RC4-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA]</h5>
+
+<p>A list of <code>:</code>-separated ciphers. Use these if you want to restrict or open up the accepted ciphers for OpenSSL. Read the OpenSSL documentation or contact your system administrators to see whether you want to override the default values.</p>
+
+<h5>SSL_ENABLE_SSL_V2=(false|0,true|1) [default=false|0]</h5>
+
+<h5>SSL_ENABLE_SSL_V3=(false|0,true|1) [default=false|0]</h5>
+
+<h5>SSL_ENABLE_TLS_V1_0=(false|0,true|1) [default=false|0]</h5>
+
+<h5>SSL_ENABLE_TLS_V1_1=(false|0,true|1) [default=false|0]</h5>
+
+<h5>SSL_ENABLE_TLS_V1_2=(false|0,true|1) [default=true|1]</h5>
+
+<p>The above switches enable / disable the specified protocols. By default only TLS V1.2 is enabled. The mentality here is to restrict security by default, and force users to open it up explicitly. Many older version of the protocols have known vulnerabilities, so only enable these if you understand the risks fully.</p>
+
+<h1><a name="Dependencies"></a>Dependencies</h1>
+
+<h3>libevent</h3>
+
+<p>We require the OpenSSL support from libevent. The suggested version of libevent is <a href="https://github.com/libevent/libevent/releases/tag/release-2.0.22-stable"><code>2.0.22-stable</code></a>. As new releases come out we will try to maintain compatibility.
+~~~
+// For example, on OSX:
+brew install libevent
+~~~</p>
+
+<h3>OpenSSL</h3>
+
+<p>We require <a href="https://github.com/openssl/openssl">OpenSSL</a>. There are multiple branches of OpenSSL that are being maintained by the community. Since security requires being vigilant, we recommend reading the release notes for the current releases of OpenSSL and deciding on a version within your organization based on your security needs. Mesos is not too deeply dependent on specific OpenSSL versions, so there is room for you to make security decisions as an organization.
+Please ensure the <code>event2</code> and <code>openssl</code> headers are available for building mesos.
+~~~
+// For example, on OSX:
+brew install openssl
+~~~</p>
+
+<h1><a name="Upgrading"></a>Upgrading Your Cluster</h1>
+
+<p><em>There is no SSL specific requirement for upgrading different components in a specific order.</em></p>
+
+<p>The recommended strategy is to restart all your components to enable SSL with downgrades support enabled. Once all components have SSL enabled, then do a second restart of all your components to disable downgrades. This strategy will allow each component to be restarted independently at your own convenience with no time restrictions. It will also allow you to try SSL in a subset of your cluster. <em>Please note:</em> While different components in your cluster are serving SSL vs non-SSL traffic, any relative links in the WebUI may be broken. Please see the <a href="#WebUI">WebUI</a> section for details. Here are sample commands for upgrading your cluster:
+~~~
+// Restart each component with downgrade support (master, slave, framework):
+SSL_ENABLED=true SSL_SUPPORT_DOWNGRADE=true SSL_KEY_FILE=<path-to-your-private-key> SSL_CERT_FILE=<path-to-your-certificate> <Any other SSL_* environment variables you may choose> <your-component (e.g. bin/master.sh)> <your-flags></p>
+
+<p>// Restart each component WITHOUT downgrade support (master, slave, framework):
+SSL_ENABLED=true SSL_SUPPORT_DOWNGRADE=false SSL_KEY_FILE=<path-to-your-private-key> SSL_CERT_FILE=<path-to-your-certificate> <Any other SSL_* environment variables you may choose> <your-component (e.g. bin/master.sh)> <your-flags>
+~~~
+The end state is a cluster that is only communicating with SSL.</p>
+
+<p><em>Please note:</em> Any tools you may use that communicate with your components must be able to talk SSL, or they will be denied. You may choose to maintain <code>SSL_SUPPORT_DOWNGRADE=true</code> for some time as you upgrade your internal tooling. The advantage of <code>SSL_SUPPORT_DOWNGRADE=true</code> is that all components that speak SSL will do so, while other components may still communicate over insecure channels.</p>
+
+<h1><a name="WebUI"></a>WebUI</h1>
+
+<p>The default Mesos WebUI uses relative links. Some of these links transition between endpoints served by the master and slaves. The WebUI currently does not have enough information to change the &lsquo;http&rsquo; vs &lsquo;https&rsquo; links based on whether the target endpoint is currently being served by an SSL-enabled binary. This may cause certain links in the WebUI to be broken when a cluster is in a transition state between SSL and non-SSL. Any tools that hit these endpoints will still be able to access them as long as they hit the endpoint using the right protocol, or the SSL_SUPPORT_DOWNGRADE option is set to true.</p>
+
+<h3>Certificates</h3>
+
+<p>Most browsers have built in protection that guard transitions between pages served using different certificates. For this reason you may choose to serve both the master and slave endpoints using a common certificate that covers multiple hostnames. If you do not do this, certain links, such as those to slave sandboxes, may seem broken as the browser treats the transition between differing certificates transition as unsafe.</p>
+
+	</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/latest/mesos-testing-patterns/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-testing-patterns/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-testing-patterns/index.html (original)
+++ mesos/site/publish/documentation/latest/mesos-testing-patterns/index.html Wed Jul  1 18:55:31 2015
@@ -91,50 +91,50 @@
 
 <p>Every message enqueued in a libprocess process' (or actor&rsquo;s, to avoid ambiguity with OS processes) mailbox is processed by <code>ProcessManager</code> (right now there is a single instance of <code>ProcessManager</code> per OS process, but this may change in the future). <code>ProcessManager</code> fetches actors from the runnable actors list and services all events from the actor&rsquo;s mailbox. Using <code>Clock::settle()</code> call we can block the calling thread until <code>ProcessManager</code> empties mailboxes of all actors. Here is the example of this pattern:</p>
 
-<pre><code class="{.cpp}">  // As Master::killTask isn't doing anything, we shouldn't get a status update.
-  EXPECT_CALL(sched, statusUpdate(&amp;driver, _))
-    .Times(0);
+<pre><code class="{.cpp}">// As Master::killTask isn't doing anything, we shouldn't get a status update.
+EXPECT_CALL(sched, statusUpdate(&amp;driver, _))
+  .Times(0);
 
-  // Set expectation that Master receives killTask message.
-  Future&lt;KillTaskMessage&gt; killTaskMessage =
-    FUTURE_PROTOBUF(KillTaskMessage(), _, master.get());
+// Set expectation that Master receives killTask message.
+Future&lt;KillTaskMessage&gt; killTaskMessage =
+  FUTURE_PROTOBUF(KillTaskMessage(), _, master.get());
 
-  // Attempt to kill unknown task while slave is transitioning.
-  TaskID unknownTaskId;
-  unknownTaskId.set_value("2");
+// Attempt to kill unknown task while slave is transitioning.
+TaskID unknownTaskId;
+unknownTaskId.set_value("2");
 
-  // Stop the clock.
-  Clock::pause();
+// Stop the clock.
+Clock::pause();
 
-  // Initiate an action.
-  driver.killTask(unknownTaskId);
+// Initiate an action.
+driver.killTask(unknownTaskId);
 
-  // Make sure the event associated with the action has been queued.
-  AWAIT_READY(killTaskMessage);
+// Make sure the event associated with the action has been queued.
+AWAIT_READY(killTaskMessage);
 
-  // Wait for all messages to be dispatched and processed completely to satisfy
-  // the expectation that we didn't receive a status update.
-  Clock::settle();
+// Wait for all messages to be dispatched and processed completely to satisfy
+// the expectation that we didn't receive a status update.
+Clock::settle();
 
-  Clock::resume();
+Clock::resume();
 </code></pre>
 
 <h2>Intercepting a message sent to a different OS process</h2>
 
 <p>Intercepting messages sent between libprocess processes (let&rsquo;s call them actors to avoid ambiguity with OS processes) that live in the same OS process is easy, e.g.:</p>
 
-<pre><code class="{.cpp}">  Future&lt;SlaveReregisteredMessage&gt; slaveReregisteredMessage =
-    FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _);
-  ...
-  AWAIT_READY(slaveReregisteredMessage);
+<pre><code class="{.cpp}">Future&lt;SlaveReregisteredMessage&gt; slaveReregisteredMessage =
+  FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _);
+...
+AWAIT_READY(slaveReregisteredMessage);
 </code></pre>
 
 <p>However, this won&rsquo;t work if we want to intercept a message sent to an actor (technically a <code>UPID</code>) that lives in another OS process. For example, <code>CommandExecutor</code> spawned by a slave will live in a separate OS process, though master and slave instances live in the same OS process together with our test (see <code>mesos/src/tests/cluster.hpp</code>). The wait in this code will fail:</p>
 
-<pre><code class="{.cpp}">  Future&lt;ExecutorRegisteredMessage&gt; executorRegisteredMessage =
-    FUTURE_PROTOBUF(ExecutorRegisteredMessage(), _, _);
-  ...
-  AWAIT_READY(executorRegisteredMessage);
+<pre><code class="{.cpp}">Future&lt;ExecutorRegisteredMessage&gt; executorRegisteredMessage =
+  FUTURE_PROTOBUF(ExecutorRegisteredMessage(), _, _);
+...
+AWAIT_READY(executorRegisteredMessage);
 </code></pre>
 
 <h3>Why messages sent outside the OS process are not intercepted?</h3>
@@ -149,13 +149,13 @@
 
 <p>For the aforementioned example, instead of intercepting <code>ExecutorRegisteredMessage</code>, we can intercept <code>RegisterExecutorMessage</code> and wait until its processed, which includes sending <code>ExecutorRegisteredMessage</code> (see <code>Slave::registerExecutor()</code>):</p>
 
-<pre><code class="{.cpp}">  Future&lt;RegisterExecutorMessage&gt; registerExecutorMessage =
-    FUTURE_PROTOBUF(RegisterExecutorMessage(), _, _);
-  ...
-  AWAIT_READY(registerExecutorMessage);
-  Clock::pause();
-  Clock::settle();
-  Clock::resume();
+<pre><code class="{.cpp}">Future&lt;RegisterExecutorMessage&gt; registerExecutorMessage =
+  FUTURE_PROTOBUF(RegisterExecutorMessage(), _, _);
+...
+AWAIT_READY(registerExecutorMessage);
+Clock::pause();
+Clock::settle();
+Clock::resume();
 </code></pre>
 
 	</div>

Modified: mesos/site/publish/documentation/latest/modules/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/modules/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/modules/index.html (original)
+++ mesos/site/publish/documentation/latest/modules/index.html Wed Jul  1 18:55:31 2015
@@ -127,51 +127,51 @@ of the form &lsquo;file:///path/to/file&
 <li><p>Load a library <code>libfoo.so</code> with two modules <code>org_apache_mesos_bar</code> and
 <code>org_apache_mesos_baz</code>.</p>
 
-<pre><code>{
-  "libraries": [
-    {
-      "file": "/path/to/libfoo.so",
-      "modules": [
-        {
-          "name": "org_apache_mesos_bar",
-        },
-        {
-          "name": "org_apache_mesos_baz"
-        }
-      ]
-    }
-  ]
-}
+<pre><code> {
+   "libraries": [
+     {
+       "file": "/path/to/libfoo.so",
+       "modules": [
+         {
+           "name": "org_apache_mesos_bar",
+         },
+         {
+           "name": "org_apache_mesos_baz"
+         }
+       ]
+     }
+   ]
+ }
 </code></pre></li>
 <li><p>Load the module <code>org_apache_mesos_bar</code> from the library <code>foo</code> and pass
 the command-line argument <code>X</code> with value <code>Y</code> (module <code>org_apache_mesos_baz</code>
 is loaded without any command-line parameters):</p>
 
-<pre><code>{
-  "libraries": [
-    {
-      "name": "foo",
-      "modules": [
-        {
-          "name": "org_apache_mesos_bar"
-          "parameters": [
-            {
-              "key": "X",
-              "value": "Y",
-            }
-          ]
-        },
-        {
-          "name": "org_apache_mesos_bar"
-        }
-      ]
-    }
-  ]
-}
+<pre><code> {
+   "libraries": [
+     {
+       "name": "foo",
+       "modules": [
+         {
+           "name": "org_apache_mesos_bar"
+           "parameters": [
+             {
+               "key": "X",
+               "value": "Y",
+             }
+           ]
+         },
+         {
+           "name": "org_apache_mesos_bar"
+         }
+       ]
+     }
+   ]
+ }
 </code></pre></li>
 <li><p>Specifying modules inline:</p>
 
-<pre><code>--modules='{"libraries":[{"file":"/path/to/libfoo.so", "modules":[{"name":"org_apache_mesos_bar"}]}]}'
+<pre><code> --modules='{"libraries":[{"file":"/path/to/libfoo.so", "modules":[{"name":"org_apache_mesos_bar"}]}]}'
 </code></pre></li>
 </ol>
 
@@ -305,71 +305,71 @@ for GPGPU hardware, networking, etc.</p>
 <p>The following snippet describes the implementation of a module named
 &ldquo;org_apache_mesos_bar&rdquo; of &ldquo;TestModule&rdquo; kind:</p>
 
-<pre><code>  #include &lt;iostream&gt;
-  #include "test_module.hpp"
+<pre><code class="{.cpp}">#include &lt;iostream&gt;
+#include "test_module.hpp"
 
-  class TestModuleImpl : public TestModule
+class TestModuleImpl : public TestModule
+{
+public:
+  TestModuleImpl()
   {
-  public:
-    TestModuleImpl()
-    {
-      std::cout &lt;&lt; "HelloWorld!" &lt;&lt; std::endl;
-    }
-
-    virtual int foo(char a, long b)
-    {
-      return a + b;
-    }
-
-    virtual int bar(float a, double b)
-    {
-      return a * b;
-    }
-  };
+    std::cout &lt;&lt; "HelloWorld!" &lt;&lt; std::endl;
+  }
 
-  static TestModule* create()
+  virtual int foo(char a, long b)
   {
-      return new TestModule();
+    return a + b;
   }
 
-  static bool compatible()
+  virtual int bar(float a, double b)
   {
-    return true;
+    return a * b;
   }
+};
+
+static TestModule* create()
+{
+    return new TestModule();
+}
 
-  // Declares a module named 'org_apache_mesos_TestModule' of
-  // 'TestModule' kind.
-  // Mesos core binds the module instance pointer as needed.
-  // The compatible() hook is provided by the module for compatibility checks.
-  // The create() hook returns an object of type 'TestModule'.
-  mesos::modules::Module&lt;TestModule&gt; org_apache_mesos_TestModule(
-      MESOS_MODULE_API_VERSION,
-      MESOS_VERSION,
-      "Apache Mesos",
-      "modules@mesos.apache.org",
-      "This is a test module.",
-      compatible,
-      create);
+static bool compatible()
+{
+  return true;
+}
+
+// Declares a module named 'org_apache_mesos_TestModule' of
+// 'TestModule' kind.
+// Mesos core binds the module instance pointer as needed.
+// The compatible() hook is provided by the module for compatibility checks.
+// The create() hook returns an object of type 'TestModule'.
+mesos::modules::Module&lt;TestModule&gt; org_apache_mesos_TestModule(
+    MESOS_MODULE_API_VERSION,
+    MESOS_VERSION,
+    "Apache Mesos",
+    "modules@mesos.apache.org",
+    "This is a test module.",
+    compatible,
+    create);
 </code></pre>
 
 <h3>Building a module</h3>
 
 <p>  The following assumes that Mesos is installed in the standard location, i.e.
-  the Mesos dynamic library and header files are available.
-<code>
-  g++ -lmesos -fpic -o test_module.o test_module.cpp
-  $ gcc -shared -o libtest_module.so test_module.o
-</code></p>
+  the Mesos dynamic library and header files are available.</p>
+
+<pre><code>g++ -lmesos -fpic -o test_module.o test_module.cpp
+$ gcc -shared -o libtest_module.so test_module.o
+</code></pre>
 
 <h3>Testing a modules</h3>
 
 <p>Apart from testing the module by hand with explicit use of &ndash;modules flag, one
 can run the entire mesos test suite with the given module. For example, the
 following command will run the mesos test suite with the
-<code>org_apache_mesos_TestCpuIsolator</code> module selected for isolation:
-<code>
-./bin/mesos-tests.sh --modules="/home/kapil/mesos/isolator-module/modules.json" --isolation="org_apache_mesos_TestCpuIsolator"
-</code></p>
+<code>org_apache_mesos_TestCpuIsolator</code> module selected for isolation:</p>
+
+<pre><code>./bin/mesos-tests.sh --modules="/home/kapil/mesos/isolator-module/modules.json" --isolation="org_apache_mesos_TestCpuIsolator"
+</code></pre>
 
 <h3>Module naming convention</h3>
 
@@ -450,7 +450,6 @@ must exist between the various versions:
 
 <tr>
 <td>0.29.0 </td> <td> 0.21.0 </td> <td> 0.18.0  </td> <td> NO </td> <td> Module/Library older than the kind version supported by Mesos. </td>
-<tr>
 </tr>
 
 <tr>
@@ -479,54 +478,50 @@ must exist between the various versions:
 
 <h3>JSON Schema:</h3>
 
-<pre><code>  {
-    "type":"object",
-    "required":false,
-    "properties":{
-      "libraries": {
-        "type":"array",
+<pre><code>{
+  "type":"object",
+  "required":false,
+  "properties":{
+    "libraries":{
+      "type":"array",
+      "required":false,
+      "items":{
+        "type":"object",
         "required":false,
-        "items":
-        {
-          "type":"object",
-          "required":false,
-          "properties":{
-            "file": {
-              "type":"string",
-              "required":false
-            },
-            "name": {
-              "type":"string",
-              "required":false
-            },
-            "modules": {
-              "type":"array",
+        "properties":{
+          "file":{
+            "type":"string",
+            "required":false
+          },
+          "name":{
+            "type":"string",
+            "required":false
+          },
+          "modules":{
+            "type":"array",
+            "required":false,
+            "items":{
+              "type":"object",
               "required":false,
-              "items":
-              {
-                "type":"object",
-                "required":false,
-                "properties":{
-                  "name": {
-                    "type":"string",
-                    "required":true
-                  },
-                  "parameters": {
-                    "type":"array",
+              "properties":{
+                "name":{
+                  "type":"string",
+                  "required":true
+                },
+                "parameters":{
+                  "type":"array",
+                  "required":false,
+                  "items":{
+                    "type":"object",
                     "required":false,
-                    "items":
-                    {
-                      "type":"object",
-                      "required":false,
-                      "properties":{
-                        "key": {
-                          "type":"string",
-                          "required":true
-                        },
-                        "value": {
-                          "type":"string",
-                          "required":true
-                        }
+                    "properties":{
+                      "key":{
+                        "type":"string",
+                        "required":true
+                      },
+                      "value":{
+                        "type":"string",
+                        "required":true
                       }
                     }
                   }
@@ -538,6 +533,7 @@ must exist between the various versions:
       }
     }
   }
+}
 </code></pre>
 
 	</div>

Added: mesos/site/publish/documentation/latest/monitoring/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/monitoring/index.html?rev=1688707&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/monitoring/index.html (added)
+++ mesos/site/publish/documentation/latest/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/latest/network-monitoring/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/network-monitoring/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/network-monitoring/index.html (original)
+++ mesos/site/publish/documentation/latest/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/latest/reconciliation/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/reconciliation/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/reconciliation/index.html (original)
+++ mesos/site/publish/documentation/latest/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/latest/release-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/release-guide/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/release-guide/index.html (original)
+++ mesos/site/publish/documentation/latest/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>