|
The ActiveMQ Web Console is a web based administration tool for working with ActiveMQ. When used with the JMX support it can be an invaluable tool for working with ActiveMQ
Running the Web Console on ActiveMQ 5.0 or laterWe have integrated the Web Console into the binary distribution. So Download a binary distribution then follow the instructions for Version 5 Run Broker. Then you can point your web browser at the URL And hey presto, you should now have the Web Console running. In the event that you are running a standalone broker and the Web Console is not reachable, check that the following lines are included in your ActiveMQ config xml: <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>file:${activemq.base}/conf/credentials.properties</value> </property> </bean> <!-- your broker config goes here --> <import resource="${activemq.base}/conf/jetty.xml" /> The import will start up an embedded Jetty container. To verify that the config is working, the following should appear in your ActiveMQ console/logs on next startup: INFO | jetty-7.1.6.v20100715 INFO | ActiveMQ WebConsole initialized. As of 5.3 or later you should also have the Camel Web Console available for use to browse your endpoints and Enterprise Integration Patterns at the following URL Changing the portIf you want to change the port number of the web application try the following mvn jetty:run -Djetty.port=9090 You can also set the port with the port attribute in the nioConnector tag in the activemq.xml configuration file: <connectors> <nioConnector port="8161" /> </connectors> Securing Web ConsoleStarting with ActiveMQ 5.4.0, Web Console comes pre-configured with basic access authentication setup. It's turned off by default, so you need to turn it on explicitly, but it's really simple. Go to the ${ACTIVEMQ_HOME}/conf/jetty.xml and find the following line <property name="authenticate" value="false" /> and change it to <property name="authenticate" value="true" /> That's it. From that point on, web server will look at ${ACTIVEMQ_HOME}/conf/jetty-realm.properties file trying to match provided credentials with those listed in the file. By default, you can access the web console with admin/admin credentials. That can be changed (and more users can be added) in the jetty-realm.properties file. You may also wish to enable ssl connector to further secure access to the web console and other web resources of the broker. To do that, go to the ${ACTIVEMQ_HOME}/conf/jetty.xml and make sure you have the secure connector enabled. In versions 5.7 and newer just uncomment a predefined config. In any case make sure your connectors settings looks similar to this. <property name="connectors"> <list> <bean id="Connector" class="org.eclipse.jetty.server.nio.SelectChannelConnector"> <property name="port" value="8161" /> </bean> <bean id="SecureConnector" class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> <property name="port" value="8162" /> <property name="keystore" value="file:${activemq.conf}/broker.ks" /> <property name="password" value="password" /> </bean> </list> </property> Standard connector is left enabled in this example, but you can remove it in your configuration if you wish. Note that these changes will affect the whole web server, so if you're using REST API or blob fileserver be sure to provide appropriate credentials. If you're interested in securing 5.3.1 (and 5.3.2) Web consoles, take a look at this article. For older versions, please refer to this article Starting the Web Console in a seperate VM/in a Web-ContainerIf you want to start the web-console in a different process than ActiveMQ (f.e. for security or reliability reasons) then you've two options: Configure using System-PropertiesYou need to configure the following system properties:
These may be specified on the maven command line with mvn jetty:run -Dwebconsole.type=properties..... or deploy the activemq-web-console.war into a Web-Container (f.e. Jetty, Tomcat) and follow the example below. Configure using JNDIDeploy the activemq-web-console.war into a Web-Container (f.e. Jetty, Tomcat) and specify the following System property
Don't forget to add the activemq-all jar to your webcontainer's shared lib directory (common/lib for tomcat, lib for jetty). Failover configurationsIt's possible to configure the web-console to monitor master/slave-broker setup. To do so use the normal failover: Syntax for the JMS-URL and a comma separated list of JMX-URLs. This works with the System-property- and with the JNDI-configuration. Example configuration using Jetty 6To start the web-console in a dedicated jetty use the following startup-script (execute from the jetty-root-dir):
java -Dwebconsole.type=properties -Dwebconsole.jms.url=tcp://localhost:61616 -Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi -Dwebconsole.jmx.user=system -Dwebconsole.jmx.password=manager -jar start.jar
If the web-console should be password protected (BASIC Authentication) use the standard jetty mechanisms: <Set name="UserRealms"> <Array type="org.mortbay.jetty.security.UserRealm"> <Item> <New class="org.mortbay.jetty.security.HashUserRealm"> <Set name="name">ActiveMQ Realm</Set> <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/amqrealm.properties</Set> </New> </Item> </Array> </Set> 2. Configure the users/passwords in the amqrealm.properties in jetty/etc myAdmin: secret,amqAdmin 3. Configure the security constraint either in the webconsoles web.xml or in jetty's webdefault.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>A Protected Page</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>amqAdmin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>ActiveMQ Realm</realm-name>
</login-config>
This is just a sample configuration of a password protected webconsole. Instead of the HashUserRealm one could also use a KerberosRealm or a JDBCRealm. Example configuration using TomcatTo start web console in Tomcat 5.x use the following steps:
JAVA_OPTS="-Dwebconsole.type=properties \ -Dwebconsole.jms.url=tcp://localhost:61616 \ -Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi \ -Dwebconsole.jmx.user= \ -Dwebconsole.jmx.password="
Using the Web ConsoleThe web console is depicted in the following image: To get started, go to the Send page and send a message to a queue (you can send multiple if you like, see the message count field). Now that you have sent messages to a queue you should be able to Browse then and view the queue as an RSS or Atom feed. The Web Console has many features relative to it's tabs as shown in the following table.
Running the Web Console on earlier versionsThe 5.3 webconsole does not run unmodified against a remote activemq 4.*. However, it's easy to patch to avoid the new properties. See https://issues.apache.org/activemq/browse/AMQ-2145 To run the ActiveMQ Web Console on earlier versions of ActiveMQ follow these instructions
#mvn clean install -Dmaven.test.skip=true cd activemq-web-console patch -p0<AMQ-2145.diff mvn jetty:run -Dwebconsole.type=properties -Dwebconsole.jms.url=tcp://localhost:61616 \ -Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi -Dwebconsole.jmx.user=system \ -Dwebconsole.jmx.password=manager Most likely everyone except geronimo 2.1.x users will have upgraded to activemq 5.x. Note that the jms connector url for geronimo is
-Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/JMXConnector
Now point your browser at http://localhost:8080/ (or the appropriate port) And you should be in business! |