Статьи

Hawtio & Apache JClouds

Вступление

В последнее время я провел некоторое время, работая над плагином Apache Jclouds для 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:

1
2
3
4
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

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

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

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

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

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

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

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

  • Вершины

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

    Вершины

    Вершины

  • Изображений

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

    Изображений

    Изображений

  • Места

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

    Снимок экрана 2013-07-05 в 1.09.45 PM

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

    Браузер интернет-магазина

    Браузер интернет-магазина

Смешивать и сочетать

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

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

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

Оригинальный пример может быть найден в Cloud Notification с Apache Camel .

Визуальное представление маршрута, который опрашивает EC2 на наличие запущенных экземпляров и отправляет уведомления по электронной почте

Визуальное представление маршрута, который опрашивает EC2 на наличие запущенных экземпляров и отправляет уведомления по электронной почте

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

Поиск в журналах ошибок, связанных с jclouds

Поиск в журналах ошибок, связанных с jclouds

Код, который сгенерировал запись в журнале

Код, который сгенерировал запись в журнале

эпилог

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

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