play1 には status
というサブコマンドがあります。
status.py, PlayStatusPlugin.java あたりのコード。
コマンドのドキュメント (cmd-status.txt)
$ play status APPDIR
port がデフォルトと違う場合は port を指定
$ play status APPDIR --http.port=8080
環境ごとの設定を行っている場合は --%ENV
で指定
$ play status APPDIR --%prod
JVM のメモリ情報、Thread の状態や、Request と Job を実行する thread pool の情報
Java: ~~~~~ Version: 1.8.0_171 Home: /usr/java/jdk1.8.0_171/jre Max memory: 4294967296 Free memory: 2981053320 Total memory: 4294967296 Available processors: 4
Requests execution pool: ~~~~~~~~~~~~~~~~~~~~~~~~ Pool size: XX Active count: XX Scheduled task count: XXXXX Queue size: X
URL にマップされているメソッドごとの実行回数(hit), 実行時間(avg, min, max)、
DBCP 設定、Job の情報などが確認できます。
status コマンドは内部で /@status
に HTTP でアクセスしてそのレスポンスをそのまま返しています。
/@status.json
という URL も用意されており、JSON でレスポンスが返されます。ただし、残念ながら情報量がずっと少ない、バグかな?
ただ、HTTP でアクセスしても 401 Unauthorized となります、認証を通すためには conf/application.conf
で設定してある secret
が必要です。
status コマンドは python で次のようになっているので
hm = hmac.new(secret_key, '@status', sha) authorization = hm.hexdigest()
shell では openssl で次のようにして得ることができます
echo -n '@status' | openssl sha1 -hmac 'secret_key'
これを Authorization ヘッダーとして渡せばアクセスできます。