This is an automated email from the ASF dual-hosted git repository.

duncangrant pushed a commit to branch ruby-3
in repository https://gitbox.apache.org/repos/asf/brooklyn-docs.git

commit d616fbf0334c5cafae3b6e40b9253742cec63b5e
Merge: a0314df 97515cb
Author: Alex Heneveld <[email protected]>
AuthorDate: Tue Sep 4 15:45:26 2018 +0100

    Merge remote-tracking branch 'origin/latest-upstream' into 
release-5.0-reverted-222
    
    fix various places where this conflicted with reversion of 222 or caused 
errors

 LICENSE                                            | 542 +--------------------
 NOTICE                                             |   2 +-
 guide/blueprints/advanced-example.md               |   8 +-
 .../ansible/creating-ansible-blueprints.md         |   4 +-
 guide/blueprints/catalog/management.md             |  19 +-
 guide/blueprints/catalog/mysql-in-catalog-w700.png | Bin 92767 -> 118078 bytes
 guide/blueprints/catalog/mysql-in-catalog.png      | Bin 168831 -> 201255 bytes
 guide/blueprints/catalog/templates.md              |   4 +-
 guide/blueprints/creating-yaml.md                  |   7 +-
 guide/blueprints/entity-configuration.md           |  83 +---
 .../appserver-clustered-w-db-concise.yaml          |   2 +-
 .../example_yaml/appserver-clustered-w-db.yaml     |   4 +-
 .../example_yaml/appserver-w-db-other-flavor.yaml  |   4 +-
 guide/blueprints/example_yaml/appserver-w-db.yaml  |   4 +-
 .../example_yaml/appserver-w-policy.yaml           |   4 +-
 .../blueprints/example_yaml/entity-config-app.yaml |   4 +
 .../example_yaml/entity-config-catalog.yaml        |  19 +
 .../example_yaml/entity-config-override-app.yaml   |   8 +
 .../example_yaml/entity-constraint-app.yaml        |   7 +
 .../example_yaml/entity-constraint-catalog.yaml    |  29 ++
 .../fabric-with-multiple-locations.yaml            |   2 +-
 .../example_yaml/vanilla-bash-netcat-file.yaml     |   1 +
 .../example_yaml/vanilla-bash-netcat-w-client.yaml |   6 +-
 .../testcases/getting-started-test-example.yaml    |   2 +-
 .../getting-started-blueprint-test-large.png       | Bin 156553 -> 173280 bytes
 .../test/images/getting-started-blueprint-test.png | Bin 84906 -> 138565 bytes
 guide/blueprints/web-console-yaml-700.png          | Bin 138229 -> 63365 bytes
 guide/blueprints/web-console-yaml.png              | Bin 661136 -> 95790 bytes
 guide/blueprints/winrm/index.md                    |  23 +
 guide/blueprints/yaml-reference.md                 |  41 +-
 guide/concepts/configuration-sensor-effectors.md   |   6 +-
 guide/concepts/dependent-configuration.md          |   2 +-
 guide/concepts/execution.md                        |   2 +-
 guide/concepts/lifecycle-managementcontext.md      |   4 +-
 guide/dev/code/licensing.md                        |  30 +-
 guide/dev/env/ide/index.md                         |  28 +-
 guide/locations/_azure-ARM.md                      |   8 +-
 guide/ops/cli/cli-usage-guide.md                   |  20 +-
 guide/ops/configuration/brooklyn_cfg.md            |   6 +-
 guide/ops/externalized-configuration.md            |   2 +-
 guide/ops/gui/_my-web-cluster.yaml                 |   2 +-
 guide/ops/gui/_my-web-cluster2.yaml                |   2 +-
 guide/ops/gui/blueprints.md                        |  20 +-
 ...plication-catalog-web-cluster-with-db-large.png | Bin 165148 -> 0 bytes
 ...add-application-catalog-web-cluster-with-db.png | Bin 70109 -> 0 bytes
 .../images/add-application-modal-yaml-large.png    | Bin 124297 -> 0 bytes
 .../ops/gui/images/add-application-modal-yaml.png  | Bin 55183 -> 0 bytes
 guide/ops/gui/images/add-blueprint-large.png       | Bin 0 -> 78813 bytes
 guide/ops/gui/images/add-blueprint.png             | Bin 0 -> 52861 bytes
 guide/ops/gui/images/app-deploying-large.png       | Bin 0 -> 161315 bytes
 guide/ops/gui/images/app-deploying.png             | Bin 0 -> 117086 bytes
 guide/ops/gui/images/app-quicklaunch-large.png     | Bin 0 -> 243212 bytes
 guide/ops/gui/images/app-quicklaunch.png           | Bin 0 -> 130668 bytes
 guide/ops/gui/images/home-app-starting-large.png   | Bin 490707 -> 0 bytes
 guide/ops/gui/images/home-app-starting.png         | Bin 188754 -> 0 bytes
 .../gui/images/my-db-activities-step1-large.png    | Bin 99671 -> 207816 bytes
 guide/ops/gui/images/my-db-activities-step1.png    | Bin 57813 -> 141570 bytes
 .../gui/images/my-db-activities-step2-large.png    | Bin 176900 -> 220823 bytes
 guide/ops/gui/images/my-db-activities-step2.png    | Bin 97061 -> 150615 bytes
 .../gui/images/my-db-activities-step3-large.png    | Bin 162986 -> 223203 bytes
 guide/ops/gui/images/my-db-activities-step3.png    | Bin 84365 -> 158796 bytes
 .../images/my-web-cluster-stop-confirm-large.png   | Bin 148155 -> 143327 bytes
 .../ops/gui/images/my-web-cluster-stop-confirm.png | Bin 79280 -> 80654 bytes
 guide/ops/gui/images/my-web-large.png              | Bin 104519 -> 160685 bytes
 guide/ops/gui/images/my-web.png                    | Bin 58849 -> 119149 bytes
 guide/ops/gui/managing.md                          |  10 +-
 guide/ops/high-availability/index.md               |  18 +
 guide/ops/persistence/index.md                     |  28 +-
 guide/ops/troubleshooting/connectivity.md          |   1 +
 guide/ops/troubleshooting/deployment.md            |  24 +
 .../troubleshooting/going-deep-in-java-and-logs.md |  24 +-
 .../images/external-error-large.png                | Bin 131907 -> 415180 bytes
 .../ops/troubleshooting/images/external-error.png  | Bin 71972 -> 124272 bytes
 .../troubleshooting/images/failed-task-large.png   | Bin 169079 -> 440466 bytes
 guide/ops/troubleshooting/images/failed-task.png   | Bin 92530 -> 121974 bytes
 .../images/jmx-sensors-all-large.png               | Bin 133517 -> 0 bytes
 .../ops/troubleshooting/images/jmx-sensors-all.png | Bin 76581 -> 0 bytes
 .../images/jmx-sensors-connector-large.png         | Bin 0 -> 351132 bytes
 .../images/jmx-sensors-connector.png               | Bin 0 -> 94069 bytes
 .../troubleshooting/images/jmx-sensors-large.png   | Bin 197177 -> 161123 bytes
 guide/ops/troubleshooting/images/jmx-sensors.png   | Bin 109139 -> 120257 bytes
 .../images/resource-exception-large.png            | Bin 134842 -> 467231 bytes
 .../troubleshooting/images/resource-exception.png  | Bin 76059 -> 139362 bytes
 .../images/script-failure-large.png                | Bin 130227 -> 419522 bytes
 .../ops/troubleshooting/images/script-failure.png  | Bin 71912 -> 123627 bytes
 guide/ops/troubleshooting/overview.md              |   6 +-
 guide/ops/troubleshooting/softwareprocess.md       |   5 +-
 guide/start/_my-web-cluster.yaml                   |   2 +-
 guide/start/_my-web-cluster2.yaml                  |   2 +-
 89 files changed, 337 insertions(+), 744 deletions(-)

