Статьи

Hawtio & Apache jClouds

 Введение В
последнее время я некоторое время работал над  плагином Apache Jclouds  для  Hawtio . Пока еще предстоит много работы, я не мог удержаться от волнения и хотел поделиться …

Что это вообще за Hawtio?

Всякий раз, когда на меня обращают внимание на интересный проект с открытым исходным кодом, я обычно подписываюсь на списки рассылки, чтобы лучше понять ход, направление и т.д. проектов. Рано или поздно всегда появляется электронное письмо с темой » [Обсудить] — Веб-консоль для нашего крутого проекта ».

Такие электронные письма нередко заканчиваются длительной дискуссией о том, какой веб-фреймворк лучше всего использовать, какой должна быть целевая платформа и как можно интегрировать консоль в проекты upstream / downstream.

Очень хороший пример —  Apache ServiceMix . ServiceMix работает на Apache Karaf , который работает на Apache Felix,  а также встраивает  Apache ActiveMQ,  и каждый из этих проектов имеет свою собственную веб-консоль.

Количество консолей становится настолько большим, что пользователям приходится нанимать личную помощь, чтобы отслеживать URL-адреса каждой веб-консоли. Ну, может быть, это преувеличение, но вы поняли. И если мы также примем во внимание, что некоторые проекты привязаны к определенной среде выполнения, а другие нет, тогда у нас идеальный шторм веб-консоли.

Hawtio  решает эту проблему, предоставляя облегченную модульную веб-консоль HTML5 с множеством плагинов.  Hawtio может работать везде, так как он не привязан к конкретной среде выполнения и является модульным, что означает, что его довольно легко писать и подключать ваши собственные плагины.

Написание плагинов для Hawtio

Hawtio  — это полноценный клиентский фреймворк. Всякий раз, когда требуется связь с бэкэндом, он может использовать отдых. Чтобы упростить задачу, он также использует  Jolokia,  которая предоставляет JMX с JSON через HTTP. Это позволяет довольно легко подключать фреймворки, даже если они еще не предоставляют интерфейс отдыха, а предоставляют доступ к JMX.

После того, как связь с бэкэндом отсортирована, создать плагин довольно просто.  Hawtio  использует  AngularJS , что делает разработку веб-приложений настоящим удовольствием.

Плагин

Jclouds Apache Jclouds пока не имеет интерфейса отдыха и не поддерживает JMX. Ну, на самом деле он имеет подключаемую поддержку JMX начиная с версии 1.6.1 с инкубацией. Все, что вам нужно сделать, это создать   контекст Apache Jclouds с помощью модуля ManagementLifecycle:

ContextBuilder builder = ContextBuilder.newBuilder(providerOrApi).
                                       .credentials(identity, credential)
                                       .modules(ImmutableSet.<Module>of(new ManagementLifecycle(BaseManagementContext.INSTANCE)))
                                       .build();

Примечание. Пользователи, использующие проект jclouds-karaf, получат его бесплатно (вообще ничего не нужно делать).

Когда используется плагин ManagementLifecycle, он создает и регистрирует  Apache Jclouds MBeans  в JMX. Если эти mbeans обнаружены  Hawtio , в  пользовательском интерфейсе Hawtio будет добавлена ​​новая вкладка  :

Основная страница плагина Jclouds

EC2 Api подробная информация о странице

Оттуда пользователь может просматривать все установленные 
 провайдеры
Apache Jclouds , apis и сервисы. Например, если вы создали контекст службы вычислений с помощью модуля MangementLifecycle, вы сможете увидеть его на вкладке «
Служба вычислений »:

Список вычислительных сервисов — сервис Amazon AWS & A Stub.

При выборе одного из доступных сервисов появляется панель сведений, которая помогает вам перейти ко всем вкладкам, относящимся к конкретному сервису. Для вычислительной службы:

Узлы

Подробный список всех запущенных узлов с возможностью перезагрузки, уничтожения, приостановки и возобновления работы узла.

Вершины

Изображений


Список изображений с фильтром операционной системы.
Изображений
Места

Список всех назначаемых мест

Плагин не привязан к конкретным сервисам.
Он также поддерживает магазины. Например, вот вид одного из моих ковшей S3:
Браузер интернет-магазина
Смешивать и сочетать

Что мне действительно нравится в 
Hawtio, так  это то, что у него есть широкий выбор
готовых
плагинов, которые вы можете смешивать и сочетать. Вот пример:

«
Пару лет назад я создал пример использования Jclouds с Apache Camel  для автоматической отправки уведомлений по электронной почте о запущенных экземплярах в облаке ».

Hawtio также предоставляет 
 плагин
Apache Camel , поэтому мы можем визуально просматривать, редактировать или изменять пример, который отправляет уведомления. Самое замечательное, что в этом примере мы используем
сервис управляемых вычислений Hawtio :

Оригинальный пример может быть найден в 
Cloud Notification с Apache Camel .
Визуальное представление маршрута, который опрашивает EC2 на наличие запущенных экземпляров и отправляет уведомления по электронной почте

Другой замечательный плагин, который можно использовать вместе с плагином jclouds, — это
«Плагин журналов». Плагин журналов позволяет искать, просматривать и фильтровать ваши журналы и даже видеть источник, связанный с записями журнала:

Поиск в журналах ошибок, связанных с jclouds
Код, который сгенерировал запись в журнале

Эпилог

Это только первый набросок плагина jclouds, и есть более интересные вещи, которые нужно добавить, такие как выполнение скриптов, загрузка больших двоичных объектов, а также лучший способ создания новых сервисов (последний уже поддерживается, но может быть действительно улучшен).

Если вы хотите увидеть больше
Hawtio в действии, вы можете взглянуть на демонстрацию Джеймсом Стрэченом iPaas на базе
Camel, который в основном представляет собой 
Hawtio  +
Fuse Fabric
Apache Camel .