Stackdriver のモニタリングとロギングを使用して、アプリケーションの状態を詳細に把握する

この Codelab では、Stackdriver を使用して Google Cloud Platform サービスと VM のパフォーマンス指標とログのモニタリングと確認を行う方法について説明します。

この Codelab では、

  • Stackdriver のホームページをよく理解します。
  • ダッシュボードとグラフについて理解する。
  • 稼働時間チェックを作成します。
  • 簡単なアラート ポリシーを作成します。
  • アラート インシデントに対応する。
  • ログビューアを操作する。

Stackdriver についてご感想をお聞かせください。

Monitoring とは Stackdriver は使用したことがないが、アプリケーションのモニタリングの経験がある。 Stackdriver のタイヤは使用しましたが、まだ浸っていません。

セルフペース型環境

Google アカウント(Gmail または Google Apps)をまだお持ちでない場合は、アカウントを作成する必要があります。

Google Cloud Platform Console(console.developers.google.com)にログインして新しいプロジェクトを作成します。

プロジェクト ID(すべての Google Cloud プロジェクトにおいて一意の名前)を覚えておいてください。以降、このコードラボでは PROJECT_ID と呼びます。

重要 - Compute Engine API を有効にするには、Compute Engine ページにアクセスします。

続けて、[コンピューティング] → [Compute Engine] → [VM インスタンス] の順に選択します。

この操作を初めて行う場合、画面に「Compute Engine の準備中です。1 分以上かかることがあります。引き続き以下の Google Cloud Shell にログインできますが、この操作が完了するまで VM を作成することはできません。

ほとんどの作業は、クラウドで実行されるコマンドライン環境である Google Cloud Shell から行います。この Debian ベースの仮想マシンには、必要な開発ツールがすべて読み込まれ、永続的な 5 GB のホーム ディレクトリを提供します。画面の右上にあるアイコンをクリックして、Google Cloud Shell を開きます。

最後に、Cloud Shell を使用してデフォルト ゾーンとプロジェクト構成を設定します。

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

さまざまなゾーンを選択することもできます。ゾーンの詳細については、リージョンとゾーンのドキュメントをご確認ください。

このセクションでは、Cloud Launcher を使用して nginx+ を実行する Compute Engine インスタンスを作成します。モニタリングとアラートのデモを行うには、これらのインスタンスが必要です。Compute Engine インスタンスは、グラフィカル コンソールまたはコマンドラインから作成できます。このラボでは、コマンドラインについて説明します。

では、始めましょう。

gcloud を使用してプロジェクト ID を設定します。

$ gcloud config set project PROJECT_ID



次に、そのままコピーして貼り付けます。

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

ディスクサイズに関する警告メッセージが表示され、各 VM が作成されると次の出力が表示されます。

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

EXTERNAL_IP をメモします。これは後で重要です。

これらのオペレーションが完了するまで数分かかることがあります。

デフォルトでは、Google Cloud Platform はポートアクセスをほとんど許可しません。間もなく Nginx にアクセスするため、ファイアウォール構成でポート 80 を有効にします。

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

これにより、次のデフォルト値を持つ allow-80 という名前のファイアウォール ルールが作成されます。

  • 受信接続を許可する IP アドレス ブロック(--source-ranges)のリストは、0.0.0.0/0(任意の場所)に設定されています。
  • 受信接続を受け入れる可能性のあるネットワーク上のインスタンスのセットを示すインスタンス タグのリストが「none」に設定されているため、このファイアウォール ルールはすべてのインスタンスに適用できます。

gcloud compute firewall-rules create --help を実行して、すべてのデフォルトを確認します。

最初のインスタンスが作成されたら、http://EXTERNAL_IP/(EXTERNAL_IPnginx-plus-1 のパブリック IP)に移動して nginx が動作しアクセス可能かどうかをテストできます。Nginx ページが表示されます。

次のコマンドを入力して、実行中のインスタンスを表示することもできます。

$ gcloud compute instances list

Google Stackdriver は、クラウドで実行されるアプリケーションのモニタリングと分析を容易にするさまざまなツールを統合した強力なモニタリング ソリューションです。Stackdriver を使用して、パフォーマンス指標の表示、アラートの設定と受信、独自のカスタム ダッシュボードと指標の追加、ログとトレースの表示、統合ダッシュボードの設定をすべて 1 か所から実行できます。

