The only requirement for a plugin is to provide the entrypoint that Hawtio can load it from, which must conform to the specification of Webpack Module Federation.
Hawtio uses JMX to discover which MBeans are present and then dynamically updates the navigation bars and tabs based on what it finds. The UI is updated whenever Hawtio reloads the MBean, which it does periodically or a plugin can trigger explicitly.
Relying on JMX for discovery doesn’t mean that plugins can only interact with JMX. They can do anything at all that a browser can, e.g. use REST to discover UI capabilities and other plugins.
The following plugins are all included by default in Hawtio:
Adds support for Apache Camel. Allows you to browse Camel contexts, routes, endpoints, etc.; visualise running routes and their metrics; create endpoints; send messages; trace message flows; and profile routes to identify which parts runs fast or slow.
Allows you to connect to local or remote JVMs.
Allows you to control the Java Flight Recorder, see class histogram and access to JVM flags.
Provides the core JMX support for interacting with MBeans, viewing real time attributes, charting, and invoking operations.
Provides support for viewing the logs inside the JVM.
Allows you to view the status of Quartz schedulers and configure them. Also allows you to configure and fire jobs and triggers from the console. If you use Camel Quartz component with your Camel application, this plugin will be automatically enabled.
Provides general overview of the Java process including threads, system properties, and key metrics.
Shows information about the Spring Boot application.
The following plugins are developed by external communities.
- Apache ActiveMQ Artemis plugin
Apache ActiveMQ Artemis ships with its own web management console, which is built on top of Hawtio with an external plugin that provides the dedicated view for Artemis brokers. You can navigate the acceptors and addresses through the console and operate on them. See Artemis User Manual - Management Console for more information.
You can also extend the Hawtio capabilities by developing a custom plugin.
Typically, plugin development involves TypeScript, React, and PatternFly v4. For now, we have a few examples that demonstrate how you can develop a custom plugin to extend Hawtio.
- Sample plugin within the Hawtio project examples
The simplest form of a Hawtio plugin. It packages itself as a JAR, and then can be used by including it as a dependency in a Java project.
- Sample plugin for Spring Boot
This sample demonstrates how to write and use a custom Hawtio plugin in a Spring Boot application.
- Sample plugin as a WAR application
This sample demonstrates how to write a custom Hawtio plugin as a WAR file, which can be later deployed to an application server such as Jetty, WildFly, and Tomcat.