You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by mi...@apache.org on 2017/04/28 19:11:10 UTC

[9/9] incubator-trafficcontrol-website git commit: updates latest to match master

updates latest to match master


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/commit/868aab4e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/tree/868aab4e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/diff/868aab4e

Branch: refs/heads/asf-site
Commit: 868aab4e30291e9ad5c1c32f5f5e2f93802e1f8c
Parents: d0d124f
Author: Jeremy Mitchell <je...@cable.comcast.com>
Authored: Fri Apr 28 09:35:27 2017 -0600
Committer: Jeremy Mitchell <je...@cable.comcast.com>
Committed: Fri Apr 28 13:10:49 2017 -0600

----------------------------------------------------------------------
 docs/latest/.buildinfo                          |    2 +-
 docs/latest/_sources/admin/index.txt            |   17 +-
 docs/latest/_sources/admin/traffic_monitor.txt  |  213 +--
 .../_sources/admin/traffic_monitor_golang.txt   |   65 +
 .../_sources/admin/traffic_ops_install.txt      |  103 ++
 docs/latest/_sources/admin/traffic_server.txt   |   91 +-
 docs/latest/_sources/development/index.txt      |    1 +
 .../development/traffic_monitor_golang.txt      |  295 +++++
 .../latest/_sources/development/traffic_ops.txt |    1 +
 .../traffic_ops_api/v12/changelog.txt           |   16 +-
 .../traffic_ops_api/v12/deliveryservice.txt     |  415 +++++-
 .../development/traffic_ops_api/v12/tenant.txt  |   21 +-
 .../development/traffic_ops_api/v12/user.txt    |   36 +-
 docs/latest/_sources/index.txt                  |    4 +-
 .../_sources/overview/traffic_monitor.txt       |    2 +-
 docs/latest/admin/index.html                    |   31 +-
 docs/latest/admin/quick_howto/dnssec.html       |    8 +-
 docs/latest/admin/quick_howto/federations.html  |    8 +-
 docs/latest/admin/quick_howto/index.html        |   10 +-
 docs/latest/admin/quick_howto/multi_site.html   |    8 +-
 .../admin/quick_howto/multi_site_ats5.html      |   10 +-
 docs/latest/admin/quick_howto/regionalgeo.html  |    8 +-
 docs/latest/admin/quick_howto/steering.html     |    8 +-
 docs/latest/admin/traffic_monitor.html          |   64 +-
 docs/latest/admin/traffic_monitor_golang.html   |  304 +++++
 docs/latest/admin/traffic_ops_config.html       |   10 +-
 docs/latest/admin/traffic_ops_extensions.html   |    8 +-
 docs/latest/admin/traffic_ops_install.html      |  116 +-
 docs/latest/admin/traffic_ops_using.html        |   10 +-
 docs/latest/admin/traffic_portal.html           |    8 +-
 docs/latest/admin/traffic_router.html           |    8 +-
 docs/latest/admin/traffic_server.html           |  123 +-
 docs/latest/admin/traffic_stats.html            |    8 +-
 docs/latest/admin/traffic_vault.html            |    8 +-
 docs/latest/basics/cache_revalidation.html      |    8 +-
 docs/latest/basics/caching_proxies.html         |    8 +-
 .../basics/content_delivery_networks.html       |    8 +-
 docs/latest/basics/http_11.html                 |    8 +-
 docs/latest/basics/index.html                   |    8 +-
 docs/latest/development/index.html              |   21 +-
 docs/latest/development/traffic_monitor.html    |    8 +-
 .../traffic_monitor/traffic_monitor_api.html    |    8 +-
 .../development/traffic_monitor_golang.html     |  522 ++++++++
 docs/latest/development/traffic_ops.html        |   11 +-
 .../development/traffic_ops_api/routes.html     |    8 +-
 .../development/traffic_ops_api/v11/asn.html    |    8 +-
 .../traffic_ops_api/v11/cachegroup.html         |    8 +-
 .../development/traffic_ops_api/v11/cdn.html    |    8 +-
 .../traffic_ops_api/v11/changelog.html          |    8 +-
 .../traffic_ops_api/v11/deliveryservice.html    |    8 +-
 .../development/traffic_ops_api/v11/hwinfo.html |    8 +-
 .../traffic_ops_api/v11/parameter.html          |    8 +-
 .../traffic_ops_api/v11/phys_location.html      |    8 +-
 .../traffic_ops_api/v11/profile.html            |    8 +-
 .../development/traffic_ops_api/v11/region.html |    8 +-
 .../development/traffic_ops_api/v11/role.html   |    8 +-
 .../development/traffic_ops_api/v11/server.html |    8 +-
 .../traffic_ops_api/v11/static_dns.html         |    8 +-
 .../development/traffic_ops_api/v11/status.html |    8 +-
 .../development/traffic_ops_api/v11/system.html |    8 +-
 .../traffic_ops_api/v11/to_extension.html       |    8 +-
 .../development/traffic_ops_api/v11/type.html   |    8 +-
 .../development/traffic_ops_api/v11/user.html   |    8 +-
 .../development/traffic_ops_api/v12/asn.html    |   10 +-
 .../traffic_ops_api/v12/cache_stats.html        |    8 +-
 .../traffic_ops_api/v12/cachegroup.html         |   10 +-
 .../development/traffic_ops_api/v12/cdn.html    |   10 +-
 .../traffic_ops_api/v12/changelog.html          |   40 +-
 .../traffic_ops_api/v12/deliveryservice.html    | 1218 ++++++++++++++----
 .../v12/deliveryservice_regex.html              |    8 +-
 .../v12/deliveryservice_stats.html              |    8 +-
 .../traffic_ops_api/v12/division.html           |    8 +-
 .../traffic_ops_api/v12/federation.html         |    8 +-
 .../development/traffic_ops_api/v12/hwinfo.html |    8 +-
 .../traffic_ops_api/v12/influxdb.html           |    8 +-
 .../development/traffic_ops_api/v12/job.html    |    2 +
 .../traffic_ops_api/v12/parameter.html          |    8 +-
 .../traffic_ops_api/v12/phys_location.html      |    8 +-
 .../traffic_ops_api/v12/profile.html            |   10 +-
 .../traffic_ops_api/v12/profile_parameter.html  |    8 +-
 .../development/traffic_ops_api/v12/region.html |    8 +-
 .../development/traffic_ops_api/v12/role.html   |    8 +-
 .../development/traffic_ops_api/v12/server.html |   10 +-
 .../traffic_ops_api/v12/static_dns.html         |    8 +-
 .../development/traffic_ops_api/v12/status.html |    8 +-
 .../development/traffic_ops_api/v12/system.html |    8 +-
 .../development/traffic_ops_api/v12/tenant.html |   39 +-
 .../traffic_ops_api/v12/to_extension.html       |    8 +-
 .../traffic_ops_api/v12/topology.html           |    8 +-
 .../development/traffic_ops_api/v12/type.html   |    8 +-
 .../development/traffic_ops_api/v12/user.html   |   62 +-
 docs/latest/development/traffic_portal.html     |    8 +-
 docs/latest/development/traffic_router.html     |    8 +-
 .../traffic_router/traffic_router_api.html      |    8 +-
 docs/latest/development/traffic_server.html     |    8 +-
 docs/latest/development/traffic_stats.html      |    8 +-
 docs/latest/faq/administration.html             |    8 +-
 docs/latest/faq/development.html                |    8 +-
 docs/latest/faq/general.html                    |    8 +-
 docs/latest/faq/index.html                      |    8 +-
 docs/latest/genindex.html                       |   10 +-
 docs/latest/glossary.html                       |    8 +-
 docs/latest/index.html                          |   30 +-
 docs/latest/objects.inv                         |  Bin 3846 -> 3936 bytes
 docs/latest/overview/index.html                 |   10 +-
 docs/latest/overview/introduction.html          |    8 +-
 docs/latest/overview/traffic_monitor.html       |   12 +-
 docs/latest/overview/traffic_ops.html           |    8 +-
 docs/latest/overview/traffic_portal.html        |    8 +-
 docs/latest/overview/traffic_router.html        |   10 +-
 docs/latest/overview/traffic_server.html        |   10 +-
 docs/latest/overview/traffic_stats.html         |    8 +-
 docs/latest/overview/traffic_vault.html         |    8 +-
 docs/latest/search.html                         |   10 +-
 docs/latest/searchindex.js                      |    2 +-
 115 files changed, 3706 insertions(+), 865 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/.buildinfo