diff --cc guide/blueprints/ansible/creating-ansible-blueprints.md
index ee5ddcc,8707363..ef0d85c
--- a/guide/blueprints/ansible/creating-ansible-blueprints.md
+++ b/guide/blueprints/ansible/creating-ansible-blueprints.md
@@@ -212,4 -210,4 +212,6 @@@ services
              https_port: 8443
              admin_username: admin
              admin_password: secret
-- ```
++```
++
++
diff --cc guide/blueprints/creating-yaml.md
index 6f91784,d6de14b..3122d42
--- a/guide/blueprints/creating-yaml.md
+++ b/guide/blueprints/creating-yaml.md
@@@ -32,12 -27,12 +32,13 @@@ Here's a very simple YAML blueprint pla
    This is the meat of the blueprint plan, as you'll see below.
  
  Finally, the clipboard in the top-right corner of the example plan box above 
(hover your cursor over the box)  lets you easily copy-and-paste into the 
web-console:
- simply [download and launch]({{ site.path.guide }}/start/running.html) 
Brooklyn,
- then in the "Create Application" dialog at the web console
- (usually [http://127.0.0.1:8081/](http://127.0.0.1:8081/), paste the copied 
YAML into the "Yaml" tab of the dialog and press "Finish". 
 -simply [download and launch]({{book.path.docs}}/start/running.md) Brooklyn, 
open a new browser window (usually) at 
[http://127.0.0.1:8081/](http://127.0.0.1:8081/).
++simply [download and launch]({{book.path.docs}}/start/running.md) Brooklyn, 
++open a new browser window (usually) at 
[http://127.0.0.1:8081/](http://127.0.0.1:8081/).
+ Click on the tile "Blueprint Composer", then on the double-arrow located on 
the top right of the screen (to switch to the YAML mode),
+ paste the copied YAML into the editor and press "Deploy". 
  There are several other ways to deploy, including `curl` and via the 
command-line,
  and you can configure users, https, persistence, and more, 
 -as described [in the ops guide]({{book.path.docs}}/ops/index.md).
 +as described [in the ops guide]({{ site.path.guide }}/ops/).
  
  [![Web Console](web-console-yaml-700.png "YAML via Web 
Console")](web-console-yaml.png)
  
diff --cc guide/blueprints/yaml-reference.md
index 7a46970,21201df..8bfd5ad
--- a/guide/blueprints/yaml-reference.md
+++ b/guide/blueprints/yaml-reference.md
@@@ -78,10 -79,11 +80,11 @@@ the entity being defined, with these be
      `timestamp` accepts most common ISO date formats, `duration` accepts 
`5m`, and port accepts `8080+`
    * `default`: a default value; this will be coerced to the declared `type`
    * `pinned`: mark the parameter as pinned (always displayed) for the UI. The 
default is `true`
+     (unless an ancestor sets false; config keys from Java types are _not_ 
pinned)
    * `constraints`: a list of constraints the parameter should meet;
 -    for details, see [Entity 
Configuration]({{book.path.docs}}/blueprints/entity-configuration.md#config-key-constraints).
 +    for details, see [Entity Configuration]({{ site.path.guide 
}}/blueprints/entity-configuration.html#config-key-constraints).
  
-   A shorthand notation is also supported where just the name of the parameter 
is supplied
+   A shorthand notation is also supported where just the name of the parameter 
can be supplied
    as an item in the list, with the other values being unset or the default.
    See `displayName` in the following example for an illustration of this:
  
diff --cc guide/concepts/dependent-configuration.md
index 1d08e1a,21b5e95..edec9c2
--- a/guide/concepts/dependent-configuration.md
+++ b/guide/concepts/dependent-configuration.md
@@@ -7,13 -4,13 +7,13 @@@ categories: [use, guide, defining-appli
  
  Under the covers Brooklyn has a sophisticated sensor event and subscription 
model, but conveniences around this model make it very simple to express 
cross-entity dependencies. Consider the example where Tomcat instances need to 
know the URL of a database (or a set of URLs to connect to a Monterey 
processing fabric, or other entities)
  
 -```java
 +{% highlight java %}
  setConfiguration(UsesJava.JAVA_OPTIONS, ImmutableMap.of("mysql.url", 
            attributeWhenReady(mysql, MySqlNode.MY_SQL_URL) ))
 -```
 +{% endhighlight %}
  
  The ``attributeWhenReady(Entity, Sensor)`` call (a static method on the class 
``DependentConfiguration``)
- causes the configuration value to be set when that given entity's attribue is 
ready. 
+ causes the configuration value to be set when that given entity's attribute 
is ready. 
  In the example, ``attributeWhenReady()`` causes the JVM system property 
``mysql.url`` to be set to the value of the ``MySqlNode.MY_SQL_URL`` sensor 
from ``mysql`` when that value is ready. As soon as the database URL is 
announced by the MySql entity, the configuration value will be available to the 
Tomcat cluster. 
  
  By default "ready" means being *set* (non-null) and, if appropriate, 
*non-empty* (for collections and strings) or *non-zero* (for numbers). Formally 
the interpretation of ready is that of "Groovy truth" defined by an 
``asBoolean()`` method on the class and in the Groovy language extensions. 
diff --cc guide/locations/_azure-ARM.md
index 3fced19,739e5e4..84d5df1
--- a/guide/locations/_azure-ARM.md
+++ b/guide/locations/_azure-ARM.md
@@@ -102,7 -100,7 +106,7 @@@ Using the Azure CLI, run the following 
      # For example: azure ad app create --name "myappname"  --password abcd 
--home-page "https://myappwebsite"; --identifier-uris "https://myappwebsite";
      
      # Output will include a value for `Application Id`, which will be used 
for the live tests
--    
++   
      # Create a Service Principal
      azure ad sp create --applicationId <Application-id>
      
diff --cc guide/ops/cli/cli-usage-guide.md
index 7e335b9,c5c18db..b00e6c0
--- a/guide/ops/cli/cli-usage-guide.md
+++ b/guide/ops/cli/cli-usage-guide.md
@@@ -118,32 -107,32 +118,32 @@@ QK6QjmrW   TomcatServer:QK6Q  org.apach
  As for applications, the configuration details of an entity can be seen with 
the `config`
  command:
  
 -```text
 +{% highlight text %}
  $ br app WebCluster entity thHnLFkP config
- Key                             Value   
- install.unique_label            MySqlNode_5.6.26   
- brooklyn.wrapper_app            true   
- datastore.creation.script.url   
https://bit.ly/brooklyn-visitors-creation-script   
- camp.template.id                dnw3GqN0   
- camp.plan.id                    db   
- onbox.base.dir                  /home/vagrant/brooklyn-managed-processes   
- onbox.base.dir.resolved         true   
+ Key                                      Value   
+ install.unique_label                     MySqlNode_5.6.26   
+ brooklyn.wrapper_app                     true   
+ datastore.creation.script.template.url   
https://bit.ly/brooklyn-visitors-creation-script   
+ camp.template.id                         dnw3GqN0   
+ camp.plan.id                             db   
+ onbox.base.dir                           
/home/vagrant/brooklyn-managed-processes   
+ onbox.base.dir.resolved                  true   
  
 -```
 +{% endhighlight %}
  
  The value of a single configuration item can be displayed by using the 
configuration key
  as a parameter for the `config` command:
  
 -```text
 +{% highlight text %}
- $ br app WebCluster entity thHnLFkP config datastore.creation.script.url
+ $ br app WebCluster entity thHnLFkP config 
datastore.creation.script.template.url
  https://bit.ly/brooklyn-visitors-creation-script
 -```
 +{% endhighlight %}
  
  The value of a configuration item can be changed by using the `set` command:
  
 -```text
 +{% highlight text %}
- $ br app WebCluster entity thHnLFkP config datastore.creation.script.url set 
\"https://bit.ly/new-script\";
+ $ br app WebCluster entity thHnLFkP config 
datastore.creation.script.template.url set \"https://bit.ly/new-script\";
 -```
 +{% endhighlight %}
  
  ## Sensors
  The sensors associated with an application or entity can be listed with the 
`sensor` command:
diff --cc guide/ops/configuration/brooklyn_cfg.md
index 11af09b,7051a02..39914ec
--- a/guide/ops/configuration/brooklyn_cfg.md
+++ b/guide/ops/configuration/brooklyn_cfg.md
@@@ -88,10 -78,10 +88,10 @@@ brooklyn.webconsole.security.user.admin
  
  The `users` line should contain a comma-separated list. The special value `*` 
is accepted to permit all users.
  
- To generate this, the brooklyn CLI can be used:
+ To generate this, there is a script shipped with Brooklyn:
  
 -```bash
 +{% highlight bash %}
- brooklyn generate-password --user admin
+ ./bin/generate-password.sh --user admin
  
  Enter password: 
  Re-enter password: 
diff --cc guide/ops/gui/blueprints.md
index 8c67f9b,d9dba83..8c51235
--- a/guide/ops/gui/blueprints.md
+++ b/guide/ops/gui/blueprints.md
@@@ -38,14 -33,14 +42,14 @@@ location
    jclouds:softlayer:
      identity: ABCDEFGHIJKLMNOPQRST
      credential: s3cr3tsq1rr3ls3cr3tsq1rr3ls3cr3tsq1rr3l
 -```
 +{% endhighlight %}
  
 -**NOTE**: See __[Locations]({{book.path.docs}}/locations/index.md)__ in the 
Operations section of the User Guide for instructions on setting up alternate 
cloud providers, bring-your-own-nodes, or localhost targets, and storing 
credentials/locations in a file on disk rather than in the blueprint.
 +**NOTE**: See __[Locations](../locations)__ in the Operations section of the 
User Guide for instructions on setting up alternate cloud providers, 
bring-your-own-nodes, or localhost targets, and storing credentials/locations 
in a file on disk rather than in the blueprint.
  
- With the modified YAML in the dialog, click "Finish". The dialog will close 
and Brooklyn will begin deploying your
- application. Your application will be shown as "Starting" on the web 
console's front page.
+ With the modified YAML, click on the "Deploy" button. Brooklyn will begin 
deploying your application and redirect you to the
+ "Application Inspector". In this screen, you will see your application as 
"Starting".
  
- [![Brooklyn web console, showing the application 
starting.](images/home-app-starting.png)](images/home-app-starting-large.png)
+ [![Brooklyn web console, showing the application 
starting.](images/app-deploying.png)](images/app-deploying-large.png)
  
  Depending on your choice of location it may take some time for the 
application nodes to start, the next page describes how you can monitor the 
progress of the application deployment and verify its successful deployment.
  
diff --cc guide/ops/gui/managing.md
index a972622,d3f888e..6e3b0bb
--- a/guide/ops/gui/managing.md
+++ b/guide/ops/gui/managing.md
@@@ -1,13 -1,10 +1,13 @@@
  ---
  title: Monitoring and Managing Applications
 +title_in_menu: Monitoring and Managing Applications
 +layout: website-normal
 +menu_parent: index.md
  ---
  
- From the Home page, click on the application name or open the Applications 
tab.
+ From the Home page, go the "Application Inspector" module.
  
- We can explore the management hierarchy of the application, which will show 
us the entities it is composed of.  Starting from the application use the 
arrows to expand out the list of entities, or hover over the arrow until a menu 
popup is displayed so that you can select `Expand All`.  
+ We can explore the management hierarchy of the application, which will show 
us the entities it is composed of.  Starting from the application use the 
arrows to expand out the list of entities.
  
   * My Web Cluster (A `BasicApplication`)
       * My DB (A `MySqlNode`)
diff --cc guide/ops/troubleshooting/connectivity.md
index 0ec7139,82917c2..3faeacf
--- a/guide/ops/troubleshooting/connectivity.md
+++ b/guide/ops/troubleshooting/connectivity.md
@@@ -1,7 -1,154 +1,8 @@@
  ---
 +layout: website-normal
  title: Troubleshooting Server Connectivity Issues in the Cloud
 +toc: /guide/toc.json
  ---
  
 -A common problem when setting up an application in the cloud is getting the 
basic connectivity right - how
 -do I get my service (e.g. a TCP host:port) publicly accessible over the 
internet?
 -
 -This varies a lot - e.g. Is the VM public or in a private network? Is the 
service only accessible through
 -a load balancer? Should the service be globally reachable or only to a 
particular CIDR?
 -
 -This guide gives some general tips for debugging connectivity issues, which 
are applicable to a 
 -range of different service types. Choose those that are appropriate for your 
use-case.
 -
 -## VM reachable
 -If the VM is supposed to be accessible directly (e.g. from the public 
internet, or if in a private network
 -then from a jump host)...
 -
 -### ping
 -Can you `ping` the VM from the machine you are trying to reach it from?
 -
 -However, ping is over ICMP. If the VM is unreachable, it could be that the 
firewall forbids ICMP but still
 -lets TCP traffic through.
 -
 -### telnet to TCP port
 -You can check if a given TCP port is reachable and listening using `telnet 
<host> <port>`, such as
 -`telnet www.google.com 80`, which gives output like:
 -
 -~~~
 -    Trying 31.55.163.219...
 -    Connected to www.google.com.
 -    Escape character is '^]'.
 -~~~
 -
 -If this is very slow to respond, it can be caused by a firewall blocking 
access. If it is fast, it could
 -be that the server is just not listening on that port.
 -
 -### DNS and routing
 -If using a hostname rather than IP, then is it resolving to a sensible IP?
 -
 -Is the route to the server sensible? (e.g. one can hit problems with proxy 
servers in a corporate
 -network, or ISPs returning a default result for unknown hosts).
 -
 -The following commands can be useful:
 -
 -* `host` is a DNS lookup utility. e.g. `host www.google.com`.
 -* `dig` stands for "domain information groper". e.g. `dig www.google.com`.
 -* `traceroute` prints the route that packets take to a network host. e.g. 
`traceroute www.google.com`.
 -
 -## Proxy settings
 -Depending on the type of location, brooklyn might use HTTP to provision 
machines (clocker, jclouds). If the host environment defines proxy settings, 
these might interfere with the reachability of the respective HTTP service.
 -
 -One such case is using VirtualBox with host-only or private internal network 
settings, while using an external proxy for accessing the internet. It is clear 
that the external proxy won't be able to route HTTP calls properly, but that 
might not be clear when reading the logs (although brooklyn will present the 
failing URL).
 -
 -Try accessing the web-service URLs from a browser via the proxy, or perhaps 
try running brooklyn with proxy disabled:
 -
 -~~~
 -    export http_proxy=
 -    bin/brooklyn launch
 -~~~
 -
 -If a system-level proxy server has been configured, you can instruct brooklyn 
to use the proxy server by passing `-Djava.net.useSystemProxies=true` to the JVM
 -
 -## Service is listening
 -
 -### Service responds
 -Try connecting to the service from the VM itself. For example, `curl 
http://localhost:8080` for a
 -web-service.
 -
 -On dev/test VMs, don't be afraid to install the utilities you need such as 
`curl`, `telnet`, `nc`,
 -etc. Cloud VMs often have a very cut-down set of packages installed. For 
example, execute
 -`sudo apt-get update; sudo apt-get install -y curl` or `sudo yum install -y 
curl`.
 -
 -### Listening on port
 -Check that the service is listening on the port, and on the correct NIC(s).
 -
 -Execute `netstat -antp` (or on OS X `netstat -antp TCP`) to list the TCP 
ports in use (or use
 -`-anup` for UDP). You should expect to see the something like the output 
below for a service.
 -
 -~~~
 -Proto Recv-Q Send-Q Local Address               Foreign Address             
State       PID/Program name   
 -tcp        0      0 :::8080                     :::*                        
LISTEN      8276/java           
 -~~~
 -
 -In this case a Java process with pid 8276 is listening on port 8080. The 
local address `:::8080`
 -format means all NICs (in IPv6 address format). You may also see 
`0.0.0.0:8080` for IPv4 format.
 -If it says 127.0.0.1:8080 then your service will most likely not be reachable 
externally.
 -
 -Use `ip addr show` (or the obsolete `ifconfig -a`) to see the network 
interfaces on your server.
 -
 -For `netstat`, run with `sudo` to see the pid for all listed ports.
 -
 -## Firewalls
 -On Linux, check if `iptables` is preventing the remote connection. On 
Windows, check the Windows Firewall.
 -
 -If it is acceptable (e.g. it is not a server in production), try turning off 
the firewall temporarily,
 -and testing connectivity again. Remember to re-enable it afterwards! On 
CentOS, this is `sudo service
 -iptables stop`. On Ubuntu, use `sudo ufw disable`. On Windows, press the 
Windows key and type 'Windows
 -Firewall with Advanced Security' to open the firewall tools, then click 
'Windows Firewall Properties'
 -and set the firewall state to 'Off' in the Domain, Public and Private 
profiles.
 -
 -If you cannot temporarily turn off the firewall, then look carefully at the 
firewall settings. For
 -example, execute `sudo iptables -n --list` and `iptables -t nat -n --list`.
 -
 -## Cloud firewalls
 -Some clouds offer a firewall service, where ports need to be explicitly 
listed to be reachable.
 -
 -For example, 
 -[security groups for AWS 
EC2](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)
 
 -have rules for the protocols and ports to be reachable from specific CIDRs.
 -
 -Check these settings via the cloud provider's web-console (or API).
 -
 -## Quick test of a listener port
 -It can be useful to start listening on a given port, and to then check if 
that port is reachable.
 -This is useful for testing basic connectivity when your service is not yet 
running, or to a
 -different port to compare behaviour, or to compare with another VM in the 
network.
 -
 -The `nc` netcat tool is useful for this. For example, `nc -l 0.0.0.0 8080` 
will listen on port
 -TCP 8080 on all network interfaces. On another server, you can then run `echo 
hello from client
 -| nc <hostname> 8080`. If all works well, this will send "hello from client" 
over the TCP port 8080,
 -which will be written out by the `nc -l` process before exiting.
 -
 -Similarly for UDP, you use `-lU`.
 -
 -You may first have to install `nc`, e.g. with `sudo yum install -y nc` or 
`sudo apt-get install netcat`.
 -
 -### Cloud load balancers
 -For some use-cases, it is good practice to use the load balancer service 
offered by the cloud provider
 -(e.g. [ELB in AWS](http://aws.amazon.com/elasticloadbalancing/) or the 
[Cloudstack Load Balancer]
 
-(http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/latest/network_setup.html#management-server-load-balancing))
 -
 -The VMs can all be isolated within a private network, with access only 
through the load balancer service.
 -
 -Debugging techniques here include ensuring connectivity from another jump 
server within the private
 -network, and careful checking of the load-balancer configuration from the 
Cloud Provider's web-console.
 -
 -### DNAT
 -Use of DNAT is appropriate for some use-cases, where a particular port on a 
particular VM is to be
 -made available.
 -
 -Debugging connectivity issues here is similar to the steps for a cloud load 
balancer. Ensure
 -connectivity from another jump server within the private network. Carefully 
check the NAT rules from
 -the Cloud Provider's web-console.
 -
 -### Guest wifi
 -It is common for guest wifi to restrict access to only specific ports (e.g. 
80 and 443, restricting
 -ssh over port 22 etc).
 -
 -Normally your best bet is then to abandon the guest wifi (e.g. to tether to a 
mobile phone instead).
 -
 -There are some unconventional workarounds such as [configuring sshd to listen 
on port 80 so you can
 -use an ssh 
tunnel](http://askubuntu.com/questions/107173/is-it-possible-to-ssh-through-port-80).
 -However, the firewall may well inspect traffic so sending non-http traffic 
over port 80 may still fail.
 +{% readj _connectivity.md %}
+ 
diff --cc guide/ops/troubleshooting/going-deep-in-java-and-logs.md
index 8a66ce0,5f2d464..581a27b
--- a/guide/ops/troubleshooting/going-deep-in-java-and-logs.md
+++ b/guide/ops/troubleshooting/going-deep-in-java-and-logs.md
@@@ -70,11 -68,11 +70,11 @@@ that particular task, including its sub
  
  [![Task failure error in the Brooklyn debug 
console.](images/failed-task.png)](images/failed-task-large.png)
  
- By clicking on the `stderr` link, we can see the script failed with the 
following error:
+ By expanding the `stderr` section, we can see the script failed with the 
following error:
  
 -```console
 -/tmp/brooklyn-20180720-121710003-Qh8k-customizing_TomcatServerImpl_i.sh: line 
11: mkrid: command not found
 -```
 +{% highlight console %}
 +/tmp/brooklyn-20150721-132251052-l4b9-customizing_TomcatServerImpl_i.sh: line 
10: mkrid: command not found
 +{% endhighlight %}
  
  This tells us *what* went wrong, but doesn't tell us *where*. In order to 
find that, we'll need to look at the
  stack trace that was logged when the exception was thrown.
@@@ -413,17 -410,12 +412,12 @@@ AttributeSensor<String> CONNECTOR_STATU
  
  Let's go back to the Brooklyn debug console and look for the 
`webapp.tomcat.connectorStatus`:
  
- [![Sensors view in the Brooklyn debug 
console.](images/jmx-sensors.png)](images/jmx-sensors-large.png)
- 
- As the sensor is not shown, it's likely that it's simply null or not set. We 
can check this by clicking
- the "Show/hide empty records" icon (highlighted in yellow above):
- 
- [![All sensors view in the Brooklyn debug 
console.](images/jmx-sensors-all.png)](images/jmx-sensors-all-large.png)
+ [![Sensors view in the Brooklyn debug 
console.](images/jmx-sensors-connector.png)](images/jmx-sensors-connector-large.png)
  
- We know from previous steps that the installation and launch scripts 
completed, and we know the procecess is running,
+ The sensor value is null or not set. We know from previous steps that the 
installation and launch scripts completed, and we know the procecess is running,
  but we can see here that the server is not responding to JMX requests. A good 
thing to check here would be that the
  JMX port is not being blocked by iptables, firewalls or security groups
 -(see the [troubleshooting connectivity 
guide]({{book.path.docs}}/ops/troubleshooting/connectivity.md)). 
 +(see the [troubleshooting connectivity guide](connectivity.html)). 
  Let's assume that we've checked that and they're all open. There is still one 
more thing that Brooklyn can tell us.
  
  

Reply via email to