次の手順では、Stackdriver を有効にしてコンソールを操作する方法を説明します。

デフォルトでは、Google Stackdriver は現在ベータ版であり、新しいプロジェクトでは有効になっていません。有効にするには、左側のナビゲーション バーにある [Monitoring] をクリックします(表示されていない場合は、下にスクロールしてください)。

次の画面で [モニタリングを有効にする] をクリックし、少し待ってから有効にします。

有効になると、コンテンツが変更されて以下のテキストが表示されます。[Monitoring に移動] をクリックして調査を開始します。Google にログインしてから、プロジェクトの Stackdriver コンソールに移動します。ここで、モニタリング関連のタスクの実行と分析を行います。

ホームページに慣れておきましょう。

  1. トップメニュー: さまざまなビューやコンテキストを選択し、使用可能なすべての Stackdriver アクションにアクセスするために使用します。
  2. ダッシュボード: モニタリング対象の指標とイベントのダッシュボード初期の段階では、プロジェクト内のリソースに基づいて事前に定義されたシステム ダッシュボードが表示されますが、独自のカスタム ダッシュボードを作成することもできます。
  3. 稼働時間チェック: ユーザー向けリソースの可用性を定期的にチェックし、利用不可になった場合のアラートを有効にします。
  4. グループリスト: プロパティと特性を共有するリソースをグループにまとめることで、モニタリングやアラートなどのタスク用のグループまたはクラスタとして処理できます。これらは、自動検出することも、ユーザー定義も可能です。
  5. [インシデント] ペイン: [インシデント] ペインは、アラート インシデントを追跡します。アラート ポリシーを定義するまで、ここには表示されません。
  6. イベントログ: モニタリング対象リソースに関連するイベント(インスタンスの変更やインシデント イベントなど)が一覧表示されます。

グラフを調べる前に、インスタンスの初期化後にほとんどの線が平坦になっていることにお気づきでしょうか。インスタンスの 1 つに負荷を発生させて「フラット化解除」できるかどうかを確認しましょう。

Cloud Shell コマンドラインからインスタンスに SSH 接続するには:

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

とても簡単です。(本番環境では、パスフレーズを入力してください :)また、パスフレーズの追加を求めるメッセージが表示されない場合もあります。

または、[Compute Engine] > [VM インスタンス] に移動し、[SSH] をクリックして、コンソールからインスタンスに直接 SSH 接続することもできます。

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

インスタンス nginx-plus-1 CPU を読み込んでいます。Stackdriver ダッシュボード タブに戻って検討を開始できますが、Stackdriver ダッシュボード ページに戻る前に、Cloud Logging エージェントをインストールしてみましょう。

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

本番環境にインストールする場合は、必ず SHA-256 ハッシュをご確認ください。インストール手順の詳細については、こちらをご覧ください。

Google Stackdriver コンソールに戻ります。

時間をかけて、ダッシュボードとグラフの操作と使用法をよく理解してください。マウスを使用してグラフの線にカーソルを合わせると、何が起こるかが表示されます。グラフの表示期間を変更します(コントロールは右上隅にあります)。コンソールの左上隅にある Stackdriver ロゴをクリックすれば、いつでも「ホームページ」ビューに戻ることができます。

CPU 使用率のグラフを見てみましょう。

グラフの要素は次のとおりです。

  • ハイライト表示された線は、現在選択されている指標です(グラフには、複数の指標を表示できます)。
  • 灰色の横線は、マウスのカーソルを合わせた時点を表します。
  • 下部には、リソースの名前と選択した時点の値が表示されます。
  • グラフの上部にある色付きの点は、イベントログに詳しく示されたイベントを表します。各イベントをクリックして、イベントのリストを表示できます。注: まだイベントがない場合、何も表示されない可能性があります。
  • グラフの右上には、次の 3 つのコントロールがあります(左から右)。
  • グラフの下にある指標のリストの表示と非表示を切り替えます
  • フルスクリーン モードに切り替える
  • さまざまなメニューが並ぶメニュー(非常にチャート化が進んだら、X 線モードを試してみなければなりません)。[ログを表示] オプションに注目してください。後で確認します。

