#chiroito ’s blog

Java を中心とした趣味の技術について

Infinispan 10 のメトリックを Prometheus と Grafana で可視化する

システムを運用する時や検証する時にオシャレなGUIで状況を確認したいことはないでしょうか。Infinispan 10にはこの様な要求を実現する機能が含まれています。今回はその機能を使って Grafana でオシャレなダッシュボードを作れるようにするところまで紹介します。

なお、Infinispan 10 では状況を確認するためのメトリックは JMX から取得しています。どんなメトリックがあるか知りたい場合はこちらをご覧ください。後述するメトリックを取得する URL にも簡単な HELP が出力されますので、合わせてそちらからも確認できます。

JMX Components (Infinispan 10.1 API)

環境

試した環境はこんな感じです。

  • Infinispan 10.1.3.Final
  • Prometheus 2.16.0
  • Grafana 6.6.1

ちなみに私は上2つをWindows上で起動して、Grafanaはコンテナとして起動しました。

これらを以下の様に接続していきます。

f:id:chiroito:20200304171929p:plain

Infinispan と Prometheus の連携

Infinispan 10 では、Prometheus が取り込めるフォーマットでメトリックを標準で公開しています。

http://<IP>:<port>/metricsというURLに接続すると以下の様な感じで取得できます。

f:id:chiroito:20200304172903p:plain

まずは、Prometheus でこの URL から情報を取得できるようにします。

Prometheus のホームディレクトリにあるprometheus.ymlに以下のように追加します。IPやポート番号はInfinispanの環境に合わせて適宜変更してください。今回の環境ではIPは192.168.0.64、ポート番号は11222です。

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
#ここから下を追加
  - job_name: 'infinispan-server'
    static_configs:
      - targets: ['192.168.0.64:11222']

設定ができたら Prometheus を再起動してから、Prometheusへアクセスしてみましょう。Prometheus はデフォルトでは 9090 番ポートでリッスンしてますのでブラウザでhttp://<IP>:9090/へアクセスします。

アクセスできたら、Infinispan から読込まれたメトリクスを確認してみます。今回は、クラスタを構成するノード数を表すvendor_cache_manager_default_cluster_sizeというメトリクスを確認しましょう。 以下の図のようにvendor_cache_manager_default_cluster_sizeを入力して、Executeボタンを押します。図のようにElement のところに何かが表示されれば成功です。

f:id:chiroito:20200304174422p:plain

これで、Infinispan と Prometheus の連携は完了です。

Prometheus と Grafana の連携

次は、Prometheus と Grafana の連携をしてみます。これは検索すればいくらでも例が出てきます。

Grafana はデフォルトでは 3000 番ポートでリッスンしてますのでブラウザでhttp://<IP>:3000/へアクセスします。

まずは、データソースを作ります。

URL には Prometheus の URL を指定します。下の方にSave & Testというボタンがありますのでテストして保存しましょう。

注:Grafana からアクセスできる IP を指定しましょう。

f:id:chiroito:20200304180003p:plain

次にダッシュボードを作成します。

Prometheus と同様に今回は、クラスタを構成するノード数を表すvendor_cache_manager_default_cluster_sizeというメトリクスを確認しましょう。Metricsの右側のテキスト夫イールドにvendor_cache_manager_default_cluster_sizeを入力します。

f:id:chiroito:20200304180712p:plain

これで全て完了です。オシャレなGUIでメトリックを確認できるようになりました。