メニュー

【第15回】 GCP から AWS までモニタリングできる Google Stackdriver を紹介!

【GCP入門編・第15回】 GCP から AWS までモニタリングできる Google Stackdriver を紹介!

GCP

投稿日:2018/02/22 | 最終更新日:2018/04/04

【第15回】 GCP から AWS までモニタリングできる Google Stackdriver を紹介!

みなさんは、インフラやアプリケーションの監視に使うツールといえば何を思い浮かべますか? Munin 、 Cactus 、 Nagios 、 Sensu 、 Zabbix など、監視ツールは古くからあるものから新しいものまで、様々なものがあります。
しかし、監視対象に合わせてツールを選ぶ、適切に監視を設定する、運用するインフラやアプリケーションに監視を設定するまでに、監視ツールに様々な設定をするのが面倒だ、そう思っている方は多いのではないでしょうか。

Google Cloud Platform (GCP) には、 Stackdriver という統合監視プラットフォームが組み込まれており、 Compute Engine や App Engine 、 Kubernetes Engine など、 GCP 上で動くリソースの監視は非常に簡単に行うことができます。そのため、前述したツールを設定するよりも、はるかに速く簡単に監視を設定することができます。
この記事では、 Stackdriver のもつ多彩な機能を紹介していきます。

この記事の目的

  • Google Stackdriver の概要を理解しよう。
  • Google Stackdriver が提供する Monitoring 、 Logging など、多彩なサービスを知ろう。

Google Stackdriver とは

Stackdriver は、スタートアップとして2012年に設立され、2013年4月に公開されたサービスでした。 AWS と GCP の顧客に対して、ネットワークやサーバーなどのインフラ、アプリケーションなど、様々なレイヤーの監視を一括で提供するという点が特徴でした。2014年に Google がチームごと買収し GCP に統合されたサービスとして、2016年10月に Google Stackdriver として公開されました。

元々の Stackdriver を丸ごと統合しているため、 GCP のみでなく AWS に対しても監視を行うことができます。そのため、 GCP と AWS を混在させた環境でも監視の設定や収集した情報を一箇所で扱うことが可能です。
Google Stackdriver が提供する主なサービスは、 Monitoring 、 Logging 、 Error Reporting 、 Debugger 、 Trace といったものがあります。それでは各サービスを簡単に紹介していきましょう。

Stackdriver Monitoring

Stackdriver のメインとなるサービスです。 GCP と AWS 上のリソースのメトリクスを収集し、ダッシュボードで閲覧することや、あらかじめ設定したポリシーにしたがってアラートを通知する、指定した URL が外部からアクセスできるかどうか監視する、といった機能を持ちます。対応する GCP と AWS のリソースは広範囲に渡り、 GCP では Compute Engine 、 App Engine 、 Container Engine はもちろん、 Cloud SQL や Datastore 、 BigQuery といったデータベースサービス、ネットワークなどもサポートします。 AWS でも EC2 、 S3 、 SQS 、 RDS など多くのリソースをデフォルトでサポートしています。

また、アプリケーションレベルの監視にも対応していることも大きな特徴です。 Nginx や Apache といった Web サーバー、 MongoDB 、 MySQL 、 PostgreSQL などのデータベース、代表的な Key-Value Store の Memcached 、 Redis など、 Web アプリケーションを構築する上で頻繁に使われるミドルウェアがサポートされています。対応するアプリケーションはこちらに一覧があります。

さらに、 SMS 、 Slack 、 HipChat などのコミュニケーションツールにアラートを通知するといった機能も標準でサポートされているため、通知の設定も非常に簡単になっています。

Stackdriver Logging

動作するインスタンスから出力されるシステムログ、アプリケーションサーバーや Web サーバーから出力されるログなど、 Web アプリケーションのログを収集・保管し、異常の兆候がないかといったことは非常に重要ですが、インスタンスが増えると共に膨大になるログデータの管理や監視は困難になります。

最近では、 Elastic co の開発する Kibana や Logstash 、 Tresure Data の開発する fluentd など、ログの収集や管理を行うためのツールが増えてきましたが、こうしたツールを適切に配置し設定することは相応の労力を伴います。

