介绍
我最近花了一些时间为Hawtio开发 Apache Jclouds插件。 尽管还有很多待完成的工作,但我无法激动,想分享……
这个Hawtio到底是什么?
每当我注意到一个很酷的开源项目时,我通常都会订阅邮件列表,以便我可以更好地了解项目的进度,方向等。迟早总会有一封电子邮件以“ [Discuss] ”为主题– Webconsole for our cool project ”。
这样的电子邮件经常以冗长的讨论结束,这些讨论是关于最佳使用什么Web框架,目标平台应该是什么以及控制台如何与上游/下游项目集成。
一个很好的例子是Apache ServiceMix 。 ServiceMix在Apache Karaf上运行, Apache Karaf在Apache Felix上运行,并且还嵌入Apache ActiveMQ,并且这些项目中的每个项目都有其自己的Web控制台 。
控制台的数量增长得如此之大,以至于用户不得不雇用个人帮助来跟踪每个Web控制台的URL。 好吧,也许这是一个夸大的说法,但您明白了。 而且,如果我们还考虑到某些项目绑定到特定的运行时,而其他项目则没有,那么我们将迎来一场完美的Web控制台风暴。
Hawtio通过提供带有大量插件的轻量级HTML5模块化Web控制台来解决此问题。 Hawtio可以在任何地方运行,因为它没有绑定到特定的运行时,而且它是模块化的,这意味着它很容易编写和挂接自己的插件。
为Hawtio编写插件
Hawtio是一个完整的客户端框架。 每当需要与后端通信时,都可以使用rest。 为了使事情变得更容易,它还使用Jolokia ,它通过HTTP通过JSON公开JMX。 即使框架没有提供rest接口,而是通过JMX公开内容,这也使钩住框架变得非常容易。
一旦与后端的通信进行排序,就很容易创建一个插件。 Hawtio使用AngularJS ,这使webapps的开发成为真正的乐趣。
Jclouds插件
Apache Jclouds还没有rest接口,也没有JMX支持。 实际上,从1.6.1发行版开始,它就具有可插入的JMX支持。 您需要做的就是使用ManagementLifecycle模块创建一个Apache Jclouds Context:
ContextBuilder builder = ContextBuilder.newBuilder(providerOrApi)..credentials(identity, credential).modules(ImmutableSet.<Module>of(new ManagementLifecycle(BaseManagementContext.INSTANCE))).build();
注意:使用jclouds-karaf项目的用户将免费获得该文件(根本不需要做任何事情)。
使用ManagementLifecycle插件时,它将创建Apache Jclouds MBean并将其注册到JMX。 如果Hawtio发现了这些mbean ,则会在Hawtio用户界面中添加一个新选项卡:
从那里,用户可以浏览所有已安装的Apache Jclouds提供程序, API和服务。 例如,如果您使用MangementLifecycle模块创建了计算服务上下文,则可以在“ 计算服务 ”标签下看到它:
通过选择一种可用服务,将显示一个详细信息栏,该栏可帮助您导航到所有特定于服务的选项卡。 对于计算服务,其:
- 节点数
所有正在运行的节点的详细列表,能够重新引导,销毁,挂起和恢复节点。
- 图片
图像列表,带有操作系统过滤器。
- 地点
所有可分配位置的列表
该插件不是特定于计算服务的。 它还支持Blobstore。 例如,以下是我的一个S3存储桶的视图:
混合搭配
我真正喜欢Hawtio的地方在于,它具有广泛的开箱即用的插件 ,您可以将它们混搭使用。 这是一个例子:
“几年前,我创建了一个将Jclouds与Apache Camel一起使用的示例,以自动发送有关在云中运行实例的电子邮件通知。”
Hawtio还提供了一个Apache Camel插件,因此我们可以直观地查看,编辑或修改发送通知的示例。 很棒的是,在此示例中,我们使用了Hawtio托管的计算服务:
原始示例可以在使用Apache Camel的Cloud Notification中找到。
可以与jclouds插件一起使用的另一个很酷的插件是“ Logs插件” ,该日志插件使您可以搜索,浏览和过滤日志,甚至查看与日志条目关联的源:
结语
这只是jclouds插件的初稿,还有更多很酷的东西要添加,例如执行脚本,下载blob以及创建新服务的更好方法(已经支持了最后一个,但可以进行改进)。
如果您想了解更多有关Hawtio的信息 ,可以看看James Strachan演示的基于骆驼的iPaas ,它基本上是Hawtio + 保险丝织物 + Apache Camel 。
翻译自: https://www.javacodegeeks.com/2013/10/hawtio-apache-jclouds.html