Google 開発者コンソールによって、他のGoogle クラウドプラットフォームリソースを使って App Engineアプリケーションを管理することができます。 Googleアカウントを取得すると、このコンソールを使えるようになります。 console.developers.google.comへ行ってログインし、このコンソールにアクセスしてください。
このコンソールを使って、あなたのユーザー役割権限に応じてアプリケーションのパフォーマンスの監視や、様々なサービス提供や構成設定を制御することができます。左側のメニューのコンピュート(Compute)の項目の中にあるApp Engineの項目を展開し、App Engineに関するコンソールページを開いてください。
開発者コンソールを使い、プロジェクト・アプリケーション・リソースを以下のようにあらゆる面から管理します。:
開発者コンソールを使って他にも多くの Google クラウドプラットフォーム機能を管理することができます。 さらに学ぶ。
ダッシュボードのページは、左側のメニューのコンピュート>AppEngine>ダッシュボード配下にあります。
App Engine アプリケーションは一つ以上のモジュールから構成されています。 各モジュールは特定のHTPリクエスト群を制御します。 アプリケーションを更新した場合は、 あるモジュールのバージョンを複数配置してルーティングルールを設定し、リクエストごとに同一モジュールの異なるバージョンに振り分けることができます。
ダッシュボードの上部にある、プルダウンメニュの組み合わせで表示する情報の範囲を設定します。:
リンクはこのプルダウンの右に表示されます。これを使って、アプリの対象をあなたが選んだ(もしくはデフォルトの)詳細なレベルにします。
グラフはモジュール/バージョン セレクタの下に表示されます。 左上にあるプルダウンメニュを使って、パフォーマンスメトリクスかリソースを選択します。 右上の期間(1時間から20日間)を選び、グラフの種類を一つを選択します。:
グラフ | 説明 |
---|---|
Error Details | 一秒ごとのエラー数をクライアント(4xx)のエラー とサーバ (5xx)のエラーに分けています。このグラフはSummaryグラフのerror data shownと同じものです。 |
Instances | A count of instances-per second. It breaks instance activity into the number of new instances created, the number of active instances (those that have served requests), and a weighted count of active instances adjusted for billing rate. |
Latency | 動的リクエストのみを提供するのにかかった平均ミリ秒。これには処理時間が含まれますが、クライアントに対してリクエストが届くまでにかかる時間は含まれません。 |
Loading Latency | 新規インスタンスに対する最初のリクエストへの応答にかかった平均ミリ秒。 これには、リクエストを処理するのに必要な時間と同じく、インスタンスを読み込んで初期化する時間も含まれます。 クライアントに対してリクエストが届くまでにかかる時間は含まれません。 |
Memory Usage | 全てのインスタンスでの総メモリ使用量。単位はMB。 |
Memcache Operations | The count-per-second of all memcache key operations. Note that each item in a batch request counts as one key operation. |
Memcache Compute Units | This graph approximates the resource cost of memcache. It is measured in compute units per second, which is computed as a function of the characteristics of a memcache operation (value size, read vs. mutation, etc.). |
Memcache Traffic | 毎秒ごとのバイト数で計測されます。これは送信メモリキャッシュ と受信メモリキャッシュに分けられます。 |
Requests by Type | 毎秒ごとの静的リクエストと動的リクエスト。 |
Summary | リクエストとエラーの毎秒ごとの数。リクエストの合計には、静的リクエスト・動的リクエスト・キャッシュリクエストを含みます。エラーはクライアント(4xx)のエラー とサーバ (5xx)のエラーに分けられます。 |
Traffic | 全てのリクエストを処理した時の、一秒ごとに受信・送信したバイト数。 |
Utilization | 毎秒サイクルでの合計 CPU 活動。 |
ダッシュボードグラフの下には五つの表が表示されます。 これらの表は、あなたがページ上部で指定したモジュールとバージョンの現在のステータスを要約したものです。:
表 | 説明 |
---|---|
インスタンス | インスタンスはApp Engineのリリース番号ごとにグループ分けされています。 各リリースについて、表にはApp Engineの動作しているモジュール、インスタンスの合計、QPS・レイテンシー・メモリの平均が表示されます。 |
Billing Status | 課金可能なリソースの現在の使用量と費用が表示されます。 |
Current Load | URIごとのアプリケーションの活動状況が表示されます。各URIについては、表には毎秒ごとのリクエスト、過去24時間内の総リクエスト数、過去1時間のruntime mcyclesの数と平均レイテンシーが表示されます。 |
Server Errors | 過去24時間に最もエラーが発生したURLを報告します。エラーの合計と、URIごとの全リクエストに対するエラーの割合が表示されます。 |
Client Errors | 過去24時間に最もエラーが発生したURLを報告します。エラーの合計と、URIごとの全リクエストに対するエラーの割合が表示されます。 |
このテーブルのほとんどの列は並び替え可能です。列のタイトルの右にマウスと置くと、 caret が表示されます。それをクリックして 昇順/降順 の並び順を選びます。
インスタンスのページは、左側メニューの コンピュート>App Engine>インスタンス配下にあります。
ページの上部は ダッシュボードと同じです。プルダウンメニューを使って特定のモジュールとバージョンを選択します。 このページにはダッシュボードと同じグラフがあります。
グラフの下には、あなたが選んだ範囲内のインスタスを一覧にした表があります。 選択したモジュールがmanaged VMで動作中の場合、 a column indicates if the VM is being managed by Google or the user. 表の他の列は、以下の内容を表示します:
Tバージョンのページは、左側のメニューのコンピュート>App Engine>バージョン配下で使用できます。
プルダウンメニューを使って特定のモジュールを選択します。配置されているモジュールのバージョンは全て、プルダウン下の表に表示されます。表には以下の情報が表示されます:
Iあなたがアプリケーションの所有権や編集権限を持っている場合、バージョンを選んでそれをデフォルトのバージョンにすることができます。 また、表の下にあるボタンを塚手バージョンの削除・トラフィック分割やトラフィック移行の設定を行うこともできます。 それらは、デフォルトのモジュールを選択している場合にのみ有効になります。
トラフィック分割ではアプリケーションのデフォルトモジュールへ届いたリクエストを受け取り、 あなたが指定した振り分けに従ってそれらをデフォルトバージョンとそれ以外のバージョンに分割振り分けします。 トラフィック分割を使うことで、長い時間をかけてゆっくりとアプリの機能をロールアウトすることができます。 それはA/Bテストにも使用することができます。 デフォルトモジュールの新しいバージョンを配置した時、トラフィックマイグレーションを使って 既存のデフォルトバージョンと新しい配置バージョンとの間で段階的に再ルーティングを行うことができます。
あなたはトラフィックをIPアドレスごとに分割するか、HTTPクッキーごとに分割するかを選ばなければなりません。 IPアドレス分割で設定するほうが簡単ですが、クッキー分割のほうが精密な割り振りができます。
アプリケーションがリクエストを受け取った時、IPアドレスを 0–999の間の値にハッシュし、その数字を使ってリクエストをルーティングします。 IP アドレス分割にはいくつかの大きな制限があります:
アプリケーションは、HTTPリクエストヘッダ内にある0–999の値を持つGOOGAPPUID
という名前のクッキーを見ます
クッキーが存在した場合、その数を使ってリクエストをルーティングします。
そうしたクッキーがない場合、リクエストはランダムにルーティングされます。 - そして応答を返す時にアプリは0–999のランダムな値を持つ GOOGAPPUID
クッキーを追加します。
(このクッキーは、クッキーによるトラフィック分割が有効になっており、なおかつ応答にGOOGAPPUID
クッキーが設定されていない場合のみ追加されます。)
クッキーを使ってトラフィックを分割すると、各バージョンへの精確な割り振りが簡単に行えます。それにより、より高い精度でトラフィックのルーティングができます(0.1%程度の誤差)。また、クッキー分割にはいくつかの制限があります:
あなたがモバイルアプリを記述したりデスクトップクライアントを実行している場合、GOOGAPPUID
クッキーを管理する必要があります。
あなたのアプリサーバがSet-Cookie
ヘッダの付いた応答を返す場合、
そのクッキーを保存して後続のリクエストにそれを含めなければなりません。 (ブラウザベースのアプリでは、既にこの方法で自動的にクッキーを管理しています。)
内部リクエストを分割するには追加の作業が必要です。 サーバサイドであなたのアプリから別のアプリへ(もしくは自分自身へ)リクエストを送信することが可能ですが、そのためにはリクエストにユーザーのクッキーを付けて転送する必要があります。 Note that internal requests that don't originate from the user are not recommended for versions.
全てのApp Engine アプリケーション、特に新しいバージョンを配置した時にはキャッシュ問題が存在します。 トラフィック分割を使うと、大して気にならなかったキャッシュ問題がより鮮明なものになります。
例えば、あなたがAとBの二つのバージョン間でトラフィック分割を行い、いくつかの外部キャッシュ可能なリソース (css ファイルのような)をバージョン間で変更したとします。 そして今、クライアントからリクエストが発生し、その応答内にキャッシュファイルへの外部参照があるとします。 ファイルがキャッシュ内にある場合、ローカルHTTPキャッシュはそのファイルを取得します。 - キャッシュされているファイルのバージョン、応答を返したアプリケーションのバージョンは考慮されません。キャッシュされているリソースは応答内のデータと互換性のない可能性があります。
Cache-Controlヘッダ
とExpiresヘッダを設定することで、動的リソースのキャッシュ問題を回避することができます。
これらのヘッダはプロキシに対してこのリソースは動的であることを伝えます。
全てのプロキシサーバがHTTP/1.1 Cache-Control
ヘッダプロパティをサポートしているわけではないので、両方のヘッダを設定するのがベストです。
一般的なキャッシュについての詳細情報を知りたい場合は、以下のウェブページに挑戦してみてください:
キャッシュ可能な静的リソースがバージョン間で変更される場合、バージョン間でリソースのURLを変更することができます。 各バージョンの静的リソースが別のURLから提供される場合、それぞれのバージョンはプロキシサーバやブラウザキャッシュ内でうまく共存することができます。
アプリがVary: Cookieヘッダを設定している場合、
リソースの一意性はクッキーとリクエストURLの組み合わせを元に算出されます。このやり方はキャッシュサーバの負荷を増加させます。
GOOGAPPUID
の値は1000通りのパターンが考えられるので、あなたのアプリの各URLごとに1000個のキャッシュエントリが作成される可能性があります。
あなたのユーザーとアプリ間のプロキシの負荷に応じて、キャッシュヒット率を下げることができます。
また、
Also note that for the 24
hours after adding a new batch of users to a version, they may still see cached
resources.
しかしVary: Cookie
を使うことで、バージョン間で変更があった静的リソースの名前変更を簡単に行うことができます。
このVary: Cookie
のテクニックは全ての環境で動作するわけではありません。
一般的には、あなたのアプリが他の目的でクッキーを使用している場合、これによってプロキシサーバにどれだけ負荷をかけるかを検討する必要があります。
If codeninja
had its own cookie that had
100 possible values, then the space of all possible cache entries becomes a
very big number (100 * 1000 = 100,000). In the worst case, there is a unique
cookie for every user. Two common examples of this are Google Analytics
(__utma
) and SiteCatalyst (s_vi
). In these cases, every user gets a unique
copy, which severely degrades cache performance and may also increase the
billable instance hours consumed by your app.
タスクキューを使用して、 リクエストを処理するモジュールは非同期に実行されるバックグラウンドタスクに作業を割り振ることができます。
タスクキューのページは、左側メニューの コンピュート>App Engine>タスクキュー配下にあります。 このページにはプルキュー、プッシュキューという二種類のタスクキューと cron ジョブに属するタスクについての情報が表示されます。 ページ上部のメニューバーを使ってタスクの種類を選んでください。プッシュキューとタスクキューのレポートを参照している場合、 右上に 割り当てリンクが表示され、ここから あなたのアプリのタスクキュー割り当て使用量の表示・非表示を切り替えます。.
表にはあなたが選択したタイプでフィルタしたアプリケーションの割り当て量が全て一覧表示されます。 このキューを実行するスケジュールタスクを表示するには、キュー名をクリックしてください。 タスクのペイロード・ヘッダ・以前の実行(もしあれば)に関する詳細情報を見るには、タスク名をクリックしてください。
手動で個別にタスクを削除したり、キュー内のタスクを全て削除したりできます。 これは、タスクが完了できずにリトライを待っている場合に便利です。 また、キューの一時停止や再開をすることも可能です。
セキュリティスキャナーのページは、左側メニューの コンピュート>App Engine>セキュリティスキャン配下にあります。
Google クラウドセキュリティスキャンはあなたのGoogle App Engineウェブアプリケーションの脆弱性を判別します。 これはあなたのアプリケーションをクロールし、開始URLの範囲内リンクを全てたどり、脆弱性を見つけるために可能な限り大量のユーザー入力とイベントハンドラを過剰使用します。
セキュリティスキャナを使用するには、あなたがプロジェクトのオーナーでなければなりません。 詳細情報については、セキュリティスキャンの説明を一読ください。
割り当て詳細のページは、左側メニューの コンピュート>App Engine>割り当て詳細配下にあります。 このページでは、あなたのプロジェクトの毎日の使用状況と 割り当て消費量が表示されます。 リソースはAPIごとにグループ分けされます。 プロジェクトリソースが半日の時点で割り当て量の50%を越えた場合、それは1日が終わる前に割り当て量を超過する可能性があります。 割り当ての詳細情報については、 App Engine 割り当て量のページ と Why is My App Over Quota?を参照してください。
また、課金エクスポート機能を使って、毎日のGoogle クラウドプラットフォーム使用状況と費用見積もりをCSVやJSONファイルにして書き出すこともできます。それらのファイルはGoogle クラウドストレージの指定したbucket に保存されます。
App Engine ではアプリケーションのパフォーマンスを向上できる分散型インメモリデータキャッシュを使用することができます。 このキャッシュではキーと値の組み合わせを持ち、 The cache contains key/value pairs, and the actual pairs in memory at any time change as items are written and retrieved from the cache.
メモリキャッシュのページは、左側メニューの コンピュート>App Engine>Memcache配下にあります。 ページ上部にはあなたのプロジェクトのメモリキャッシュの状態に関するキー情報が表示されます:
Memcache サービスレベル (共有もしくは専用メモリキャッシュ)。共有レベルは無料で、スペースの保証がない"ベストエフォート"に基づいて提供されます。 専用の場合はあなたアプリケーションに排他的にリソースが割り当てられ、キャッシュスペースの時間あたりのギガバイトごとに課金されます。(課金を有効にする必要があります)。 あなたがプロジェクトの所有者の場合、二つのサービスレベルを切り替えることができます。
ヒット率 (パーセンテージ) および、メモリキャッシュのヒットとミスの数。
キャッシュ内のアイテムの数。
最も古いアイテムの経過期間。アイテムの経過時間はそれが使用(読み込みか書き込み)される度にリセットされるので注意してください。
総キャッシュ サイズ。
キャッシュに新しいキーを追加したり、既存のキーを検索したりできます。
メモリキャッシュの使用は、通常キャッシュスペースのギガバイトごとに一秒あたりの操作で測定されます。 それ以外にキャッシュのパフォーマンスを測定する方法としてはmemcache compute units やMCUsがあります。 MCUはメモリごとに計算され、操作を取得し、キーに関連する値のサイズに依存します。:
Get returned value size (KB) | MCU |
---|---|
<=1 | 1.0 |
2 | 1.3 |
10 | 1.7 |
100 | 5.0 |
512 | 20.0 |
1024 | 50.0 |
The MCU for a set depends on the value size. It is 2 times the cost of a successful get-hit operation.他の操作は、以下のように MCU に割り当てられます:
操作 | MCU |
---|---|
get-miss | 1.0 |
delete | 2.0 |
increment | 2.0 |
flush | 100.0 |
stats | 100.0 |
memcache のページでは、過去1時間のMCUごとの上位キー20個の一覧が表示されます。 これは問題となっている"ホットキー(hot keys)"を特定するのに役立ちます。 この一覧は、API呼び出しをサンプリングすることによって作成されます; 最も頻繁にアクセスされるキーのみが追跡されます。 ビューアには20個のキーが表示されますが、実際はそれ以上のキーが追跡されている可能性ががあります。 この一覧には、各キーに関連する操作の回数が全メモリキャッシュトラフィックの割合の形で表示されます。 アプリケーションがメモリキャッシュを過度に使用していくつかのキーが非常に頻繁に使われる場合、画面に警告表示が出ることがあります。
App Engine では一つ以上のインデックス形式で構造化されたドキュメントを保存する検索サービスが使用できます。ドキュメントはデータ型フィールドを持っています。 あなたはクエリに合致するフィールド持ちドキュメントのインデックスを検索することができます。
検索のページは、左側メニューの コンピュート>App Engine>検索配下で使用できます。 このページでは、プロジェクトの全てのインデックスと、インデックスに格納されたドキュメントを見ることができます。 また、選択したインデックス上でクエリを実行することもできます。
設定のページは、左側メニューの コンピュート>App Engine>設定配下にあります。 ページは二つのタブがあり、一つはアプリケーション設定のタブ、もう一つはアプリにカスタムドメインを追加するタブです。
あなたが所有者権限を持っている場合、この項目を使って以下を設定することができます。:
Google ログイン用クッキーの有効期間。クッキーは一日か一週間か二週間で期限切れにすることができます。
Google 認証メソッド。 あなたが Google Apps ドメインを認証しない場合、 Google アカウントAPI かFederated ログインを切り替えることができます。
ログの保存基準(ストレージ制限と時間間隔)。既定では、アプリケーションログは最大90日間、1GBまで無料で保存されます。 課金を有効にした場合、サイズ制限を増やして期間制限を最大1年まで拡張できます。 無料割り当て量を越えた分のログ保存費用は、ギガバイト単位で 毎月$0.026 です。
App Engine では、カスタムドメイン・サブドメイン・アプリケーションの別名を設定するためのいくつかのオプションが使用できます。 必要な場合は、アプリでSSLセキュリティを使用することができます。 例えば、他のGoogle Appsアプリケーションと連携してサービスを提供することもできます。 これらのオプションについてもっと知りたい、もしくはアプリでカスタムドメインを設定したい場合は、 カスタムドメインを使用するを参照してください。
Google App Engine アプリケーションでは、他のGoogle クラウドプラットフォーム製品が提供するサービスと機能を使用することができます。 これらのサービスはCompute->App Engineの項目にはなく、開発者コンソールの外にあります。
開発者コンソールのヘルプページにはプロジェクトの作成・削除に関する説明があります。
課金情報にアクセスするには、コンソール画面の右上にある歯車の形をしたプルダウンメニューを使ってください:
メンバー や サービスアカウントを管理し、プロジェクトを削除するには 権限のページを使ってください。
プロジェクトメンバーには、三つの役割のうちから一つを割り振ることができます。 各役割は、プロジェクトおよびそのアプリケーションとリソースに対して異なるアクセスレベルが許可されています。 App Engine アプリケーションの場合、役割を持つ人はではglcoudやappcfgといったコマンドラインツールで許可された操作を行えます。 このコマンドラインツールは、アプリケーションの配置や管理に使われるものです。
役割 | Google 開発者コンソール権限 | appcfg 権限 |
---|---|---|
Viewer |
アプリケーションの情報を参照する | ログの要求 |
Editor |
アプリケーションの情報を参照し、アプリケーションの設定を変更する | アプリケーションコードのアップロード/ロールバック、 indexes/queues/cronsの更新 |
Owner |
viewer とeditorが持つ全ての権限、ユーザーを招待する、ユーザーの役割を変更する、アプリケーションを削除する。 | アプリケーションコードのアップロード/ロールバック、 indexes/queues/cronsの更新 |
アプリケーションで他のGoogle Cloudプラットフォームサービスとの通信が必要な場合、 権限のページで サービスアカウントを設定する必要があります。
権限のページでプロジェクトを選んで 削除をクリックして、所有するプロジェクトを削除することができます。 これにより、プロジェクト・プロジェクトの全てのアプリケーションモジュールとバージョン・プロジェクトに関連する全てのGoogle Cloudプラットフォームサービスが削除されます。
App Engine アプリログを含む、プロジェクトのサービスの全ログは、監視>ログ配下のログページにあります。
App Engineの データストアサービスでは、スキーマレスで拡張が可能な、構造化されたデータオブジェクトのストレージを使用することができます。 アプリケーションのデータストアを管理するには、ストレージ>クラウドデータストアの項目にあるページを使用してください。
クラウドデータストアのダッシュボードでは組み込みインデックスと複合インデックスの統計情報だけでなく、アプリケーション内のエンティティのデータが表示されます。 統計情報のページには、様々な方法でデータが表示されます:
各プロパティタイプ (string, double, blob, など)で使用されているデータストアの領域を示す円グラフ。
エンティティの種類ごとのデータストア領域を示す円グラフ。
各プロパティタイプごとに使用される合計領域を示す表。 The "Metadata" property type represents space consumed by storing properties inside an entry that is not used by the properties directly. The "データストア統計(Datastore Stats)"エンティティは、データストア自体の統計データで使用されている領域(もしあれば)を示します。
A table showing total size, average size, entry count, and the size of all entities, and the built-in and composite indexes.
既定では、円グラフには全てのエンティティの統計情報が表示されます。 ドロップ-ダウンメニューから選択することで、円グラフを特定の種類のエンティティに制限することができます。
統計データはアプリのデータストアに保存されます。 アプリデータ用の領域を確保するためにGoogle App Engineでは、名前空間を使用していない場合は10メガバイト未満、名前空間を使用している場合は20MB未満の場合のみ統計情報を保存します。 If your app's stats go over the limit, kind-specific stats are not emitted. If subsequently these "non-kind" stats exceed the limits, then no stats are updated until stats storage drops below the size limitation. (Any previously reported statistics will remain.) 統計記録のタイムスタンプを見ることで、何が起こっているのかを判別することができます。 タイムスタンプが2日以上古く、他のアプリケーションの統計は定期的に更新がされているような場合は、あなたのアプリが統計ストレージのサイズ制限に達した可能性があります。
統計データで使用される領域は、アプリで使用する異なるエンティティの種類の数とプロパティタイプの数に比例して増加します。 アプリで異なるエンティティやプロパティを使えば使うほど、統計ストレージ制限に達する可能性が高くなります。 また、名前空間を使用する場合は、各名前空間にはその名前空間の統計の完全なコピーが含まれることを覚えておいてください。
インデックスのページでは全てのインデックスの表が表示されます。 このページで新しいエンティティを作成できます。
クエリのページではフィルタ適用することでエンティティの種類を選び、クエリを作成することができます。このページで新しいエンティティを作成することもできます
開発者コンソールではデータストアの管理はサポートしていません。 この機能を望むのであれば、これまで通り管理コンソールのデータストア管理ページを使い続ける必要があります。