----------------------------------------------------------------------
diff --git a/docs/latest/.buildinfo b/docs/latest/.buildinfo
index 68fa0ff..320687e 100644
--- a/docs/latest/.buildinfo
+++ b/docs/latest/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 4a1c757ca051e368f370378e8be9bad0
+config: 47d3f572f358dc62b65d8994939ac274
 tags: 645f666f9bcd5a90fca523b33c5a78b7

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/admin/index.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/admin/index.txt b/docs/latest/_sources/admin/index.txt
index e92f5e2..da7feb5 100644
--- a/docs/latest/_sources/admin/index.txt
+++ b/docs/latest/_sources/admin/index.txt
@@ -20,14 +20,14 @@ Traffic Control is distributed in source form for the developer, but also as a b
 
 When installing a complete CDN from scratch, a sample recommended order is:
 
-1. Traffic Ops
-2. Traffic Vault (Riak)
-3. Apache Traffic Server Mid-Tier Caches
-4. Apache Traffic Server Edge Caches
-5. Traffic Monitor
-6. Traffic Router
-7. Traffic Stats
-8. Traffic Portal
+#. Traffic Ops
+#. Traffic Vault (Riak)
+#. Traffic Monitor
+#. Apache Traffic Server Mid-Tier Caches
+#. Apache Traffic Server Edge Caches
+#. Traffic Router
+#. Traffic Stats
+#. Traffic Portal
 
 Once everything is installed, you will need to configure the servers to talk to each other. You will also need Origin server(s), which the Mid-Tier Cache(s) get content from. An Origin server is simply an HTTP(S) server which serves the content you wish to cache on the CDN.
 
@@ -40,6 +40,7 @@ Once everything is installed, you will need to configure the servers to talk to
   traffic_ops_extensions.rst
   traffic_portal.rst
   traffic_monitor.rst
+  traffic_monitor_golang.rst
   traffic_router.rst
   traffic_stats.rst
   traffic_server.rst

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/admin/traffic_monitor.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/admin/traffic_monitor.txt b/docs/latest/_sources/admin/traffic_monitor.txt
index 3a06e78..1e0c797 100644
--- a/docs/latest/_sources/admin/traffic_monitor.txt
+++ b/docs/latest/_sources/admin/traffic_monitor.txt
@@ -16,6 +16,11 @@
 ******************************
 Traffic Monitor Administration
 ******************************
+
+.. _rl-tm-java:
+
+* These instructions are for the Java Traffic Monitor, for the Golang beta, see :ref:`rl-tm-golang`.
+
 Installing Traffic Monitor
 ==========================
 The following are requirements to ensure an accurate set up:
@@ -30,94 +35,111 @@ The following are requirements to ensure an accurate set up:
 * perl-JSON
 * perl-WWW-Curl
 
-1. Enter the Traffic Monitor server into Traffic Ops
-2. Make sure the FQDN of the Traffic Monitor is resolvable in DNS.
-3. Install Traffic Monitor and Perl mods: ``sudo yum -y install traffic_monitor perl-JSON perl-WWW-Curl``
-4. Take the config from Traffic Ops - run : ``sudo /opt/traffic_monitor/bin/traffic_monitor_config.pl``
- 
-	Sample output: ::
-
-		traffic_mon # /opt/traffic_monitor/bin/traffic_monitor_config.pl https://traffic-ops.cdn.kabletown.net admin:password 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:
-		{
-		   "traffic_monitor_config":{
-		      "default.accessControlAllowOrigin":"*",
-		      "health.startupMinCycles":"2",
-		      "tm.auth.password":"kl0tevax",
-		      "tm.auth.url":"https://${tmHostname}/login",
-		      "tm.healthParams.polling.url":"https://${tmHostname}/health/${cdnName}",
-		      "allow.config.edit":"false",
-		      "tm.crConfig.json.polling.url":"https://${tmHostname}/CRConfig-Snapshots/${cdnName}/CRConfig.json",
-		      "tm.auth.username":"admin",
-		      "peers.polling.url":"http://${hostname}/publish/CrStates?raw",
-		      "health.timepad":"10",
-		      "hack.publishDsStates":"true",
-		      "default.connection.timeout":"2000",
-		      "health.ds.interval":"1000",
-		      "peers.polling.interval":"5000",
-		      "hack.forceSystemExit":"false",
-		      "health.ds.leniency":"30000",
-		      "cdnName":"kabletown_cdn",
-		      "peers.threadPool":"1",
-		      "tm.polling.interval":"10000",
-		      "health.polling.interval":"5000",
-		      "health.event-count":"200",
-		      "hack.peerOptimistic":"true",
-		      "tm.hostname":"traffic-ops.cdn.kabletown.net"
-		   }
-		}
-		----------------------------------------------
-		----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 # 
-
-5. Start Tomcat: ``sudo service tomcat start`` ::
+#. Add the Traffic Monitor server into Traffic Ops using 'Servers' -> 'Add Server'. Set the 'Type' field to 'RASCAL'.
+
+#. Make sure the FQDN of the Traffic Monitor is resolvable in DNS.
+
+#. Get the Traffic Monitor RPM.
+
+   Sample command: ::
+
+      wget http://traffic-control-cdn.net/downloads/1.7.0/RELEASE-1.7.0/traffic_monitor-1.7.0-3908.5b77f60f.el6.x86_64.rpm
+
+#. Install Traffic Monitor and Perl modules: ::
+
+    sudo yum -y install traffic_monitor-*.rpm perl-JSON perl-WWW-Curl
+
+#. Take the config from Traffic Ops: ::
 
