OpenShift の Pod を動的に見つけて、Pod 上の JBoss EAP の統計情報を CLI で取得する方法

OpenShift の Pod 名は環境によって異なるため、Pod を動的に見つけてその Pod 上で稼働している JBoss EAP の統計情報を CLI で取得するプチ Tips を整理します。

準備作業

  • Pod 情報を確認します
$ oc get pod
NAME                              READY   STATUS      RESTARTS   AGE
eap-app-1-deploy                  0/1     Completed   0          5d21h
eap-app-1-x77tm                   1/1     Running     4          5d21h
eap-app-2-build                   0/1     Completed   0          5d21h
eap-app-build-artifacts-1-build   0/1     Completed   0          5d21h


  • エンドポイントを確認します
$ oc get endpoints
NAME              ENDPOINTS          AGE
eap-app           10.217.0.14:8080   5d21h
eap-app-metrics   10.217.0.14:9799   5d21h
eap-app-ping      10.217.0.14:8888   5d21h


  • アクティブなセッションを生成するために任意のアプリを一回実行します
    (補足)Pod 名を指定し、Pod の中で curl を用いて取得したエンドポイントを呼び出しています。
$ oc rsh eap-app-1-x77tm curl -kv http://10.217.0.14:8080/index.jsf
*   Trying 10.217.0.14...
* TCP_NODELAY set
* Connected to 10.217.0.14 (10.217.0.14) port 8080 (#0)

   -- 省略 --

</html>


JBoss EAP のセッション数を取得

  • Running 状態の Pod を選んで JBoss EAP のアクティブセッション数(active-sessions)を取得します
    (補足)ROOT.war の箇所は利用するアプリに合わせて適宜読み替えてください。
$ oc rsh `oc get pod | grep Running | awk '{print $1}'` /opt/eap/bin/jboss-cli.sh -c --commands="/deployment=ROOT.war/subsystem=undertow:read-attribute(name=active-sessions)"
{
    "outcome" => "success",
    "result" => 1
}


まとめ

OpenShift や JBoss EAP の機能と言うよりシェルスクリプトでのバッククォート(``)の使い方を説明するようなプチ Tips でした。