App Stats for Java
これまでPython版にしかなかった App Stats が1.3.2でJavaに導入されたので試してみた.
App Statsとは
App Stats は各リクエストごとにApp EngineのAPIサービスの利用状況をモニタリングする仕掛け.どのAPIをどれだけ使ったか,個々のAPI呼び出しにどれだけ時間がかかったかを表示してくれる.
セットアップ
App Statsはそれぞれのアプリケーションに対して設定する必要がある.作業は次の2つ.
- 統計情報を取得するためのフィルタの設置
- 取得した情報を表示するためのサーブレットの設置
フィルタの設置
次のフラグメントをWEB-INF/web.xmlに追加する.
init-paramでlogMessage を登録しているが,これはログにそのリクエストの参照用IDを表示させるためのもの.
<filter> <filter-name>appstats</filter-name> <filter-class> com.google.appengine.tools.appstats.AppstatsFilter </filter-class> <init-param> <param-name>logMessage</param-name> <param-value>Appstats available: /appstats/details?time={ID}</param-value> </init-param> </filter> <filter-mapping> <filter-name>appstats</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
サーブレットの設置
同様に下記をWEB-INF/web.xml に追加する./appstats にサーブレットを設置しているが,このパスは任意なので別のところに設置しても構わない.
<servlet> <servlet-name>appstats</servlet-name> <servlet-class> com.google.appengine.tools.appstats.AppstatsServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>appstats</servlet-name> <url-pattern>/appstats/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <url-pattern>/appstats/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>
実行してみる
クラウドにデプロイして実行してみる.アプリケーションの動作は通常と全く変わらない.appspot.com から管理コンソールを開き,そのアプリケーションのログを見る.All Requestsで,詳細に調査したいリクエストのログを開くと,ログメッセージが表示されている.これが,フィルタで設定したメッセージ.
メッセージで指定されたリンクを開くと,詳細なAPI呼び出しの情報を見ることができる.
所感
すばらしい.けど,どうせなら完全にシステムに統合して欲しい.有効化,無効化を管理コンソールで設定し,管理コンソールから直接,詳細表示画面を開けるようにしてくれないだろうか.簡単そうだけどなあ.
まあ,AppStatsはユーザレベルで動作しているものなので,管理コンソールとは別だ、と言うことなんだろうけど.