views4GCPのストレージサービスについてまとめてみた。Exp:190284普段はGCP専門のエンジニアをやっています。最近は個人的な活動としてGOとswiftでアプリ作ってます。G+TweetShareHatena注意この記事は2015年1月26日に更新されたもので、内容が古い可能性がありますのでご注意ください。Articles」の紹介記事となります。Apps」の記事を説明します。前編」(後編も後ほどリリースします。)について解説しました。今回は記事解説の第2弾となります。VMs)のログを管理するための機能です。Console上からログの閲覧・フィルタリングをおこなったりすることができます。Consoleを利用してログの閲覧・フィルタリングをおこなうことができます。以下の手順からログビューワー画面を確認してみましょう。ログを確認したいプロジェクトを選択ログビューワーは1プロジェクトに対して1つ提供されます。そのためログビューワーを利用する場合は前提としてプロジェクトを作成する必要があります。左メニューから[Monitoring(監視)]-[Logs(ログ)]を選択これでログビューワー画面への遷移は完了です。起動中のアプリケーションがあればログの出力が確認できるかと思います。アプリケーションを動作していなければログの出力はおこなわれません。未動作の場合は実際にアプリケーションを動作させて、ログが出力されることを確認してみましょう。次にビューワーからログのフィルタリングをおこなう方法について説明します。実際にいくつか実行例を出して説明します。ステータスコードからログを検索したい場合ステータスからログを検索したい場合は「status:」ラベルを利用します。2つ以上並べるとOR検索となります。以下の例はステータスコードが404、または500のログを検索する場合の条件例です。任意の文字列を含むログを検索したい場合は「regex:」を利用します。以下はプログラムから吐き出した任意の文字列を検索するための条件例となります。マルチバイト文字列でもログの検索は可能です。特定のメソッドに該当するログを検索したい場合は「method:」を利用します。methodに指定できる値はGET/POST/PUT/DELETEのいずれかとなります。SDKに同梱されているappcfg.shを利用します。コマンドのフォーマットは以下の通りです。(3)ログファイル.txt※コマンドの引数についての説明は以下の通りです。(1)は固定値となり、(2)(3)については任意の値を設定します。request_logsログダウンロードを実行するためのコマンドとなります。myapp/war「アプリケーション名/war」を指定します。アプリケーション名にはダウンロード対象のアプリケーション名を指定します。ログファイル.txtダウンロードされたログが書き込まれるログファイルのパスを指定します。ファイル名だけ指定した場合は、コマンド実行時のカレントディレクトリにログファイルが生成されます。ログの読み方リクエストを受信したアプリケーションについてログビューワーを確認すると、1リクエスト毎に以下のフォーマットでログが書き込まれていることがわかります。各項目についての説明は以下の通りです。192.0.2.0アクセス元のクライアントIPを示します。testアクセスユーザの(Gmailアカウントの)ニックネームを示します。アクセスユーザがGoogleアカウントの認証ユーザである場合表示されます。-0700リクエストが発行された日時を示します。-7:00)のいずれかとなります。例として提示したログは太平洋夏時間中に出力されたログとなるため日時の末尾に”-700”と表示されています。夏時間外の期間の場合は太平洋標準時となるため”-800”が表記されます。※下図のようにログビューワーではタイムゾーンの切り替えをおこなうことができます。切り替え後のログ情報の見出し(下図オレンジ枠)は日本時間が表記されますが、ログの詳細に記載される日時(下図赤枠)については、前述した通り太平洋標準時、または太平洋夏時間のどちらかが表示されることになります(JSTのフォーマット日時が記載されることはありません)。HTTP/1.1左から順にメソッドタイプ、アクセスパス、HTTPバージョンを示します。200返却されたHTTPステータスコードを示します。414レスポンスのデータサイズ(byte)を示します。http://www.example.com/index.htmlリクエスト元のURLを示します。Safari/537.36アクセス元端末のユーザーエージェントを示します。1-dot-calm-sylph-602.appspot.comGAEアプリケーションに接続するためにクライアントが利用しているホストの名称を示します。timeの総時間を示します。cpu_ms=42AppEngineのリクエスト処理にかかるCPU時間を示します。cpm_usd=0.0000461000リクエストでかかると推定される料金コストを示します。loading_request=1新しいJVMを生成するためのリクエストであるかを判別するための値となります。パラメータが1の場合はJVMの生成が行われます。instance=00c61b117cfeb66f973d7df1b7f4ae1f064dリクエストを処理するインスタンスの識別子を示します。app_engine_release=1.9.15アプリケーションのAppEngineバージョンを示します。ログAPIの利用方法ログAPIを利用すればアプリケーションから任意のログを出力することができます。JAVA、Python、Go,PHPそれぞれの言語に対応したAPIがGoogleから提供されていますが、本記事ではJAVAを利用した場合のログAPIの利用方法について説明します。ログレベル開発者はログレベルを使い分けながら任意のログ出力をおこなうことが可能です。出力したログはビューワーからも検索可能となります。JAVAのサンプルプログラムでは、実際のログ出力をおこなうプログラムを実行させてみます。JAVAの場合によく利用する以下3つのレベルでログ出力をおこなってみます。好みによってはlog4jを利用したい方もいるとは思いますが今回はGAEデフォルトのロギング機能を利用します。INFO以上のログを出力する場合は”WEB-INF/logging.properties”を編集し、”.level”の値に”INFO”を設定してください。{LOGGER.info("info");LOGGER.warning("warning");LOGGER.severe("severe");}}上記プログラムを実際にデプロイしリクエストを送信してみます。送信後、ログビューワーを確認すると、プログラム中に埋め込んだ任意の文字列が出力されていることがわかります。ログAPIから出力されたログまとめ以上のことからGCPは非常に便利なロギング機構を開発者に提供してくれることがわかりました。開発者指向のGCPらしい機能と言えます。GCP環境でアプリケーションを運用していく場合、強力なフィルタリング機能を搭載したログビューワーは問題が起きた場合の大きな助けになってくれると思います。Articlesの説明記事を紹介していきます。内容によっては初心者向けの記事もあるかと思いますが、経験者の方にとっても知識の確認となるはずですので、ぜひ今後もチェックをよろしくお願いします。