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 でした。