+    sudo /opt/traffic_monitor/bin/traffic_monitor_config.pl https://<traffic-ops-URL> <traffic-ops-user>:<traffic-ops-password> prompt
+
+   Sample session: ::
+
+    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:
+    {
+       "traffic_monitor_config":{
+          "default.accessControlAllowOrigin":"*",
+          "health.startupMinCycles":"2",
+          "tm.auth.password":"kl0tevax",
+          "tm.auth.url":"https://${tmHostname}/login",
+          "tm.healthParams.polling.url":"https://${tmHostname}/health/${cdnName}",
+          "allow.config.edit":"false",
+          "tm.crConfig.json.polling.url":"https://${tmHostname}/CRConfig-Snapshots/${cdnName}/CRConfig.json",
+          "tm.auth.username":"admin",
+          "peers.polling.url":"http://${hostname}/publish/CrStates?raw",
+          "health.timepad":"10",
+          "hack.publishDsStates":"true",
+          "default.connection.timeout":"2000",
+          "health.ds.interval":"1000",
+          "peers.polling.interval":"5000",
+          "hack.forceSystemExit":"false",
+          "health.ds.leniency":"30000",
+          "cdnName":"kabletown_cdn",
+          "peers.threadPool":"1",
+          "tm.polling.interval":"10000",
+          "health.polling.interval":"5000",
+          "health.event-count":"200",
+          "hack.peerOptimistic":"true",
+          "tm.hostname":"traffic-ops.cdn.kabletown.net"
+       }
+    }
+    ----------------------------------------------
+    ----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 #
+
+#. Update the 'allow_ip' and 'allow_ip6' 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 :ref:`rl-param-prof` in the *Configuring Traffic Ops* section.
+
+#. Start Tomcat: ``sudo service tomcat start`` ::
 
     Using CATALINA_BASE: /opt/tomcat
     Using CATALINA_HOME: /opt/tomcat
@@ -127,14 +149,27 @@ The following are requirements to ensure an accurate set up:
     Using CATALINA_PID:/var/run/tomcat/tomcat.pid
     Starting tomcat [ OK ]
 
-6. Verify Traffic Monitor is running by pointing your browser to port 80 on the Traffic Monitor host.
+#. Configure tomcat to start automatically: ``sudo chkconfig tomcat on``
+
+#. Verify Traffic Monitor is running by pointing your browser to port 80 on the Traffic Monitor host:
+
+   * The 'Cache States' tab should display all Mid and Edge caches configured in Traffic Ops.
+   * The 'DeliveryService States' tab should display all delivery services configured in Traffic Ops.
+
+#. In Traffic Ops servers table, click 'Edit' for this server, then click 'Online'.
+
 
 Configuring Traffic Monitor
 ===========================
 
 Configuration Overview
 ----------------------
-Traffic Monitor is configured using its JSON configuration file, ``traffic_monitor_config.js``. Specify the URL, username, password, and CDN name for the instance of Traffic Ops for which this Traffic Monitor is a member, and start the software.  Once started with the correct configuration, Traffic Monitor 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.
+Traffic Monitor is configured using its JSON configuration file, ``/opt/traffic_monitor/conf/traffic_monitor_config.js``.
+This file is created by ``traffic_monitor_config.pl`` script, and among other things, it contains the Traffic Ops URL and the user:password
+specified during the invocation of that script.
+
+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.
 
 
 Troubleshooting and log files

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/admin/traffic_monitor_golang.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/admin/traffic_monitor_golang.txt b/docs/latest/_sources/admin/traffic_monitor_golang.txt
new file mode 100644
index 0000000..d08e010
--- /dev/null
+++ b/docs/latest/_sources/admin/traffic_monitor_golang.txt
@@ -0,0 +1,65 @@
+.. 
+.. 
+.. Licensed under the Apache License, Version 2.0 (the "License");
+.. you may not use this file except in compliance with the License.
+.. You may obtain a copy of the License at
+.. 
+..     http://www.apache.org/licenses/LICENSE-2.0
+.. 
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+.. 
+
+******************************
+Traffic Monitor Administration
+******************************
+
+.. _rl-tm-golang:
+
+* These instructions are for the beta Golang Traffic Monitor, for the old Java version, see :ref:`rl-tm-java`.
+
+Installing Traffic Monitor
+==========================
+
+The following are requirements to ensure an accurate set up:
+
+* CentOS 6
+* 8 vCPUs
+* 16GB RAM
+* Successful install of Traffic Ops
+* Administrative access to the Traffic Ops
+* Physical address of the site
+
+1. Enter the Traffic Monitor server into Traffic Ops
+2. Make sure the FQDN of the Traffic Monitor is resolvable in DNS.
+3. Install Traffic Monitor: ``sudo yum -y install traffic_monitor``
+4. Configure Traffic Monitor. See :ref:`rl-tm-configure`
+5. Start the service: ``sudo service traffic_monitor start`` ::
+
+    Starting traffic_monitor:
+
+6. Verify Traffic Monitor is running by pointing your browser to port 80 on the Traffic Monitor host.
+
+Configuring Traffic Monitor
+===========================
+
+Configuration Overview
+----------------------
+
+.. _rl-tm-configure:
+
+Traffic Monitor is configured via two JSON configuration files, ``traffic_ops.cfg`` and ``traffic_monitor.cfg``, by default located in the ``conf`` directory in the install location.
+
+The ``traffic_ops.cfg`` config contains Traffic Ops connection information. Specify the URL, username, and password for the instance of Traffic Ops for which this Traffic Monitor is a member.
+
+The ``traffic_monitor.cfg`` config contains log file locations, as well as detailed application configuration variables, such as processing flush times and initial poll intervals.
+
+Once started with the correct configuration, Traffic Monitor downloads its configuration from Traffic Ops and begins polling caches. Once every cache has been polled, health protocol state is available via RESTful JSON endpoints.
+
+
+Troubleshooting and log files
+=============================
+Traffic Monitor log files are in ``/opt/traffic_monitor/var/log/``.

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/admin/traffic_ops_install.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/admin/traffic_ops_install.txt b/docs/latest/_sources/admin/traffic_ops_install.txt
index ca49461..d0caaf8 100644
--- a/docs/latest/_sources/admin/traffic_ops_install.txt
+++ b/docs/latest/_sources/admin/traffic_ops_install.txt
@@ -379,3 +379,106 @@ To upgrade:
 2. Enter the following command:``yum upgrade traffic_ops``
 3. See :ref:`rl-ps` to run postinstall.
 4. Enter the following command:``service traffic_ops start``
