Введение В
последнее время я некоторое время работал над плагином 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 :
Визуальное представление маршрута, который опрашивает EC2 на наличие запущенных экземпляров и отправляет уведомления по электронной почте |
Другой замечательный плагин, который можно использовать вместе с плагином jclouds, — это
«Плагин журналов». Плагин журналов позволяет искать, просматривать и фильтровать ваши журналы и даже видеть источник, связанный с записями журнала:
Поиск в журналах ошибок, связанных с jclouds |
Код, который сгенерировал запись в журнале |
Эпилог
Это только первый набросок плагина jclouds, и есть более интересные вещи, которые нужно добавить, такие как выполнение скриптов, загрузка больших двоичных объектов, а также лучший способ создания новых сервисов (последний уже поддерживается, но может быть действительно улучшен).
Если вы хотите увидеть больше
Hawtio в действии, вы можете взглянуть на демонстрацию Джеймсом Стрэченом iPaas на базе
Camel, который в основном представляет собой
Hawtio +
Fuse Fabric +
Apache Camel .