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はユーザレベルで動作しているものなので,管理コンソールとは別だ、と言うことなんだろうけど.