稼働時間チェックで、任意のウェブページ、インスタンス、リソース グループの状態をすばやく確認できます。構成された各チェックに対して、世界中のさまざまな場所から定期的に接続が行われます。稼働時間チェックは、アラート ポリシー定義の条件として使用できます。

上部のメニューで [アラート] > [稼働時間チェック] を選択すると、チェックとそのステータスを表示できます。Google Stackdriver ダッシュボードや特定のリソース専用のページにも [稼働時間チェック] セクションがあります。リソースのグループをカバーする稼働時間チェックの場合は、チェックを展開して、グループの個々のメンバーのステータスを表示できます。

稼働時間チェックを作成します。Stackdriver のホーム画面で、稼働時間チェック ウィジェットを見つけます。

新しいポップアップが表示されます。単一のリソースまたはリソースのグループに対して稼働時間チェックを構成したり、カスタムのヘッダーやペイロードを利用したり、認証やその他のオプションを追加したりできます。現時点では、自動作成された nginx グループを 1 分ごとにチェックするデフォルトの http チェックのみを使用します。

以下のスクリーンショットを使用して、さまざまなオプションを記入してください。

[テスト] ボタンをクリックして、エンドポイントが到達可能であることを確認し(緑色の 3 つのチェックマークが表示されるはずです)、、[保存] をクリックします。注: それでも問題が戻らなかった場合は、チェックチェックのタイミングに問題があるだけなので、ラボを進めてください。

次に、「稼働時間チェックの作成」ボックスが表示され、このチェックのアラート ポリシーを作成するかどうかを尋ねられます。次のセクションではその操作を行うため、まだ何もクリックしないでください。

アラート ポリシーを設定すれば、クラウド サービスとプラットフォームが正常に動作しているかどうかを判断する条件を定義できます。Cloud Monitoring では、ポリシーで使用できるさまざまな指標とヘルスチェックが提供されています。

アラート ポリシーの条件に違反すると、インシデントが作成され、Stackdriver コンソールの [Incidents] セクションに表示されます。応答者は通知の受信を確認し、対応後にインシデントを閉じることができます。

[アラート ポリシーを作成] をクリックし、ポリシーの設定に進みます。

次のような画面が表示されます。

ポリシーの名前を入力します。"nginx グループ用の稼働時間チェック"

[通知方法] セクションで [通知を追加] をクリックします。

Google Cloud アカウントに関連付けられているメールアドレスを入力します。画面下部までスクロールして、[ポリシーを保存] をクリックします。

左上のロゴをクリックして、Stackdriver のホームページに戻ります。

これで、作成した稼働時間チェックがダッシュボードの [稼働時間チェック] セクションに表示されます。現時点では、ステータスは緑色で表示されます。

イベントログまで下にスクロールすると、アラート ポリシーが作成されたイベントが表示されます。

ここで問題にしましょう。

Ngnix サービスを停止した場合の動作を見てみましょう。

Cloud Shell のコマンドラインから、インスタンスに SSH 接続し直します。

$ gcloud compute ssh nginx-plus-1

次のように入力します。

yourusername@nginx-plus-1:~$ sudo service nginx stop

これで、作成された稼働時間チェックが失敗します。その結果、インシデントが作成され、上記で入力したアドレスにアラート通知メールが送信されます。条件が検出されるまでに 1 分ほどかかります(稼働時間チェックを設定した場合は 1 分かかります)。そこで、nginx グループページを見てみましょう。

特定のリソース グループのダッシュボードに移動するには、いくつかの方法があります。

  1. ホームページでグループの名前をクリックします。グループのリソースをモニタリングする専用のダッシュボードに切り替わります。このダッシュボードをカスタマイズすることもできます。



  2. 最上位のメニューから [グループ] を選択し、目的のグループを見つけます。

自動更新ボタンをクリックして、ダッシュボードが自動的に更新されるようにします。アイコンが赤色に変わります。

自動作成された nginx グループに固有のダッシュボードが表示されています。右側には、グループに関するいくつかの主要な指標のグラフが表示されます。つまり、これらのグラフは、nginx グループ内のすべてのリソース(先ほど作成した 3 つ以上の nginx VM)に関連する指標を示しています。

左側に、グループに関連するさまざまな情報が表示されます。

  • インシデントのステータス
  • 稼働時間チェック
  • イベントログ
  • リソースのリスト(インスタンス、ボリュームなど)

