Hawtio和Apache JClouds

介绍

我最近花了一些时间为Hawtio开发 Apache Jclouds插件。 尽管还有很多待完成的工作,但我无法激动,想分享……

这个Hawtio到底是什么?

每当我注意到一个很酷的开源项目时,我通常都会订阅邮件列表,以便我可以更好地了解项目的进度,方向等。迟早总会有一封电子邮件以“ [Discuss] ”为主题– Webconsole for our cool project ”。

这样的电子邮件经常以冗长的讨论结束,这些讨论是关于最佳使用什么Web框架,目标平台应该是什么以及控制台如何与上游/下游项目集成。

一个很好的例子是Apache ServiceMix 。 ServiceMix在Apache Karaf上运行, Apache KarafApache 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用户界面中添加一个新选项卡:

Jclouds主插件页面

Jclouds主插件页面

EC2 Api详细信息页面

EC2 Api详细信息页面

从那里,用户可以浏览所有已安装的Apache Jclouds提供程序, API和服务。 例如,如果您使用MangementLifecycle模块创建了计算服务上下文,则可以在“ 计算服务 ”标签下看到它:

计算服务列表-Amazon AWS和存根服务。

计算服务列表– Amazon AWS和存根服务。

通过选择一种可用服务,将显示一个详细信息栏,该栏可帮助您导航到所有特定于服务的选项卡。 对于计算服务,其:

  • 节点数

    所有正在运行的节点的详细列表,能够重新引导,销毁,挂起和恢复节点。

    节点数

    节点数

  • 图片

    图像列表,带有操作系统过滤器。

    图片

    图片

  • 地点

    所有可分配位置的列表

    屏幕截图2013年7月5日下午1.09.45

    该插件不是特定于计算服务的。 它还支持Blobstore。 例如,以下是我的一个S3存储桶的视图:

    Blobstore浏览器

    Blobstore浏览器

混合搭配

我真正喜欢Hawtio的地方在于,它具有广泛的开箱即用的插件 ,您可以将它们混搭使用。 这是一个例子:

“几年前,我创建了一个将Jclouds与Apache Camel一起使用的示例,以自动发送有关在云中运行实例的电子邮件通知。”

Hawtio还提供了一个Apache Camel插件,因此我们可以直观地查看,编辑或修改发送通知的示例。 很棒的是,在此示例中,我们使用了Hawtio托管的计算服务:

原始示例可以在使用Apache Camel的Cloud Notification中找到。

轮询EC2以获取正在运行的实例并发送电子邮件通知的路由的直观表示

轮询EC2以获取正在运行的实例并发送电子邮件通知的路由的直观表示

可以与jclouds插件一起使用的另一个很酷的插件是“ Logs插件” ,该日志插件使您可以搜索,浏览和过滤日志,甚至查看与日志条目关联的源:

在日志中搜索与jclouds相关的错误

在日志中搜索与jclouds相关的错误

生成日志条目的代码

生成日志条目的代码

结语

这只是jclouds插件的初稿,还有更多很酷的东西要添加,例如执行脚本,下载blob以及创建新服务的更好方法(已经支持了最后一个,但可以进行改进)。

如果您想了解更多有关Hawtio的信息 ,可以看看James Strachan演示的基于骆驼的iPaas ,它基本上是Hawtio + 保险丝织物 + Apache Camel

参考:来自Ioannis Canellos博客博客的JCG合作伙伴 Ioannis Canellos的Hawtio和Apache JClouds

翻译自: https://www.javacodegeeks.com/2013/10/hawtio-apache-jclouds.html

aliyun-Jclouds访问阿里云服务的 Jclouds 组件库 Maven<dependencies>   <dependency>     <groupId>io.github.aliyun-beta</groupId>     <artifactId>aliyun-ecs</artifactId>     <version>1.0.0</version>   </dependency>   <dependency>     <groupId>io.github.aliyun-beta</groupId>     <artifactId>aliyun-oss</artifactId>     <version>1.0.0</version>   </dependency>   <dependency>     <groupId>io.github.aliyun-beta</groupId>     <artifactId>aliyun-slb</artifactId>     <version>1.0.0</version>   </dependency> </dependencies> Usage ComputeServiceComputeService computeService; String provider = "aliyun-ecs"; String key = "Your AccessKey"; String secret = "Your AccessKeySecret"; ComputeServiceContext context = ContextBuilder       .newBuilder(provider)       .credentials(key, secret)       .buildView(ComputeServiceContext.class); computeService = context.getComputeService(); BlobStoreBlobStore blobStore; String provider = "aliyun-oss"; String key = "Your AccessKey"; String secret = "Your AccessKeySecret"; BlobStoreContext context = ContextBuilder       .newBuilder(provider)       .credentials(key, secret)       .buildView(BlobStoreContext.class); blobStore = context.getBlobStore(); LoadBalancerServiceLoadBalancerService loadBalancerService; String provider = "aliyun-slb"; String key = "Your AccessKey"; String secret = "Your AccessKeySecret"; LoadBalancerServiceContext context = ContextBuilder       .newBuilder(provider)       .credentials(key, secret)       .buildView(LoadBalancerServiceContext.class); loadBalancerService = context.getLoadBalancerService(); Buildmvn package -DskipTests 标签:阿里云
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值