このような作業のために提供されるサービスが Stackdriver Logging です。 Logging はインスタンスからのシステムログ、 Web サーバーからのログ、そしてカスタマイズされたログを収集する仕組みと、収集したログを一箇所で閲覧するダッシュボードを備えています。1秒に数テラバイトのログを扱えるようになっているため、非常に大規模なサービスでも利用することが可能です。

また、 Stackdriver Monitoring と組み合わせて、ログから抽出したメトリクスを監視する、といったことも可能です。さらに GCP が提供する BigQuery と組み合わせ、大量のログデータがあっても非常に高速に解析を行うことも可能です。

Stackdriver Error Reporting

アプリケーションがクラッシュした、特定の処理でエラーが発生した、そういった情報をアプリケーションから収集し、エラーの原因を素早く把握することができるようにするためのサービスが、 Error Reporting です。

Java 、 Python 、 C# 、 Ruby 、 Javascript 、 Go に対応したスタックトレースのパーサーが提供されていて、これらの言語で書かれたアプリケーションからのエラーを通知可能です。さらに、 App Engine であれば設定をすることなくこの機能を利用することが可能です。
アプリケーションのエラーを時系列で表示する、似たようなエラーがどの程度発生しているのかを素早く把握する、新しく発生したエラーをメールやスマートフォンで通知する(記事執筆時点ではベータリリース)など、アプリケーションの異常に素早く気づくための機能が多く含まれています。

Stackdriver Debugger

本番環境で起こっているエラーを調査するために、開発環境に本番環境に似せた状況を用意することは、それほど珍しくはないでしょう。しかし、再現のための環境を本番環境と完全に同一にすることはできませんし、どのポイントを再現すれば良いかといったことに頭を悩ませることもしばしばです。本番環境の状態がどうなっているか知りたい、そんなことを思ったこともあるのではないでしょうか。

Stackdriver Debugger はこうした状況で力を発揮するツールです。本番環境にデバッガーを仕込み、リクエストの処理中の変数の状態や、どのような関数が呼ばれているのか、といったことを調査することが可能です。しかも、ユーザーに影響を与えることはありません。

Stackdriver Debugger はアプリケーションの状態を丸ごとスナップショットに取り、その状態をソースコードと紐付けることで、アプリケーションのデバッグを可能にします。記事執筆時点では、 Python、Java、Node.js、Go に対応しています。

Stackdriver Trace

アプリケーションのパフォーマンスはユーザーの行動や満足度に大きな影響を与えます。しかし、リアルタイムで細かくパフォーマンスを計測し、どこにボトルネックがあるのか、といったことを調査することは容易ではありません。 Stackdriver Trace はこのようなパフォーマンスの問題を調査する際や、アプリケーションが想定したパフォーマンスで動作しているかどうかを常にチェックするといった作業に利用することができます。この分野で代表的なサービスといえば、 New relic を思い浮かべる方が多いのではないでしょうか。

Stackdriver Trace は SDK を持っており、アプリケーションに組み込んでパフォーマンスの計測を行うといったこともできるのですが、それ以外のリソースのパフォーマンスの計測も可能です。 GCP と統合されているため、 Compute Engine のインスタンス、 Container Engine 上で動作するコンテナ、 App Engine のアプリケーションに対しても、パフォーマンスの計測が可能です。 App Engine のアプリケーションでは、自動的にパフォーマンス計測が可能になります。記事執筆時点では、 Java、 Node.js、Ruby、Go 向けの SDK が用意されています。また、 Zipkin に対応しており、 Zipkin を使ってパフォーマンスを計測しているアプリケーションでは、そのまま Stackdriver Trace でパフォーマンスの計測が可能です。

おわりに

いかがでしたか。インフラからアプリケーションの運用まで、監視は Stackdriver ひとつですべてカバーできます。 GCP と密に統合されているため、 GCP でアプリケーションを開発、運用する際には、非常に強力なツールとなってくれるでしょう。

PAGE TOP