blob: d80d41b84780209ea8ac676c26dfcc30a1de0b70 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traffic Monitor Administration &mdash; Traffic Control 2.1-dev documentation </title>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/theme_overrides.css" type="text/css" />
<link rel="top" title="Traffic Control 2.1-dev documentation" href="../index.html"/>
<link rel="up" title="Administrator’s Guide" href="index.html"/>
<link rel="next" title="Traffic Monitor Administration" href="traffic_monitor_golang.html"/>
<link rel="prev" title="Traffic Portal Administration" href="traffic_portal.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="/" class="icon icon-home"> Traffic Control
<img src="../_static/tc_logo_c_only.png" class="logo" />
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../basics/index.html">CDN Basics</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../basics/content_delivery_networks.html">Content Delivery Networks</a></li>
<li class="toctree-l2"><a class="reference internal" href="../basics/http_11.html">HTTP 1.1</a></li>
<li class="toctree-l2"><a class="reference internal" href="../basics/caching_proxies.html">Caching Proxies</a></li>
<li class="toctree-l2"><a class="reference internal" href="../basics/cache_revalidation.html">Cache Control Headers and Revalidation</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../overview/index.html">Traffic Control Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../overview/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_ops.html">Traffic Ops</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_portal.html">Traffic Portal</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_router.html">Traffic Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_monitor.html">Traffic Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_stats.html">Traffic Stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_server.html">Traffic Server</a></li>
<li class="toctree-l2"><a class="reference internal" href="../overview/traffic_vault.html">Traffic Vault</a></li>
</ul>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Administrator&#8217;s Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="traffic_ops/installation.html">Traffic Ops - Installing</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_ops/default_profiles.html">Traffic Ops - Default Profiles</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_ops/migration_from_10_to_20.html">Traffic Ops - Migrating from 1.x to 2.x</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_ops/configuration.html">Traffic Ops - Configuring</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_ops/using.html">Traffic Ops - Using</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_ops/extensions.html">Managing Traffic Ops Extensions</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_portal.html">Traffic Portal Administration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Traffic Monitor Administration</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_monitor_golang.html">Traffic Monitor Administration</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_router.html">Traffic Router Administration</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_stats.html">Traffic Stats Administration</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_server.html">Traffic Server Administration</a></li>
<li class="toctree-l2"><a class="reference internal" href="traffic_vault.html">Traffic Vault Administration</a></li>
<li class="toctree-l2"><a class="reference internal" href="quick_howto/index.html">Quick How To Guides</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Developer&#8217;s Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../development/building.html">Building Traffic Control</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_ops.html">Traffic Ops</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_portal.html">Traffic Portal</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_router.html">Traffic Router</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_monitor.html">Traffic Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_monitor_golang.html">Traffic Monitor Golang</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_stats.html">Traffic Stats</a></li>
<li class="toctree-l2"><a class="reference internal" href="../development/traffic_server.html">Traffic Server</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">FAQ</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../faq/general.html">General</a></li>
<li class="toctree-l2"><a class="reference internal" href="../faq/development.html">Development</a></li>
<li class="toctree-l2"><a class="reference internal" href="../faq/administration.html">Running a Traffic Control CDN</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">Traffic Control</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Traffic Control 2.1-dev</a> &raquo;</li>
<li><a href="index.html">Administrator&#8217;s Guide</a> &raquo;</li>
<li>Traffic Monitor Administration</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/admin/traffic_monitor.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="traffic_monitor_golang.html" class="btn btn-neutral float-right" title="Traffic Monitor Administration">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="traffic_portal.html" class="btn btn-neutral" title="Traffic Portal Administration"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<div role="main" class="document">
<div class="section" id="traffic-monitor-administration">
<h1>Traffic Monitor Administration<a class="headerlink" href="#traffic-monitor-administration" title="Permalink to this headline"></a></h1>
<ul class="simple" id="rl-tm-java">
<li>These instructions are for the Java Traffic Monitor, for the Golang beta, see <span class="xref std std-ref">rl-tm-golang</span>.</li>
</ul>
<div class="section" id="installing-traffic-monitor">
<h2>Installing Traffic Monitor<a class="headerlink" href="#installing-traffic-monitor" title="Permalink to this headline"></a></h2>
<p>The following are requirements to ensure an accurate set up:</p>
<ul class="simple">
<li>CentOS 6</li>
<li>4 vCPUs</li>
<li>8GB RAM</li>
<li>Successful install of Traffic Ops</li>
<li>Tomcat</li>
<li>Administrative access to the Traffic Ops</li>
<li>Physical address of the site</li>
<li>perl-JSON</li>
<li>perl-WWW-Curl</li>
</ul>
<ol class="arabic">
<li><p class="first">Add the Traffic Monitor server into Traffic Ops using &#8216;Servers&#8217; -&gt; &#8216;Add Server&#8217;. Set the &#8216;Type&#8217; field to &#8216;RASCAL&#8217;.</p>
</li>
<li><p class="first">Make sure the FQDN of the Traffic Monitor is resolvable in DNS.</p>
</li>
<li><p class="first">Get the Traffic Monitor RPM.</p>
<p>Sample command:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">wget</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">traffic</span><span class="o">-</span><span class="n">control</span><span class="o">-</span><span class="n">cdn</span><span class="o">.</span><span class="n">net</span><span class="o">/</span><span class="n">downloads</span><span class="o">/</span><span class="mf">1.7</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">RELEASE</span><span class="o">-</span><span class="mf">1.7</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">traffic_monitor</span><span class="o">-</span><span class="mf">1.7</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="mf">3908.5</span><span class="n">b77f60f</span><span class="o">.</span><span class="n">el6</span><span class="o">.</span><span class="n">x86_64</span><span class="o">.</span><span class="n">rpm</span>
</pre></div>
</div>
</li>
<li><p class="first">Install Traffic Monitor and Perl modules:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">yum</span> <span class="o">-</span><span class="n">y</span> <span class="n">install</span> <span class="n">traffic_monitor</span><span class="o">-*.</span><span class="n">rpm</span> <span class="n">perl</span><span class="o">-</span><span class="n">JSON</span> <span class="n">perl</span><span class="o">-</span><span class="n">WWW</span><span class="o">-</span><span class="n">Curl</span>
</pre></div>
</div>
</li>
<li><p class="first">Take the config from Traffic Ops:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">traffic_monitor</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">traffic_monitor_config</span><span class="o">.</span><span class="n">pl</span> <span class="n">https</span><span class="p">:</span><span class="o">//&lt;</span><span class="n">traffic</span><span class="o">-</span><span class="n">ops</span><span class="o">-</span><span class="n">URL</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">traffic</span><span class="o">-</span><span class="n">ops</span><span class="o">-</span><span class="n">user</span><span class="o">&gt;</span><span class="p">:</span><span class="o">&lt;</span><span class="n">traffic</span><span class="o">-</span><span class="n">ops</span><span class="o">-</span><span class="n">password</span><span class="o">&gt;</span> <span class="n">prompt</span>
</pre></div>
</div>
<p>Sample session:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>traffic_mon # /opt/traffic_monitor/bin/traffic_monitor_config.pl https://traffic-ops.cdn.kabletown.net admin:kl0tevax prompt
DEBUG: traffic_ops selected: https://traffic-ops.cdn.kabletown.net
DEBUG: traffic_ops login: admin:kl0tevax
DEBUG: Config write mode: prompt
DEBUG: Found profile from traffic_ops: RASCAL_CDN
DEBUG: Found CDN name from traffic_ops: kabletown_cdn
DEBUG: Found location for rascal-config.txt from traffic_ops: /opt/traffic_monitor/conf
WARN: Param not in traffic_ops: allow.config.edit description: Allow the running configuration to be edited through the UI Using default value of: false
WARN: Param not in traffic_ops: default.accessControlAllowOrigin description: The value for the header: Access-Control-Allow-Origin for published jsons... should be narrowed down to TMs Using default value of: *
WARN: Param not in traffic_ops: default.connection.timeout description: Default connection time for all queries (cache, peers, TM) Using default value of: 2000
WARN: Param not in traffic_ops: hack.forceSystemExit description: Call System.exit on shutdown Using default value of: false
WARN: Param not in traffic_ops: hack.peerOptimistic description: The assumption of a caches availability when unknown by peers Using default value of: true
WARN: Param not in traffic_ops: hack.publishDsStates description: If true, the delivery service states will be included in the CrStates.json Using default value of: true
WARN: Param not in traffic_ops: health.ds.interval description: The polling frequency for calculating the deliveryService states Using default value of: 1000
WARN: Param not in traffic_ops: health.ds.leniency description: The amount of time before the deliveryService disregards the last update from a non-responsive cache Using default value of: 30000
WARN: Param not in traffic_ops: health.event-count description: The number of historical events that will be kept Using default value of: 200
WARN: Param not in traffic_ops: health.polling.interval description: The polling frequency for getting the states from caches Using default value of: 5000
WARN: Param not in traffic_ops: health.startupMinCycles description: The number of query cycles that must be completed before this Traffic Monitor will start reporting Using default value of: 2
WARN: Param not in traffic_ops: health.timepad description: A delay between each separate cache query Using default value of: 10
WARN: Param not in traffic_ops: peers.polling.interval description: Polling frequency for getting states from peer monitors Using default value of: 5000
WARN: Param not in traffic_ops: peers.polling.url description: The url for current, unfiltered states from peer monitors Using default value of: http://${hostname}/publish/CrStates?raw
WARN: Param not in traffic_ops: peers.threadPool description: The number of threads given to the pool for querying peers Using default value of: 1
WARN: Param not in traffic_ops: tm.auth.url description: The url for the authentication form Using default value of: https://${tmHostname}/login
WARN: Param not in traffic_ops: tm.crConfig.json.polling.url description: Url for the cr-config (json) Using default value of: https://${tmHostname}/CRConfig-Snapshots/${cdnName}/CRConfig.json
WARN: Param not in traffic_ops: tm.healthParams.polling.url description: The url for the heath params (json) Using default value of: https://${tmHostname}/health/${cdnName}
WARN: Param not in traffic_ops: tm.polling.interval description: The polling frequency for getting updates from TM Using default value of: 10000
DEBUG: allow.config.edit needed in config, but does not exist in config on disk.
DEBUG: cdnName value on disk () does not match value needed in config (kabletown_cdn).
DEBUG: default.accessControlAllowOrigin needed in config, but does not exist in config on disk.
DEBUG: default.connection.timeout needed in config, but does not exist in config on disk.
DEBUG: hack.forceSystemExit needed in config, but does not exist in config on disk.
DEBUG: hack.peerOptimistic needed in config, but does not exist in config on disk.
DEBUG: hack.publishDsStates needed in config, but does not exist in config on disk.
DEBUG: health.ds.interval needed in config, but does not exist in config on disk.
DEBUG: health.ds.leniency needed in config, but does not exist in config on disk.
DEBUG: health.startupMinCycles needed in config, but does not exist in config on disk.
DEBUG: health.timepad value on disk (20) does not match value needed in config (10).
DEBUG: peers.polling.interval needed in config, but does not exist in config on disk.
DEBUG: peers.threadPool needed in config, but does not exist in config on disk.
DEBUG: tm.auth.password value on disk () does not match value needed in config (kl0tevax).
DEBUG: tm.auth.username value on disk () does not match value needed in config (admin).
DEBUG: tm.hostname value on disk () does not match value needed in config (traffic-ops.cdn.kabletown.net).
DEBUG: Proposed traffic_monitor_config:
{
&quot;traffic_monitor_config&quot;:{
&quot;default.accessControlAllowOrigin&quot;:&quot;*&quot;,
&quot;health.startupMinCycles&quot;:&quot;2&quot;,
&quot;tm.auth.password&quot;:&quot;kl0tevax&quot;,
&quot;tm.auth.url&quot;:&quot;https://${tmHostname}/login&quot;,
&quot;tm.healthParams.polling.url&quot;:&quot;https://${tmHostname}/health/${cdnName}&quot;,
&quot;allow.config.edit&quot;:&quot;false&quot;,
&quot;tm.crConfig.json.polling.url&quot;:&quot;https://${tmHostname}/CRConfig-Snapshots/${cdnName}/CRConfig.json&quot;,
&quot;tm.auth.username&quot;:&quot;admin&quot;,
&quot;peers.polling.url&quot;:&quot;http://${hostname}/publish/CrStates?raw&quot;,
&quot;health.timepad&quot;:&quot;10&quot;,
&quot;hack.publishDsStates&quot;:&quot;true&quot;,
&quot;default.connection.timeout&quot;:&quot;2000&quot;,
&quot;health.ds.interval&quot;:&quot;1000&quot;,
&quot;peers.polling.interval&quot;:&quot;5000&quot;,
&quot;hack.forceSystemExit&quot;:&quot;false&quot;,
&quot;health.ds.leniency&quot;:&quot;30000&quot;,
&quot;cdnName&quot;:&quot;kabletown_cdn&quot;,
&quot;peers.threadPool&quot;:&quot;1&quot;,
&quot;tm.polling.interval&quot;:&quot;10000&quot;,
&quot;health.polling.interval&quot;:&quot;5000&quot;,
&quot;health.event-count&quot;:&quot;200&quot;,
&quot;hack.peerOptimistic&quot;:&quot;true&quot;,
&quot;tm.hostname&quot;:&quot;traffic-ops.cdn.kabletown.net&quot;
}
}
----------------------------------------------
----OK to write this config to disk? (Y/n) [n]y
----------------------------------------------
----------------------------------------------
----OK to write this config to disk? (Y/n) [n]Y
----------------------------------------------
DEBUG: Writing /opt/traffic_monitor/conf/traffic_monitor_config.js
traffic_mon #
</pre></div>
</div>
</li>
<li><p class="first">Update the &#8216;allow_ip&#8217; and &#8216;allow_ip6&#8217; parameters in the profiles of all caches defined in traffic ops, both edge and mid,
with the address of the traffic monitor being installed, so that the traffic servers will allow this Traffic Monitor
to access the astats plugin.
For details see <a class="reference internal" href="traffic_ops/configuration.html#rl-param-prof"><span class="std std-ref">Profile Parameters</span></a> in the <em>Configuring Traffic Ops</em> section.</p>
</li>
<li><p class="first">Start Tomcat: <code class="docutils literal"><span class="pre">sudo</span> <span class="pre">service</span> <span class="pre">tomcat</span> <span class="pre">start</span></code></p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Using</span> <span class="n">CATALINA_BASE</span><span class="p">:</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">tomcat</span>
<span class="n">Using</span> <span class="n">CATALINA_HOME</span><span class="p">:</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">tomcat</span>
<span class="n">Using</span> <span class="n">CATALINA_TMPDIR</span><span class="p">:</span> <span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">tomcat</span><span class="o">/</span><span class="n">temp</span>
<span class="n">Using</span> <span class="n">JRE_HOME</span><span class="p">:</span> <span class="o">/</span><span class="n">usr</span>
<span class="n">Using</span> <span class="n">CLASSPATH</span><span class="p">:</span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">tomcat</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">bootstrap</span><span class="o">.</span><span class="n">jar</span>
<span class="n">Using</span> <span class="n">CATALINA_PID</span><span class="p">:</span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">run</span><span class="o">/</span><span class="n">tomcat</span><span class="o">/</span><span class="n">tomcat</span><span class="o">.</span><span class="n">pid</span>
<span class="n">Starting</span> <span class="n">tomcat</span> <span class="p">[</span> <span class="n">OK</span> <span class="p">]</span>
</pre></div>
</div>
</li>
<li><p class="first">Configure tomcat to start automatically: <code class="docutils literal"><span class="pre">sudo</span> <span class="pre">chkconfig</span> <span class="pre">tomcat</span> <span class="pre">on</span></code></p>
</li>
<li><p class="first">Verify Traffic Monitor is running by pointing your browser to port 80 on the Traffic Monitor host:</p>
<ul class="simple">
<li>The &#8216;Cache States&#8217; tab should display all Mid and Edge caches configured in Traffic Ops.</li>
<li>The &#8216;DeliveryService States&#8217; tab should display all delivery services configured in Traffic Ops.</li>
</ul>
</li>
<li><p class="first">In Traffic Ops servers table, click &#8216;Edit&#8217; for this server, then click &#8216;Online&#8217;.</p>
</li>
</ol>
</div>
<div class="section" id="configuring-traffic-monitor">
<h2>Configuring Traffic Monitor<a class="headerlink" href="#configuring-traffic-monitor" title="Permalink to this headline"></a></h2>
<div class="section" id="configuration-overview">
<h3>Configuration Overview<a class="headerlink" href="#configuration-overview" title="Permalink to this headline"></a></h3>
<p>Traffic Monitor is configured using its JSON configuration file, <code class="docutils literal"><span class="pre">/opt/traffic_monitor/conf/traffic_monitor_config.js</span></code>.
This file is created by <code class="docutils literal"><span class="pre">traffic_monitor_config.pl</span></code> script, and among other things, it contains the Traffic Ops URL and the user:password
specified during the invocation of that script.</p>
<p>When started, Traffic Monitor uses this basic configuration to downloads its configuration from Traffic Ops, and begins polling caches.
Once a configurable number of polling cycles completes, health protocol state is available via RESTful JSON endpoints.</p>
</div>
</div>
<div class="section" id="troubleshooting-and-log-files">
<h2>Troubleshooting and log files<a class="headerlink" href="#troubleshooting-and-log-files" title="Permalink to this headline"></a></h2>
<p>Traffic Monitor log files are in <code class="docutils literal"><span class="pre">/opt/traffic_monitor/var/log/</span></code>, and tomcat log files are in <code class="docutils literal"><span class="pre">/opt/tomcat/logs/</span></code>.</p>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="traffic_monitor_golang.html" class="btn btn-neutral float-right" title="Traffic Monitor Administration">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="traffic_portal.html" class="btn btn-neutral" title="Traffic Portal Administration"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'2.1-dev',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ''
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>