+
+Manually Generating and Installing the SSL Certificate
+------------------------------------------------------
+
+.. Note:: This section is valid for traffic-control 2.0.0 and later.
+
+Self-signed Certificate (Development)
+=====================================
+
+    Example Procedure::
+
+      $ openssl genrsa -des3 -passout pass:x -out localhost.pass.key 2048
+      Generating RSA private key, 2048 bit long modulus
+      ...
+      $ openssl rsa -passin pass:x -in localhost.pass.key -out localhost.key
+      writing RSA key
+      $ rm localhost.pass.key
+
+      $ openssl req -new -key localhost.key -out localhost.csr
+      You are about to be asked to enter information that will be incorporated
+      into your certificate request.
+      What you are about to enter is what is called a Distinguished Name or a DN.
+      There are quite a few fields but you can leave some blank
+      For some fields there will be a default value,
+      If you enter '.', the field will be left blank.
+      -----
+      Country Name (2 letter code) [XX]:US<enter>
+      State or Province Name (full name) []:CO<enter>
+      Locality Name (eg, city) [Default City]:Denver<enter>
+      Organization Name (eg, company) [Default Company Ltd]: <enter>
+      Organizational Unit Name (eg, section) []: <enter>
+      Common Name (eg, your name or your server's hostname) []: <enter>
+      Email Address []: <enter>
+
+      Please enter the following 'extra' attributes
+      to be sent with your certificate request
+      A challenge password []: pass<enter>
+      An optional company name []: <enter>
+      $ openssl x509 -req -sha256 -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
+      Signature ok
+      subject=/C=US/ST=CO/L=Denver/O=Default Company Ltd
+      Getting Private key
+      $ sudo cp localhost.crt /etc/pki/tls/certs
+      $ sudo cp localhost.key /etc/pki/tls/private
+      $ sudo chown trafops:trafops /etc/pki/tls/certs/localhost.crt
+      $ sudo chown trafops:trafops /etc/pki/tls/private/localhost.key
+
+Certificate from Certificate Authority (Production)
+===================================================
+
+.. Note:: You will need to know the appropriate answers when generating the certificate request file `trafficopss.csr` below.
+
+    Example Procedure::
+
+      $ openssl genrsa -des3 -passout pass:x -out trafficops.pass.key 2048
+      Generating RSA private key, 2048 bit long modulus
+      ...
+      $ openssl rsa -passin pass:x -in trafficops.pass.key -out trafficops.key
+      writing RSA key
+      $ rm localhost.pass.key
+
+      Generate the Certificate Signing Request (CSR) file needed for Certificate Authority (CA) request.
+
+      $ openssl req -new -key trafficops.key -out trafficops.csr
+      You are about to be asked to enter information that will be incorporated
+      into your certificate request.
+      What you are about to enter is what is called a Distinguished Name or a DN.
+      There are quite a few fields but you can leave some blank
+      For some fields there will be a default value,
+      If you enter '.', the field will be left blank.
+      -----
+      Country Name (2 letter code) [XX]: <enter country code>
+      State or Province Name (full name) []: <enter state or province>
+      Locality Name (eg, city) [Default City]: <enter locality name>
+      Organization Name (eg, company) [Default Company Ltd]: <enter organization name>
+      Organizational Unit Name (eg, section) []: <enter organizational unit name>
+      Common Name (eg, your name or your server's hostname) []: <enter server's hostname name>
+      Email Address []: <enter e-mail address>
+
+      Please enter the following 'extra' attributes
+      to be sent with your certificate request
+      A challenge password []: <enter challenge password>
+      An optional company name []: <enter>
+      $ sudo cp trafficops.key /etc/pki/tls/private
+      $ sudo chown trafops:trafops /etc/pki/tls/private/trafficops.key
+
+      You must then take the output file trafficops.csr and submit a request to your Certificate Authority (CA).
+      Once you get approved and receive your trafficops.crt file:
+
+      $ sudo cp trafficops.crt /etc/pki/tls/certs
+      $ sudo chown trafops:trafops /etc/pki/tls/certs/trafficops.crt
+
+      If necessary, install the CA certificates .pem and .crt in /etc/pki/tls/certs.
+
+      You will need to update the file /opt/traffic_ops/app/conf/cdn.conf with the following changes:
+            ...
+            e.g. given trafficops.crt and trafficops.key
+            'hypnotoad' => ...
+                'listen' => 'https://[::]:443?cert=/etc/pki/tls/certs/trafficops.crt&key=/etc/pki/tls/private/trafficops.key&ca=/etc/pki/tls/certs/localhost.ca&verify=0x00&ciphers=AES128-GCM-SHA256:HIGH:!RC4:!MD5:!aNULL:!EDH:!ED'
+             ...
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/admin/traffic_server.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/admin/traffic_server.txt b/docs/latest/_sources/admin/traffic_server.txt
index 1b99ce0..bedd430 100644
--- a/docs/latest/_sources/admin/traffic_server.txt
+++ b/docs/latest/_sources/admin/traffic_server.txt
@@ -18,26 +18,53 @@ Traffic Server Administration
 *****************************
 Installing Traffic Server
 =========================
-1. Select **Servers** in the Traffic Ops web interface.
-2. Scroll to the bottom of the page and click **Add Server**.
-3. Complete the *Required Info*: section.
-4. Click **Submit**.
-5. Click **Save**.
 
-.. 6. Click **Online Server**.
-.. 7. From the Set status of this machine to ONLINE? screen, click **OK**.
+#.  Get the Traffic Server RPM and the astats RPM.
+
+    Sample command: ::
+
+        wget http://traffic-control-cdn.net/downloads/1.7.0/RELEASE-1.7.0/trafficserver-5.3.2-759.ee14bbe.el6.x86_64.rpm
+        wget http://traffic-control-cdn.net/downloads/1.6.1/RELEASE-1.6.1/astats_over_http-1.2-8.el6.x86_64.rpm
+
+    (astats was not released as part of 1.7, so in this examples 1.6.1 was used)
+#.  Install Traffic Server and astats: ::
+
+        sudo yum -y install trafficserver-*.rpm astats_over_http*.rpm
+
+#.  Add the server using the Traffic Ops web interface:
+
+    #. Select **Servers**.
+    #. Scroll to the bottom of the page and click **Add Server**.
+    #. Complete the "Required Info:" section:
+        * Set 'Interface Name' to the name of the interface from which traffic server delivers content. 
+        * Set 'Type' to 'MID' or 'EDGE'.
+
+    #. Click **Submit**.
+    #. Click **Save**.
+    #. Click **Online Server**. 
+    #. Verify that the server status is now listed as **Reported**
+
+#.  Install the ORT script and run it in 'badass' mode to create the initial configuration, see :ref:`reference-traffic-ops-ort` 
+
+#.  Start the service: ``sudo service trafficserver start``
+
+#.  Configure traffic server to start automatically: ``sudo chkconfig trafficserver on``
+
+#.  Verify that the installation is good:
+
+    #. Make sure that the service is running: ``sudo service trafficserver status``
+
+    #. Assuming a traffic monitor is already installed, browse to it, and verify that the traffic server appears in the "Cahce States" table, in white.
+
 
 .. _reference-traffic-ops-ort:
 
 Configuring Traffic Server
 ==========================
 All of the Traffic Server application configuration files are generated by Traffic Ops and installed by way of the traffic_ops_ort.pl script. 
+The traffic_ops_ort.pl should be installed on all caches (by puppet or other non Traffic Ops means), usually in /opt/ort. It is used to do the initial install of the config files when the cache is being deployed, and to keep the config files up to date when the cache is already in service.  The usage message of the script is shown below: ::
 
-
-**traffic_ops_ort.pl**
-  The traffic_ops_ort.pl should be installed on all caches (by puppet or other non Traffic Ops means), usually in /opt/ort. It is used to do initial install of the config files when the cache is being deployed, and to keep the config files up to date when the cache is already in service.  The usage message of the script is shown below: ::
-
-    $ sudo ./traffic_ops_ort.pl syncds warn https://to.cdn.kabletown.net
+    $ sudo /opt/ort/traffic_ops_ort.pl
     Thu May 26 15:52:11 UTC 2016
     ====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====
     Usage: ./traffic_ops_ort.pl <Mode> <Log_Level> <Traffic_Ops_URL> <Traffic_Ops_Login> [optional flags]
@@ -59,13 +86,43 @@ All of the Traffic Server application configuration files are generated by Traff
     ====-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-====
     $
 
+Installing the ORT script
+--------------------------
+
+#.  The ORT script is not a part of the traffic server distribution. In this sample session, we get it manually from github: ::
+
+        sudo mkdir /opt/ort
+        sudo wget -P /opt/ort https://raw.githubusercontent.com/apache/incubator-trafficcontrol/1.7.x/traffic_ops/bin/traffic_ops_ort.pl
+        sudo chmod +x /opt/ort/traffic_ops_ort.pl
+
+#.  Install modules required by ORT: ``sudo yum -y install perl-JSON perl-Crypt-SSLeay``
+
+#.  For initial configuration or when major changes (like a Profile change) need to be made, run the script in "badass mode". All required rpm packages 
+    will be installed, all Traffic Server config files will be fetched and installed, and (if needed) the Traffic Server application will be restarted.  
+
+    Example run below: ::
+
+        $ sudo /opt/ort/traffic_ops_ort.pl --dispersion=0 badass warn https://ops.$tcDomain admin:admin123
+
+    .. Note:: First run gives a lot of state errors that are expected. The "badass" mode fixes these issue s. Run it a second time, this should be cleaner.
+       Also, note that many ERROR messages emitted by ORT are actually information messages. Do not panic.
+
+#.  Create a cron entry for running ort in 'syncds' mode every 15 minutes. 
+    This makes traffic control check periodically if 'Queue Updates' was run on Traffic Ops, and it so, get the updated configuration.
+
+    Run ``sudo crontab -e`` and add the following line :: 
 
-  For initial configuration or when major changes (like a Profile change) need to be made, run the script in "badass mode". All required rpm packages will be installed, all Traffic Server config files will be fetched and installed, and (if needed) the Traffic Server application will be restarted.  Example run below: ::
+  	  	*/15 * * * * /opt/ort/traffic_ops_ort.pl syncds warn https://traffops.kabletown.net admin:password > /tmp/ort/syncds.log 2>&1
 
-    run here 
+    .. Note:: By default, running ort on an edge traffic server waits for it's parent (mid) servers to download their configuration before 
+       it downloads it's own configuration. Because of this, scheduling ort for running every 15 minutes (with 5 minutes default dispersion) means 
+       that it might take up to ~35 minutes for a "Queue Updates" operation to affect all traffic servers.
 
-  For "every day changes" such as adding deliveryservices or changing records.config parameters caches should run the script in "syncds" mode out of cron. Example crontab entry: :: 
+    .. Note:: In 'syncds' mode, the ort script updates only configurations that might be changed as part of normal operations, such as:
 
-  		*/15 * * * * /opt/ort/traffic_ops_ort.pl syncds warn https://traffops.kabletown.net admin:password > /tmp/ort/syncds.log 2>&1
+        * Delivery Services
+        * SSL certificates
+        * Traffic Monitor IP addresses
+        * Logging configuration
+        * More stuff <To be completed>
 
-  .. Note:: <disclaimer on what is "hot changeable" here>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/development/index.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/development/index.txt b/docs/latest/_sources/development/index.txt
index 851e463..54a09c3 100644
--- a/docs/latest/_sources/development/index.txt
+++ b/docs/latest/_sources/development/index.txt
@@ -24,6 +24,7 @@ Use this guide to start developing applications that consume the Traffic Control
   traffic_portal
   traffic_router
   traffic_monitor
+  traffic_monitor_golang
   traffic_stats
   traffic_server
 

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/development/traffic_monitor_golang.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/development/traffic_monitor_golang.txt b/docs/latest/_sources/development/traffic_monitor_golang.txt
new file mode 100644
index 0000000..118a623
--- /dev/null
+++ b/docs/latest/_sources/development/traffic_monitor_golang.txt
@@ -0,0 +1,295 @@
+.. 
+.. 
+.. Licensed under the Apache License, Version 2.0 (the "License");
+.. you may not use this file except in compliance with the License.
+.. You may obtain a copy of the License at
+.. 
+..     http://www.apache.org/licenses/LICENSE-2.0
+.. 
+.. Unless required by applicable law or agreed to in writing, software
+.. distributed under the License is distributed on an "AS IS" BASIS,
+.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.. See the License for the specific language governing permissions and
+.. limitations under the License.
+.. 
+
+Traffic Monitor Golang
+**********************
+Introduction
+============
+The next major version of Traffic Monitor has been completely rewritten in Golang. Currently, this version is functionally equivalent, and should be considered "beta." It is recommended that new CDN deployments continue to use the existing Java version, until the new version is completely moved over in the source and binary distributions. However, developers and administrators are encouraged to test the Golang version, to prepare for operational differences and look for bugs.
+
+Traffic Monitor is an HTTP service application that monitors caches, provides health state information to Traffic Router, and collects statistics for use in tools such as Traffic Ops and Traffic Stats. The health state provided by Traffic Monitor is used by Traffic Router to control which caches are available on the CDN.
+
+Software Requirements
+=====================
+To work on Traffic Monitor you need a \*nix (MacOS and Linux are most commonly used) environment that has the following installed:
+
+* Golang
+
+Project Tree Overview
+=====================================
+
+* ``traffic_control/traffic_monitor/`` - base directory for Traffic Monitor.
+
+* ``cache/`` - Handler for processing cache results.
+* ``config/`` - Application configuration; in-memory objects from ``traffic_monitor.cfg``.
+* ``crconfig/`` - struct for deserlializing the CRConfig from JSON.
+* ``deliveryservice/`` - aggregates delivery service data from cache results.
+* ``deliveryservicedata/`` - deliveryservice structs. This exists separate from ``deliveryservice`` to avoid circular dependencies.
+* ``enum/`` - enumerations and name alias types.
+* ``health/`` - functions for calculating cache health, and creating health event objects.
+* ``manager/`` - manager goroutines (microthreads).
+	* ``health.go`` - Health request manager. Processes health results, from the health poller -> fetcher -> manager. The health poll is the "heartbeat" containing a small amount of stats, primarily to determine whether a cache is reachable as quickly as possible. Data is aggregated and inserted into shared threadsafe objects.
+	* ``manager.go`` - Contains ``Start`` function to start all pollers, handlers, and managers.
+	* ``monitorconfig.go`` - Monitor config manager. Gets data from the monitor config poller, which polls Traffic Ops for changes to which caches are monitored and how.
+	* ``opsconfig.go`` - Ops config manager. Gets data from the ops config poller, which polls Traffic Ops for changes to monitoring settings.
+	* ``peer.go`` - Peer manager. Gets data from the peer poller -> fetcher -> handler and aggregates it into the shared threadsafe objects.
+	* ``stat.go`` - Stat request manager. Processes stat results, from the stat poller -> fetcher -> manager. The stat poll is the large statistics poll, containing all stats (such as HTTP codes, transactions, delivery service statistics, and more). Data is aggregated and inserted into shared threadsafe objects.
+	* ``statecombiner.go`` - Manager for combining local and peer states, into a single combined states threadsafe object, for serving the CrStates endpoint.
+* ``datareq/`` - HTTP routing, which has threadsafe health and stat objects populated by stat and health managers.
+* ``peer/`` - Manager for getting and populating peer data from other Traffic Monitors
+* ``srvhttp/`` - HTTP service. Given a map of endpoint functions, which are lambda closures containing aggregated data objects.
+* ``static/`` - Web GUI HTML and javascript files
+* ``threadsafe/`` - Threadsafe objects for storing aggregated data needed by multiple goroutines (typically the aggregator and HTTP server)
+* ``trafficopsdata/`` - Struct for fetching and storing Traffic Ops data needed from the CRConfig. This is primarily mappings, such as delivery service servers, and server types.
+* ``trafficopswrapper/`` - Threadsafe wrapper around the Traffic Ops client. The client used to not be threadsafe, however, it mostly (possibly entirely) is now. But, the wrapper also serves to overwrite the Traffic Ops ``monitoring.json`` values, which are live, with snapshotted CRConfig values.
+
+Architecture
+============
+At the highest level, Traffic Monitor polls caches, aggregates their data and availability, and serves it at HTTP JSON endpoints.
+
+In the code, the data flows thru microthread (goroutine) pipelines. All stages of the pipeline are independent running microthreads:sup:`1`. The pipelines are:
+
+* **stat poll** - polls caches for all statistics data. This should be a slower poll, which gets a lot of data.
+* **health poll** - polls caches for a tiny amount of data, typically system information. This poll is designed to be a heartbeat, determining quickly whether the cache is reachable. Since it's a small amount of data, it should poll more frequently.
+* **peer poll** - polls Traffic Monitor peers for their availability data, and aggregates it with its own availability results and that of all other peers.
+* **monitor config** - polls Traffic Ops for the list of Traffic Monitors and their info.
+* **ops config** - polls for changes to the ops config file ``traffic_ops.cfg``, and sends updates to other pollers when the config file has changed.
+
+  * The ops config manager also updates the shared Traffic Ops client, since it's the actor which becomes notified of config changes requiring a new client.
+
+  * The ops config manager also manages, creates, and recreates the HTTP server, since ops config changes necessitate restarting the HTTP server.
+
+All microthreads in the pipeline are started by ``manager/manager.go:Start()``.
+
+::
+
+  --------------------     --------------------     --------------------
+  | ops config poller |-->| ops config handler |-->| ops config manager |-->-restart HTTP server-------------------------
+   -------------------     --------------------     -------------------- |                                              |
+                                                                         -->-ops config change subscriber-------------  |
+                                                                         |                                           |  |
+                                                                         -->-Traffic Ops client change subscriber--  |  |
+                                                                                                                  |  |  |
+      -------------------------------------------------------------------------------------------------------------  |  |
+      |                                                                                                              |  |
+      |   ------------------------------------------------------------------------------------------------------------  |
+      |   |                                                                                                             |
+      \/  \/                                                                                                            |
+     -----------------------     ------------------------                                                               |
+    | monitor config poller |-->| monitor config manager |-->-stat subscriber--------             -----------------------
+     -----------------------     ------------------------ |                         |             |
+                                                          |->-health subscriber---  |             \/                           _
+                                                          |                      |  |       -------------                    _( )._
+                                                          -->-peer subscriber--  |  |      | HTTP server |->-HTTP request-> (____)_)
+                                                                              |  |  |       -------------
+  -----------------------------------------------------------------------------  |  |              ^
+  |                                                                              |  |              |
+  |  -----------------------------------------------------------------------------  |              ------------------------
+  |  |                                                                              |                                     |
+  |  |  -----------------------------------------------------------------------------                                     |
+  |  |  |                                                                                                                 ^
+  |  |  |   -------------     --------------     --------------     --------------                            -----------------------
+  |  |  -->| stat poller |-->| stat fetcher |-->| stat handler |-->| stat manager |->--------set shared data->| shared data         |
+  |  |      ------------- |   --------------     --------------  |  --------------                            -----------------------
+  |  |                    |   --------------     --------------  |                                            | events              |
+  |  |                    |->| stat fetcher |-->| stat handler |-|                                            | toData              |
+  |  |                    |   --------------     --------------  |                                            | errorCount          |
+  |  |                    ...                                    ...                                          | healthIteration     |
+  |  |                                                                                                        | fetchCount          |
+  |  |     ---------------     ----------------     ----------------     ----------------                     | localStates         |
+  |  ---->| health poller |-->| health fetcher |-->| health handler |-->| health manager |->-set shared data->| toSession           |
+  |        --------------- |   ----------------     ----------------  |  ----------------                     | peerStates          |
+  |                        |   ----------------     ----------------  |                                       | monitorConfig       |
+  |                        |->| health fetcher |-->| health handler |-|                                       | combinedStates      |
+  |                        |   ----------------     ----------------  |                                       | statInfoHistory     |
+  |                        ...                                        ...                                     | statResultHistory   |
+  |                                                                                                           | statMaxKbpses       |
+  |       -------------     --------------     --------------     --------------                              | lastKbpsStats       |
+  ------>| peer poller |-->| peer fetcher |-->| peer handler |-->| peer manager |->----------set shared data->| dsStats             |
+          ------------- |   --------------     --------------  |  --------------                              | localCacheStatus    |
+                        |   --------------     --------------  |                                              | lastHealthDurations |
+                        |->| peer fetcher |-->| peer handler |-|                                              | healthHistory       |
+                        |   --------------     --------------  |                                              -----------------------
+                        ...                                    ...
+
+:sup:`1`Technically, some stages which are one-to-one simply call the next stage as a function. For example, the Fetcher calls the Handler as a function in the same microthread. But this isn't architecturally significant.
+
+
+Stat Pipeline
+-------------
+
+::
+
+  ---------     ---------     ---------     ---------
+  | poller |-->| fetcher |-->| handler |-->| manager |
+   -------- |   ---------     ---------  |  ---------
+            |   ---------     ---------  |
+            |->| fetcher |-->| handler |-|
+            |   ---------     ---------  |
+            ...                          ...
+
+* **poller** - ``common/poller/poller.go:HttpPoller.Poll()``. Listens for config changes (from the ops config manager), and starts its own internal microthreads, one for each cache to poll. These internal microthreads call the Fetcher at each cache's poll interval.
+
+* **fetcher** - ``common/fetcher/fetcher.go:HttpFetcher.Fetch()``. Fetches the given URL, and passes the returned data to the Handler, along with any errors.
+
+
+* **handler** - ``traffic_monitor/cache/cache.go:Handler.Handle()``. Takes the given result and does all data computation possible with the single result. Currently, this computation primarily involves processing the denormalized ATS data into Go structs, and processing System data into OutBytes, Kbps, etc. Precomputed data is then passed to its result channel, which is picked up by the Manager.
+
+* **manager** - ``traffic_monitor/manager/stat.go:StartStatHistoryManager()``. Takes preprocessed results, and aggregates them. Aggregated results are then placed in shared data structures. The major data aggregated are delivery service statistics, and cache availability data. See :ref:`Aggregated Stat Data` and :ref:`Aggregated Availability Data`.
+
+
+Health Pipeline
+---------------
+
+::
+
+  ---------     ---------     ---------     ---------
+  | poller |-->| fetcher |-->| handler |-->| manager |
+   -------- |   ---------     ---------  |  ---------
+            |   ---------     ---------  |
+            |->| fetcher |-->| handler |-|
+            |   ---------     ---------  |
+            ...                          ...
+
+* **poller** - ``common/poller/poller.go:HttpPoller.Poll()``. Same poller type as the Stat Poller pipeline, with a different handler object.
+
+* **fetcher** - ``common/fetcher/fetcher.go:HttpFetcher.Fetch()``. Same fetcher type as the Stat Poller pipeline, with a different handler object.
+
+* **handler** - ``traffic_monitor/cache/cache.go:Handler.Handle()``. Same handler type as the Stat Poller pipeline, but constructed with a flag to not precompute. The health endpoint is of the same form as the stat endpoint, but doesn't return all stat data. So, it doesn't precompute like the Stat Handler, but only processes the system data, and passes the processed result to its result channel, which is picked up by the Manager.
+
+* **manager** - ``traffic_monitor/manager/health.go:StartHealthResultManager()``. Takes preprocessed results, and aggregates them. For the Health pipeline, only health availability data is aggregated. Aggregated results are then placed in shared data structures (lastHealthDurationsThreadsafe, lastHealthEndTimes, etc). See :ref:`Aggregated Availability Data`.
+
+
+Peer Pipeline
+-------------
+
+::
+
+  ---------     ---------     ---------     ---------
+  | poller |-->| fetcher |-->| handler |-->| manager |
+   -------- |   ---------     ---------  |  ---------
+            |   ---------     ---------  |
+            |->| fetcher |-->| handler |-|
+            |   ---------     ---------  |
+            ...                          ...
+
+* **poller** - ``common/poller/poller.go:HttpPoller.Poll()``. Same poller type as the Stat and Health Poller pipelines, with a different handler object. Its config changes come from the Monitor Config Manager, and it starts an internal microthread for each peer to poll.
+
+* **fetcher** - ``common/fetcher/fetcher.go:HttpFetcher.Fetch()``. Same fetcher type as the Stat and Health Poller pipeline, with a different handler object.
+
+* **handler** - ``traffic_monitor/cache/peer.go:Handler.Handle()``. Decodes the JSON result into an object, and without further processing passes to its result channel, which is picked up by the Manager.
+
+* **manager** - ``traffic_monitor/manager/peer.go:StartPeerManager()``. Takes JSON peer Traffic Monitor results, and aggregates them. The availability of the Peer Traffic Monitor itself, as well as all cache availability from the given peer result, is stored in the shared ``peerStates`` object. Results are then aggregated via a call to the ``combineState()`` lambda, which signals the State Combiner microthread (which stores the combined availability in the shared object ``combinedStates``; See :ref:`State Combiner`).
+
+
+Monitor Config Pipeline
+-----------------------
+
+::
+
+  ---------     ---------
+  | poller |-->| manager |--> stat subscriber (Stat pipeline Poller)
+   --------     --------- |
+                          |-> health subscriber (Health pipeline Poller)
+                          |
+                          --> peer subscriber (Peer pipeline Poller)
+
+* **poller** - ``common/poller/poller.go:MonitorConfigPoller.Poll()``. The Monitor Config poller, on its interval, polls Traffic Ops for the Monitor configuration, and writes the polled value to its result channel, which is read by the Manager.
+
+* **manager** - ``traffic_monitor/manager/monitorconfig.go:StartMonitorConfigManager()``. Listens for results from the poller, and processes them. Cache changes are written to channels read by the Health, Stat, and Peer pollers. In the Shared Data objects, this also sets the list of new delivery services and removes ones which no longer exist, and sets the list of peer Traffic Monitors.
+
+
+Ops Config Pipeline
+-------------------
+::
+
+  ---------     ---------     ---------
+  | poller |-->| handler |-->| manager |--> ops config change subscriber (Monitor Config Poller)
+   --------     ---------     --------- |
+                                        --> Traffic ops client change subscriber (Monitor Config Poller)
+
+* **poller** - ``common/poller/poller.go:FilePoller.Poll()``. Polls for changes to the Traffic Ops config file ``traffic_ops.cfg``, and writes the changed config to its result channel, which is read by the Handler.
+
+* **handler** - ``common/handler/handler.go:OpsConfigFileHandler.Listen()``. Takes the given raw config, unmarshalls the JSON into an object, and writes the object to its channel, which is read by the Manager, along with any error.
+
+* **manager** - ``traffic_monitor/manager/monitorconfig.go:StartMonitorConfigManager()``. Listens for new configs, and processes them. When a new config is received, a new HTTP dispatch map is created via ``traffic_monitor/datareq/datareq.go:MakeDispatchMap()``, and the HTTP server is restarted with the new dispatch map. The Traffic Ops client is also recreated, and stored in its shared data object. The Ops Config change subscribers and Traffic Ops Client change subscribers (the Monitor Config poller) are also passed the new ops config and new Traffic Ops client.
+
+
+Events
+------
+The ``events`` shared data object is passed to each pipeline microthread which needs to signal events. Most of them do. Events are then logged, and visible in the UI as well as an HTTP JSON endpoint. Most events are caches becoming available or unavailable, but include other things such as peer availability changes.
+
+
+State Combiner
+--------------
+The State Combiner is a microthread started in ``traffic_monitor/manager/manager.go:Start()`` via ``traffic_monitor/manager/statecombiner.go:StartStateCombiner()``, which listens for signals to combine states. It should be signaled by any pipeline which updates the local or peer availability shared data objects, ``localStates`` and ``peerStates``. It holds the threadsafe shared data objects for local states and peer states, so no data is passed or returned, only a signal.
+
+When a signal is received, it combines the local and peer states optimistically. That is, if a cache is marked available locally or by any peer, that cache is marked available in the combined states. There exists a variable to combine pessimistically, which may be set at compile time (it's unusual for a CDN to operate well with pessimistic cache availability). Combined data is stored in the threadsafe shared data object ``combinedStates``.
+
+
+Aggregated Stat Data
+--------------------
+The Stat pipeline Manager is responsible for aggregating stats from all caches, into delivery services statistics. This is done via a call to ``traffic_monitor/deliveryservice/stat.go:CreateStats()``.
+
+
+Aggregated Availability Data
+----------------------------
+Both the Stat and Health pipelines aggregate availability data received from caches. This is done via a call to ``traffic_monitor/deliveryservice/health.go:CalcAvailability()`` followed by a call to ``combineState()``. The ``CalcAvailability`` function calculates the availability of each cache from the result of polling it, that is, local availability. The ``combineState()`` function is a lambda passed to the Manager, which signals the State Combiner microthread, which will combine the local and peer Traffic Monitor availability data, and insert it into the shared data ``combinedStates`` object.
+
+
+HTTP Data Requests
+------------------
+Data is provided to HTTP requests via the threadsafe shared data objects (see :ref:`Shared Data`). These objects are closed in lambdas created via ``traffic_monitor/datareq/datareq.go:MakeDispatchMap()``. This is called by the Ops Config Manager when it recreates the HTTP server.
+
+Each HTTP endpoint is mapped to a function which closes around the shared data objects it needs, and takes the request data it needs (such as query parameters). Each endpoint function resides in its own file in ``traffic_monitor/datareq/``. Because each Go HTTP routing function must be a ``http.HandlerFunc``, wrapper functions take the endpoint functions and return ``http.HandlerFunc`` functions which call them, and which are stored in the dispatch map, to be registered with the HTTP server.
+
+
+Shared Data
+-----------
+Processed and aggregated data must be shared between the end of the stat and health processing pipelines, and HTTP requests. The CSP paradigm of idiomatic Go does not work efficiently with storing and sharing state. While not idiomatic Go, shared mutexed data structures are faster and simpler than CSP manager microthreads for each data object.
+
+Traffic Monitor has many threadsafe shared data types and objects. All shared data objects can be seen in ``manager/manager.go:Start()``, where they are created and passed to the various pipeline stage microthreads that need them. Their respective types all include the word ``Threadsafe``, and can be found in ``traffic_monitor/threadsafe/`` as well as, for dependency reasons, various appropriate directories.
+
+Currently, all Threadsafe shared data types use mutexes. In the future, these could be changed to lock-free or wait-free structures, if the performance needs outweighed the readability and correctness costs. They could also easily be changed to internally be manager microthreads and channels, if being idiomatic were deemed more important than readability or performance.
+
+
+
+Formatting Conventions
+===========================
+Go code should be formatted with ``gofmt``. See also ``CONTRIBUTING.md``.
+
+Installing The Developer Environment
+====================================
+To install the Traffic Monitor Developer environment:
+
+1. Install `go` version 1.7 or greater, from https://golang.org/doc/install and https://golang.org/doc/code.html
+2. Clone the traffic_control repository using Git, into ``$GOPATH/src/github.com/apache/incubator-trafficcontrol``
+3. Change directories into ``$GOPATH/src/github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/traffic_monitor``
+4. Run ``./build.sh``
+
+Test Cases
+==========
+Tests can be executed by running ``go test ./...`` at the root of the ``traffic_monitor_golang`` project.
+
+API
+===
+
+:ref:`reference-tm-api`
+
+.. toctree:: 
+  :hidden:
+  :maxdepth: 1
+
+  traffic_monitor/traffic_monitor_api

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/development/traffic_ops.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/development/traffic_ops.txt b/docs/latest/_sources/development/traffic_ops.txt
index 41ad9cd..18b73a8 100644
--- a/docs/latest/_sources/development/traffic_ops.txt
+++ b/docs/latest/_sources/development/traffic_ops.txt
@@ -614,6 +614,7 @@ API 1.2 Reference
   traffic_ops_api/v12/division
   traffic_ops_api/v12/federation
   traffic_ops_api/v12/hwinfo
+  traffic_ops_api/v12/job
   traffic_ops_api/v12/parameter
   traffic_ops_api/v12/phys_location
   traffic_ops_api/v12/profile

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol-website/blob/868aab4e/docs/latest/_sources/development/traffic_ops_api/v12/changelog.txt
----------------------------------------------------------------------
diff --git a/docs/latest/_sources/development/traffic_ops_api/v12/changelog.txt b/docs/latest/_sources/development/traffic_ops_api/v12/changelog.txt
index 5cedbe0..ff0d72d 100644
--- a/docs/latest/_sources/development/traffic_ops_api/v12/changelog.txt
+++ b/docs/latest/_sources/development/traffic_ops_api/v12/changelog.txt
@@ -24,12 +24,22 @@ Change Logs
 /api/1.2/logs
 +++++++++++++
 
-**GET /api/1.2/logs.json**
+**GET /api/1.2/logs**
 
   Authentication Required: Yes
 
   Role(s) Required: None
 
+  **Request Query Parameters**
+
+  +-----------------+----------+---------------------------------------------------+
+  | Name            | Required | Description                                       |
+  +=================+==========+===================================================+
+  | ``days``        | no       | The number of days of change logs to return.      |
+  +-----------------+----------+---------------------------------------------------+
+  | ``limit``       | no       | The number of rows to limit the response to.      |
+  +-----------------+----------+---------------------------------------------------+
+
   **Response Properties**
 
   +-----------------+--------+--------------------------------------------------------------------------+
@@ -73,7 +83,7 @@ Change Logs
 
 |
 
-**GET /api/1.2/logs/:days/days.json**
+**GET /api/1.2/logs/:days/days**
 
   Authentication Required: Yes
 
@@ -130,7 +140,7 @@ Change Logs
 
 |
 
-**GET /api/1.2/logs/newcount.json**
+**GET /api/1.2/logs/newcount**
 
   Authentication Required: Yes