Apache Camel Advent Calendar 21日目の記事は、サポート担当古市が担当します。 テーマは、「hawtio を使ったモニタリング」

Camel CLI を使い Camelルートの状況を監視することはできますが、Web UI で確認されたいというユーザー向けに hawtio が用意されています。Red Hat Fuse 6.x 時代から提供されている管理コンソールですので、馴染みのある方も多いのではと思います。2023年の終わりに hawtio 3.0.0 GA が登場し、内部アーキテクチャーが一新されたのも記憶に新しいです。(執筆時点では、4.6.1 がリリースされています。) そもそも hawtio とは何か、開発者による詳細解説記事がありますので、まずはこちらをご確認ください。
hawtio は、3種類の配備方法があります。
- Camel CLI
- Embedded
- Online
Camel CLI
先ほどご紹介した記事でも触れていますが、camel-jbang を使い実行中のインテグレーションに対して hawtio を使いモニタリングすることができます。
CLIを使いインテグレーションを試しつつ、GUIでメトリックスを確認するといった開発ケースに最適ではないでしょうか。また、kaoto は Camel Java DSL に非対応ですが、hawtio はどの Camel DSL でもグラフ表示しますので、Camel Java DSL ユーザーには嬉しい選択肢かと思います。記事では Discover を使った接続を紹介していますが、マニュアルでコネクションを作成する方法を試してみます。
まず、インテグレーションを起動し、jolokia をアッタッチします。その際に出力されるポート番号(ここでは、8778)はメモしておく必要があります。
% camel init Hello.java
% cat Hello.java
import org.apache.camel.builder.RouteBuilder;
public class Hello extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:java?period=1000")
.setBody()
.simple("Hello Camel from ${routeId}")
.log("${body}");
}
}
% camel run --background Hello.java
Running integration with the following configuration:
--camel-version=4.14.0
Running Camel Main: Hello in background with PID: 3885 (waiting to startup)
Camel Main: Hello (state: Running)
% camel ps
PID NAME READY STATUS AGE TOTAL FAIL INFLIGHT
3885 Hello 1/1 Running 9s 8 0 0
% camel jolokia 3885
Started Jolokia for PID 3885
http://127.0.0.1:8778/jolokia
次に hawtio を起動します。
% camel hawtio
自動でブラウザーが起動するはずですので、コネクションを追加します。
これで、稼働中の Hello.java を WebUI経由でモニタリングできます。

Embedded
runtime に hawtio を組み込み起動する方法です。複数 runtime を起動した場合、それぞれに hawtioが組み込まれます。
Online
Openshift上に hawtio pod を配備し、そこから 稼働中の 各 camel runtime の jolokia と通信しモニタリングする方法です。
https://docs.redhat.com/en/documentation/red_hat_build_of_apache_camel/4.10/html/hawtio_diagnostic_console_guide/setting-up-hawtio-on-openshift-4docs.redhat.com
明日の advent calendar 22日目では、「Camel を trace」 についてご紹介します。 アドベントカレンダーの一覧はこちらです。 qiita.com