| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="generator" content="Asciidoctor 2.0.23"> |
| <link rel="icon" type="image/png" href="images/favicon.png"> |
| <title>Management Console</title> |
| <link rel="stylesheet" href="css/asciidoctor.css"> |
| <link rel="stylesheet" href="css/font-awesome.css"> |
| <link rel="stylesheet" href="css/rouge-github.css"> |
| <script> |
| document.addEventListener("DOMContentLoaded", function() { |
| const pathSegments = window.location.pathname.split('/'); |
| if (window.location.hostname == "artemis.apache.org" && pathSegments[pathSegments.length - 2] != "latest") { |
| var message = document.createElement("div"); |
| message.style.margin = "20px"; |
| message.style.textAlign = "center"; |
| message.style.backgroundColor = "#FFFFE0"; |
| message.textContent = "Please be aware that this documentation is out of date. "; |
| |
| var link = document.createElement("a"); |
| link.href = "../../latest"; |
| link.textContent = "Here is the latest documentation."; |
| message.appendChild(link); |
| |
| document.body.insertBefore(message, document.body.firstChild); |
| } |
| }); |
| </script> |
| </head> |
| <body class="book toc2 toc-left"> |
| <div id="header"> |
| <h1>Management Console</h1> |
| <div id="toc" class="toc2"> |
| <div id="toctitle"><a href="index.html">User Manual for 2.50.0</a></div> |
| <ul class="sectlevel1"> |
| <li><a href="#login">1. Login</a></li> |
| <li><a href="#security">2. Security</a></li> |
| <li><a href="#console">3. Console</a> |
| <ul class="sectlevel2"> |
| <li><a href="#navigation-menu">3.1. Navigation Menu</a></li> |
| <li><a href="#navigation-tabs">3.2. Navigation Tabs</a></li> |
| </ul> |
| </li> |
| <li><a href="#artemis-tab">4. Artemis Tab</a> |
| <ul class="sectlevel2"> |
| <li><a href="#status-tab">4.1. Status Tab</a></li> |
| <li><a href="#connections-tab">4.2. Connections Tab</a></li> |
| <li><a href="#sessions-tab">4.3. Sessions Tab</a></li> |
| <li><a href="#producers-tab">4.4. Producers Tab</a></li> |
| <li><a href="#consumers-tab">4.5. Consumers Tab</a></li> |
| <li><a href="#addresses-tab">4.6. Addresses Tab</a></li> |
| <li><a href="#queues-tab">4.7. Queues Tab</a></li> |
| </ul> |
| </li> |
| <li><a href="#artemis-jmx-tab">5. Artemis JMX Tab</a> |
| <ul class="sectlevel2"> |
| <li><a href="#tree-view">5.1. Tree View</a></li> |
| <li><a href="#key-operations-2">5.2. Key Operations</a></li> |
| </ul> |
| </li> |
| <li><a href="#status-logging">6. Status Logging</a></li> |
| </ul> |
| </div> |
| </div> |
| <div id="content"> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Apache Artemis ships by default with a management console. |
| It is powered by <a href="http://hawt.io">Hawt.io</a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Its purpose is to expose the <a href="management.html#management">Management API</a> via a user-friendly web ui.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="login"><a class="anchor" href="#login"></a><a class="link" href="#login">1. Login</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>To access the management console, use a browser and go to the URL <a href=""><a href="http://localhost:8161/console" class="bare">http://localhost:8161/console</a></a>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>A login screen will be presented, if your broker is secure, you will need to use a user with admin role, if it is unsecure simply enter any user/password.</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="images/console-login.png" alt="Apache Artemis Console Login"> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="security"><a class="anchor" href="#security"></a><a class="link" href="#security">2. Security</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>The management console communicates with the broker via HTTP(S). |
| The broker uses the <a href="https://jolokia.org/">Jolokia JMX-HTTP bridge</a> to convert the contents of these HTTP requests into a JMX operations and then returns the results.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Security for Jolokia is configured via <code>etc/jolokia-access.xml</code>. |
| You can read more about the contents of this file in the <a href="https://jolokia.org/reference/html/manual/security.html">Jolokia Security Guide</a>. |
| By default the console is locked down to <code>localhost</code>. |
| Pay particular attention to the <code><cors></code> restrictions when exposing the console web endpoint over the network.</p> |
| </div> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <i class="fa icon-note" title="Note"></i> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Any request with an <code>Origin</code> header using the HTTPS scheme which is ultimately received by Jolokia via HTTP is discarded by default since it is deemed insecure. |
| If you use a TLS proxy that transforms secure requests to insecure requests (e.g. in a Kubernetes environment) then consider changing the proxy to preserve HTTPS and switching the embedded web server to HTTPS. |
| If that isn’t feasible then you can accept the risk by specifying following element</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight nowrap"><code data-lang="xml"><span class="nt"><cors></span> |
| ... |
| <span class="nt"><ignore-scheme/></span> |
| ... |
| <span class="nt"></cors></span></code></pre> |
| </div> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>Problems with Jolokia security are often observed as the ability to login to the console, but the console is blank.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="console"><a class="anchor" href="#console"></a><a class="link" href="#console">3. Console</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Once logged in you should be presented with a screen similar to.</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="images/console-artemis-plugin.png" alt="Apache Artemis Console Artemis Plugin"> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="navigation-menu"><a class="anchor" href="#navigation-menu"></a><a class="link" href="#navigation-menu">3.1. Navigation Menu</a></h3> |
| <div class="paragraph"> |
| <p>On the top right is a small menu area where you will see some icons.</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>question mark</code> |
| This will open a menu with the following items</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>Help</code> This will navigate to the console user guide</p> |
| </li> |
| <li> |
| <p><code>About</code> this will load an about screen, here you will be able to see and validate versions</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| <li> |
| <p><code>person</code> |
| will provide a drop-down menu with</p> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>Preferences</code> this will open the preference page</p> |
| </li> |
| <li> |
| <p><code>Log out</code> self descriptive.</p> |
| </li> |
| </ul> |
| </div> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="navigation-tabs"><a class="anchor" href="#navigation-tabs"></a><a class="link" href="#navigation-tabs">3.2. Navigation Tabs</a></h3> |
| <div class="paragraph"> |
| <p>Running below the navigation menu, you will see several default feature tabs. |
| The first two are specific to the broker. |
| The rest of this document will feature on these two tabs.</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p><code>Artemis</code> This shows detailed information of Apache Artemis specific functionality in a tabular format.</p> |
| </li> |
| <li> |
| <p><code>Artemis JMX</code> This is a JMX view of Apache Artemis specific functionality.</p> |
| </li> |
| <li> |
| <p><code>JMX</code> This exposes the raw Jolokia JMX so you can browse/access all the JMX endpoints exposed by the JVM.</p> |
| </li> |
| <li> |
| <p><code>Runtime</code> This allows you to monitor the thread usage and their state as well as view metrics, etc.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>In previous versions there was a "Connect" tab which could be used to connect to a remote broker from the same console. |
| This was disabled by default for security purposes, but it can be enabled again by removing <code>-Dhawtio.disableProxy=true</code> from <code>artemis.profile</code> (or <code>artemis.profile.cmd</code> on Windows).</p> |
| </div> |
| <div class="paragraph"> |
| <p>You can install further hawtio plugins if you wish to have further functionality.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="artemis-tab"><a class="anchor" href="#artemis-tab"></a><a class="link" href="#artemis-tab">4. Artemis Tab</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Click <code>Artemis</code> in the left navigation bar to see the broker-specific plugin. |
| The <code>Artemis</code> tab shows information in a tabular format. |
| (The Artemis tab won’t appear if there is no broker in this JVM).</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="status-tab"><a class="anchor" href="#status-tab"></a><a class="link" href="#status-tab">4.1. Status Tab</a></h3> |
| <div class="paragraph"> |
| <p>The <code>Status</code> tab shows the basic health of the broker.</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="acceptors"><a class="anchor" href="#acceptors"></a><a class="link" href="#acceptors">4.1.1. Acceptors</a></h4> |
| <div class="paragraph"> |
| <p>This expands to show and expose details of the current configured acceptors.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="broker-network"><a class="anchor" href="#broker-network"></a><a class="link" href="#broker-network">4.1.2. Broker Network</a></h4> |
| <div class="paragraph"> |
| <p>This expands to show and expose details of the current cluster of brokers.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="connections-tab"><a class="anchor" href="#connections-tab"></a><a class="link" href="#connections-tab">4.2. Connections Tab</a></h3> |
| <div class="paragraph"> |
| <p>This shows a table of all the connections from clients and other brokers.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="sessions-tab"><a class="anchor" href="#sessions-tab"></a><a class="link" href="#sessions-tab">4.3. Sessions Tab</a></h3> |
| <div class="paragraph"> |
| <p>This shows a table of all sessions that belong to connected clients.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="producers-tab"><a class="anchor" href="#producers-tab"></a><a class="link" href="#producers-tab">4.4. Producers Tab</a></h3> |
| <div class="paragraph"> |
| <p>This shows a table of all client producers, including messages sent information.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="consumers-tab"><a class="anchor" href="#consumers-tab"></a><a class="link" href="#consumers-tab">4.5. Consumers Tab</a></h3> |
| <div class="paragraph"> |
| <p>This shows a table of all client consumers, including messages delivered information.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="addresses-tab"><a class="anchor" href="#addresses-tab"></a><a class="link" href="#addresses-tab">4.6. Addresses Tab</a></h3> |
| <div class="paragraph"> |
| <p>This shows a table of all the Broker’s addresses</p> |
| </div> |
| <div class="sect3"> |
| <h4 id="key-operations"><a class="anchor" href="#key-operations"></a><a class="link" href="#key-operations">4.6.1. Key Operations</a></h4> |
| <div class="sect4"> |
| <h5 id="creating-a-new-address"><a class="anchor" href="#creating-a-new-address"></a><a class="link" href="#creating-a-new-address">Creating a new Address</a></h5> |
| <div class="paragraph"> |
| <p>To create a new address simply click on the "Create Address" button and fill in the form presented.</p> |
| </div> |
| <div class="paragraph"> |
| <p>You can also perform operations on an address by clicking on the 3 dots and choosing the appropriate operation.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="queues-tab"><a class="anchor" href="#queues-tab"></a><a class="link" href="#queues-tab">4.7. Queues Tab</a></h3> |
| <div class="paragraph"> |
| <p>This shows a table of all the Broker’s queues</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="artemis-jmx-tab"><a class="anchor" href="#artemis-jmx-tab"></a><a class="link" href="#artemis-jmx-tab">5. Artemis JMX Tab</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Click <code>Artemis JMX</code> in the left navigation bar to see the Artemis JMX specific plugin. |
| (The Artemis JMX tab won’t appear if there is no broker in this JVM). |
| The Artemis JMX plugin works very much the same as the JMX plugin however with a focus on interacting with an Artemis broker.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="tree-view"><a class="anchor" href="#tree-view"></a><a class="link" href="#tree-view">5.1. Tree View</a></h3> |
| <div class="paragraph"> |
| <p>The tree view on the left-hand side shows the top level JMX tree of each broker instance running in the JVM. |
| Expanding the tree will show the various MBeans registered by Artemis that you can inspect via the <strong>Attributes</strong> tab.</p> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="key-operations-2"><a class="anchor" href="#key-operations-2"></a><a class="link" href="#key-operations-2">5.2. Key Operations</a></h3> |
| <div class="sect3"> |
| <h4 id="creating-a-new-address-2"><a class="anchor" href="#creating-a-new-address-2"></a><a class="link" href="#creating-a-new-address-2">5.2.1. Creating a new Address</a></h4> |
| <div class="paragraph"> |
| <p>To create a new address simply click on the broker or the address folder in the jmx tree and click on the create tab.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Once you have created an address you should be able to <strong>Send</strong> to it by clicking on it in the jmx tree and clicking on the send tab.</p> |
| </div> |
| </div> |
| <div class="sect3"> |
| <h4 id="creating-a-new-queue"><a class="anchor" href="#creating-a-new-queue"></a><a class="link" href="#creating-a-new-queue">5.2.2. Creating a new Queue</a></h4> |
| <div class="paragraph"> |
| <p>To create a new queue click on the address you want to bind the queue to and click on the create tab.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Once you have created a queue you should be able to <strong>Send</strong> a message to it or <strong>Browse</strong> it or view the <strong>Attributes</strong> or <strong>Charts</strong>. |
| Simply click on the queue in th ejmx tree and click on the appropriate tab.</p> |
| </div> |
| <div class="paragraph"> |
| <p>You can also see a graphical view of all brokers, addresses, queues and their consumers using the <strong>Diagram</strong> tab.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="status-logging"><a class="anchor" href="#status-logging"></a><a class="link" href="#status-logging">6. Status Logging</a></h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>When the broker starts it will detect the presence of the web console and log status information, e.g.:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="nowrap">INFO [org.apache.activemq.artemis] AMQ241002: Artemis Jolokia REST API available at http://localhost:8161/console/jolokia |
| INFO [org.apache.activemq.artemis] AMQ241004: Artemis Console available at http://localhost:8161/console</pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>The web console is detected by inspecting the value of the <code><display-name></code> tag in the war file’s <code>WEB-INF/web.xml</code> descriptor. |
| By default it looks for <code>hawtio</code>. |
| However, if this value is changed for any reason the broker can look for this new value by setting the following system property</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="nowrap">-Dorg.apache.activemq.artemis.webConsoleDisplayName=newValue</pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |