| .. |
| .. Copyright 2015 Comcast Cable Communications Management, LLC |
| .. |
| .. 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 |
| ****************************** |
| Installing Traffic Monitor |
| ========================== |
| The following are requirements to ensure an accurate set up: |
| |
| * CentOS 6 |
| * 4 vCPUs |
| * 8GB RAM |
| * Successful install of Traffic Ops |
| * Tomcat |
| * Administrative access to the Traffic Ops |
| * Physical address of the site |
| * 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`` :: |
| |
| |
| Using CATALINA_BASE: /opt/tomcat |
| Using CATALINA_HOME: /opt/tomcat |
| Using CATALINA_TMPDIR: /opt/tomcat/temp |
| Using JRE_HOME: /usr |
| Using CLASSPATH:/opt/tomcat/bin/bootstrap.jar |
| 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. |
| |
| 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. |
| |
| |
| Troubleshooting and log files |
| ============================= |
| Traffic Monitor log files are in ``/opt/traffic_monitor/var/log/``, and tomcat log files are in ``/opt/tomcat/logs/``. |