【GCP入門編・第21回】 Stackdriver Logging でアプリケーションのログを収集しよう!
- GCP入門編
- Google Stackdriver
前回の記事【第20回】 Stackdriver Logging とは では、 GCP のログ収集、管理サービスである Stackdriver Logging の強力なログ収集及び検索、管理機能について解説しました。
この記事では、実際に Stackdriver Logging を使ってログを送信し、ログの閲覧を行なってみたいと思います。
目次
この記事の目的
- Stackdriver Logging を使ってログを送信し、ログの閲覧を行おう!
gcloud コマンドを使って、ログを送信する
まずは、 Stackdriver のアカウントを作成し、使用を開始します。【第18回】 Stackdriver Monitoring で App Engine の監視をする を参考に、アカウントの作成を行なって下さい。
アカウントの作成が完了したら、まずは gcloud
コマンドを使ってログを送信してみましょう。まずは gcloud コマンドに beta コンポーネントを追加します。ターミナルを開き、以下のコマンドを入力します。
gcloud components install beta
beta コンポーネントのインストールが完了したら、次はいよいよ gcloud コマンドを使って最初のログを送信してみましょう。
gcloud beta logging write test-log "Hello Stackdriver Logging"
このコマンドでは、 test-log
というログに、 "Hello Stackdriver Logging" というメッセージを送信しています。
さて、さっそく送信されたログを閲覧してみましょう。ブラウザを立ち上げて GCP のコンソールを開き、左側のメニューにある "Logging" をクリックし、 Stackdriver Logging のページを開きます。
赤く囲われている部分をクリックし、 "Global" を選択すると、先ほど送信したメッセージが表示されたのではないでしょうか。メッセージをクリックすると、ログのエントリの詳細が表示されます。メッセージのタイプやログが送信されたプロジェクトの ID 、タイムスタンプなどがメッセージと共に保管されていることがわかります。
App Engine のログを収集する
次に App Engine で動作しているサービスのログを収集してみます。
まずは App Engine のサービスを立ち上げましょう。今回は、【第5回】 GAE でのアプリケーション起動方法!で作成した hello-world アプリケーションを App Engine にデプロイし、ログの収集を行いますので、記事の手順に従い、 hello-world アプリケーションを App Engine 上にデプロイします。
デプロイが完了したら、以下のコマンドで hello-world アプリケーションをブラウザで開いてみます。ブラウザ上に hello-world アプリケーションが表示されたら、何度かリロードを繰り返してみましょう。
gcloud app browse
次に、先ほどの Stackdriver Logging のページに移動します。 "Global" となっていた箇所をクリックし、 "GAE Applications" に変更します。すると、以下のように HTTP のログが表示されるのではないでしょうか。
デフォルトの表示では、図のようにタイムスタンプ、 HTTP のメソッド、レスポンスコード、送信したバイト数、レスポンス送信の時間、 User-Agent を省略した表示がされています。
先ほどと同じように、行をクリックすることで、より詳細な表示が行われます。
先ほど gcloud
コマンドから送ったログと異なり、このログには httpRequest という要素が追加されていることや、 resource
というキーの type
が gae_app
となっていることがみて取れます。
こうした構造化されたログに含まれる値は、 filter の対象にすることが可能です。
それでは、次にアプリケーションを少し変更し、アプリケーションからログを出力してみましょう。
hello-world アプリケーションの main.py
をエディタで開き、下記の通り書き換えます。
# Copyright 2016 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# [START app]
import logging
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
logging.debug("This log is for stackdriver logging.")
return 'Hello World!'
@app.errorhandler(500)
def server_error(e):
# Log the error and stacktrace.
logging.exception('An error occurred during a request.')
return 'An internal error occurred.', 500
# [END app]
loggingモジュールを使ってデバッグメッセージを出力しています。変更が完了したら、以下のコマンドでデプロイしましょう。
gcloud app deploy
デプロイが済んだら先ほどと同じようにアプリケーションを何度かリロードしてみます。その状態で、 Stackdriver Logging のページに移動します。
すると、先ほどと違いログの先頭に λ と表示された行が見えるかと思います。こちらをクリックして展開すると、アプリケーションの内部で出力したデバッグメッセージが表示されます。
このように、アプリケーションの中で標準出力に出力された内容は、 Stackdriver Logging で収集されます。
おわりに
いかがでしたか。簡単にログの送信と閲覧が行えることがわかるかと思います。
この記事では紹介しませんでしたが、 App Engine から Stackdriver Logging を使う場合、 Python 標準の logging パッケージを使ってログの送信を行うことも可能です。より詳細なログ、構造化されたログのエントリを追加したい場合は、そちらを試してみるのが良いでしょう。
次回は、本記事の Stackdriver Logging で収集したアプリケーションのログに対して詳細なフィルタを実行する方法と、収集したログをベースに Stackdriver Monitoring で警告を設定する方法を紹介します。
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
お問合せはこちら
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!