hawtioがSpring Boot 2に対応し、ActuatorがWebコンソールで利用できるようになっていました

# はじめに

hawtioはJavaアプリケーションをモニタリングできるWebコンソールを提供します。
2018年11月にリリースされたhawtio 2.3.0では、Change Logに記載のとおりSpring Boot 2に対応しています。
※Spring Boot 1.xには以前から対応していました。

　![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/640099d7-9403-220a-d418-ff4452376146.png)
　https://github.com/hawtio/hawtio/blob/hawtio-2.3.0/CHANGES.md

Spring Boot 2用のサンプルアプリケーションが用意されていたので、動かしてみた時のメモを記載していきます。


# Spring Boot 2対応

Spring Boot 2対応したことによって何ができるのか？

Spring Bootには、Spring Boot Actuatorという機能があり、これを利用するとシステムの状態やメトリクスを確認するためのエンドポイントが追加されます。ActuatorのエンドポイントにアクセスするとJSONで情報を取得できます。
hawtioでは、このActuatorのエンドポイントから取得した情報をWebコンソールに表示したり、操作することができます。

ただし、Actuatorのエンドポイントの全てに対応しているわけではなく、対応しているのは以下の3つです。

/health
　アプリケーションの状態確認用。アプリケーションの起動時間、ディスク使用量等の情報が取得できる。

/trace
 HTTPリクエストの情報が取得できる。

/loggers
 loggerの設定の表示とログレベルの変更ができる。



# Spring Boot 2用のサンプルアプリケーションを試す。

サンプルアプリケーションの説明は以下に記載があります。

[Hawtio Spring Boot 2 Example](https://github.com/hawtio/hawtio/tree/hawtio-2.3.0/examples/springboot)


まず、hawtio 2.3.0のレポジトリをコピーします。

```
git clone -b hawtio-2.3.0 https://github.com/hawtio/hawtio
```

アプリケーションを実行します。

```
cd hawtio\examples\springboot
mvn spring-boot:run
```
※JAVA_HOMEの設定とmvnがインストール済みであり、パスに追加されていること。

warファイルを作成して実行する場合は以下のように実行する。

```
mvn clean package
cd target
java -Dhawtio.authenticationEnabled=false hawtio-example-springboot-2.3.0.war
```

サンプルアプリケーションはApache Camelフレームワークを使用しており、以下のように画面にHello World!と表示します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/0fd374a0-2033-042c-b8cf-9ffa7ed9c148.png)

また、以下のURLにアクセスするとブラウザにHello World!と表示されます。

http://localhost:10000/

![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/9b31bd75-d234-5fb2-809c-4f45acd02354.png)

# hawtioのWebコンソールを見る

早速、hawtioのWebコンソールにアクセスします。
サンプルアプリケーションでは認証なしになっているので、以下のURLにアクセスするとすぐに利用できます。

http://localhost:10001/actuator/hawtio/index.html

表示された画面は以下のとおりで、メニューにSpring Bootが表示されています。
他にもサンプルアプリケーションがApache Camelを使用しているのでCamel、hawtioのデフォルトプラグインのJMX等がメニューに表示されています。
※サンプルアプリケーションにはサンプルプラグインも入っていたが、それはメニューに表示されず。理由は不明。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/8898963f-c7fe-1175-3f92-d92b157ba23d.png)

メニューからSpring Bootを選択すると、以下のような画面が表示されます。Actuatorのhealth、loggers、traceのエンドポイントに対応した3つのタブが表示されています。

Healthタブは以下のように表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/92133108-2282-5226-eef2-b925ab617fb8.png)

Loggersタブは以下のように表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/79155caa-4679-7b69-b06f-07be98b64724.png)

Traceタブは以下のように表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/179607/bc1f8a00-b812-9d04-e351-1b3b50f9801c.png)

# サンプルプログラムを確認する

長いので省略しますが、以下の2つがポイント。

```pom.xml
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!-- hawtio -->
    <dependency>
      <groupId>io.hawt</groupId>
      <artifactId>hawtio-springboot</artifactId>
    </dependency>
```

application.propertiesは次の2行がポイント。
- management.endpoints.web.exposure.include=hawtio,jolokia
- hawtio.authenticationEnabled=false

「management.endpoints.web.exposure.include」でエンドポイントにhawtio,jolokiaを追加、「hawtio.authenticationEnabled=false」でhawtioの認証をOFFにしています。

```examples/springboot/src/main/resources/application.properties
server.port=10000
management.server.port=10001

management.endpoints.web.exposure.include=hawtio,jolokia

logging.level.io.hawt=INFO
logging.level.org.springframework=WARN
logging.level.io.undertow=WARN

camel.springboot.name=SampleCamel
timer.period=10000
hawtio.authenticationEnabled=false
```



# 最後に

Spring BootにはSpring Boot AdminというWebコンソールがあり、提供する機能範囲が一部重なっており、hawtioとの比較対象になるかと思います。

Spring Boot Adminがサーバ/クライアントであるのに対して、hawtioはSpring Bootのアプリケーションへ組み込んですぐに使えるのが利点になります。どちらもプロダクション環境で使用したことはないのですが、開発環境で使うならhawtioが便利そう。
その他、hawtioはApache Camel、ActiveMQ、JMX等の標準プラグインがあるので、それらを利用するのであればhawtioの方が良さそうです。

# 参考

- [Hawtio Spring Boot 2 Example](https://github.com/hawtio/hawtio/tree/hawtio-2.3.0/examples/springboot)

- [Hawtio with Spring Boot](https://jamesnetherton.github.io/2018/11/14/hawtio-spring-boot-support/)