これらはグループのみに関連するため、イベントログにはグループのイベントのみが表示されます。

さまざまなリソースまたはサブグループをクリックすると、それぞれ固有のダッシュボードに移行できます。たとえば、nginx-plus-1 をクリックすると、そのインスタンスに関連する指標とチェックのみで構成されるダッシュボードに移動します。今すぐ試す:

Stackdriver インシデントは、一連のアラート条件が特定の条件を満たすと開きます。この例では、nginx 稼働時間チェックのアラートが設定されていますが、現在は nginx-plus-1 で失敗しています。インシデントは、現在の状況を追跡したり、問題に取り組むときに他のチームメンバーと共同作業したりするのに役立ちます。

インシデントを確認し、他のチームメンバーが調査中であることを伝えます。

これにより、インシデントの状態が [Open] から [Acknowledged] に変わります。現状は進行中(アラート ポリシーの条件に違反しています)ですが、あなたは進行中であることをチームメンバーに伝えています。これはイベントログにも記録されます。

インシデントは手動で解決することも、自動解決することもできます。後者を表示するには、nginx-plus-1 に ssh で接続して、問題を修正します。

yourusername@nginx-plus-1:~$ sudo service nginx start

稼働時間チェックが通常の状態に戻ると、インシデントは自動的に解決されます。[解決] メニュー項目を選択して、手動で解決することもできます。

Cloud Logging は Logging(サービスとしてのロギング)ソリューションで、複数のソースからのログの表示やクエリを便利に、一元的に行うことができます。ログを使用して他の宛先(Google Cloud Storage、Google BigQuery、Google Cloud Pub/Sub)にログをエクスポートすることもできます。

Cloud ログビューアにアクセスするには、Cloud Console の左側のメニューから選択します。

ログビューアが開き、事前定義済みのクエリの作成、独自のカスタムクエリの作成と保存、クラウド デプロイ全体の複数のリソースからのログのライブ ストリーム取得、ログからの指標の作成、エクスポートなどを行うことができます。

必要な情報にすばやく絞り込むには、次のような方法があります。

  1. リソースタイプでフィルタ
  2. 選択したリソースの特定のログタイプに絞り込む
  3. 特定のログレベルをフィルタする
  4. 過去の日付で期間を指定して検索します
  5. 連続ストリーミングの切り替え
  6. テキスト、ラベル、または正規表現検索用の検索ボックス

それでは、特定のログに絞り込むことにしてみましょう。

リソースタイプ セレクタ(スクリーンショットで 1)から [Compute Engine] > [すべてのリソースタイプ] を選択

ログタイプ セレクタ(スクリーンショットの 2)から [nginx-access] を選択して、すべてのアクセスログを表示する

[連続ストリーミング] をオンにして(5)、受信したログを確認します。新しいログが表示されない場合は、ブラウザの nginx-plus VM のいずれかに外部 IP アドレスを入力してみてください。

この Codelab ではログの詳細に重点を置いていませんが、後でクリーンアップする前に確認してください。視聴者へのナビゲートの詳細については、こちらをご覧ください。Cloud Logging の対象範囲について詳しくは、こちらで関連ドキュメントの最上位ディレクトリをご覧ください。

Codelab で作成されたコンピューティング リソースを解放します。Cloud Shell で次のコマンドを実行します。

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

次に、Google Stackdriver コンソール(Cloud Console の左側のペインのメニューから [モニタリング])に移動し、作成した稼働時間チェックとアラート ポリシーを削除します。これを行うには、最上位のメニュー項目の [アラート] -> [ポリシーの概要] と [アラート] -> [稼働時間チェック] を使用します。

これで、クラウドで実行されるアプリケーションをモニタリングする準備が整いました。

学習した内容

  • Stackdriver のホームページの使い方に慣れる。
  • ダッシュボードとグラフについて。
  • 稼働時間チェックの作成
  • 単純なアラート ポリシーを作成する。
  • アラート インシデントの処理。
  • ログビューアの操作

次の手順

  • カスタム ダッシュボードを作成してみましょう。
  • アラート ポリシーを作成する際のさまざまなオプションについて説明します。
  • Cloud Logging を使用する際に利用できるさまざまなオプションについて説明します。

学習

フィードバックをお寄せください