【GCP入門編・第16回】アプリのパフォーマンスを視覚的に確認できる Stackdriver Monitoring を紹介!
投稿日:2018/04/06
Stackdriver は、2014年に Google が買収し、2016年に GCP のサービスの一部として統合した統合監視サービスです。 Monitoring 、 Error Reporting 、 Trace 、 Logging 、 Debugger の5つのサービスによって構成され、 GCP と AWS をサポートしています。
元々が GCP 固有のサービスとして作られていた訳ではないため、汎用的な作りになっていますが、 買収を経て統合されたことにより、 Compute Engine や App Engine 、 Kubernetes Engine 、 Cloud SQL 、 Datastore など様々な GCP のサービスを簡単に監視できるように機能が強化されています。
この記事では、 Stackdriver のサービスの中でも、 Logging と並んでメインのサービスとなる Stackdriver Monitoring について解説します。
この記事の目的
- Stackdriver Monitoring とは何かを知ろう。
- Stackdriver Monitoring でできることを学ぼう。
Stackdriver Monitoring でできること
Stackdriver Monitoring では、サービスを稼働させるインスタンスの CPU 使用率やメモリ使用率、またはそのインスタンス上で動作するアプリケーションの各種使用率等といったメトリクスを集めるメトリクス収集機能と、収集したメトリクスを用いたアラートの通知を行うことができます。
下の画面は Stackdriver Monitoring のダッシュボード画面です。
こうしたメトリクスの収集に使われるツールには MUNIN や Cacti といったものがありますが、 Stackdriver Monitoring では agent を対象のインスタンスにインストールしなくても GCP や AWS の基本的なメトリクスをほぼ無設定で収集することができます。
より詳細なメトリクスを収集したい場合には agent をインストールすることも可能で、 agent は collectd ベースのものが提供されています。 agent をインストールすることで後述するアプリケーションのメトリクス収集や、インスタンスのより詳細なメトリクスを収集することが可能になります。
また、 Stackdriver Monitoring では Web アプリケーションが正常に稼働しているかどうかを監視することも可能です。こちらは単純に URL を指定することで利用できるため、簡単に運用中のサービスが停止していないかどうか監視し続けることができます。
こうして収集したメトリクスを基準にして、アラートを送信することが可能です。 Stackdriver Monitoring ではメールによる通知の他に Slack や HipChat といったチャットツールに対して簡単に通知を設定することもできます。
アラートを送信する閾値は複数の条件を指定することもできますので、重要なアラートが埋もれてしまい、大きな障害の兆候を見逃してしまう、といったことも防げるでしょう。
また、 Stackdriver のアカウントは複数の GCP のプロジェクトと紐付けることが可能です。このため、同じチームで複数の異なるサービスを運用していた場合でも、監視は一箇所で行うことができる、というメリットがあります。
収集できる基本的なメトリクス
Stackdriver Monitoring で監視することのできるメトリクスには、大きく分けて Built-in metrics と Custom metrics の2種類があります。 Custom metrics は Stackdriver の提供する API を通じて、メトリクスを自分で設定することができます。Built-in metrics はデフォルトで提供されているメトリクスとなります。
Built-in metrics は Agent metrics 、 AWS metrics 、 GCP metrics に大きく分けられます。 Agent metrics は主にインスタンス上で動作するアプリケーションを対象としたもので、 Stackdriver agent を使用して収集します。 AWS metrics 、 GCP metrics は AWS であれば EC2 、 ELB 、 RDS など AWS が提供するサービスのメトリクスを、 GCP であれば App Engine や Compute Engine 、 BigQuery や Cloud SQL 、 Cloud Storage といった様々なサービスのメトリクスを収集することができます。
上の画像は Cloud Storage のバケットのメトリクス監視画面です。このように、バケットに対するリクエスト数やトラフィックといったメトリクスは Built-in metrics として用意されているので、特に設定をしなくても監視することができます。
非常に多くのメトリクスを利用することができるようになっており、すべての Built-in metrics はこちらで閲覧することが可能です。
アプリケーションのメトリクスを収集する
Stackdriver agent を利用することで、 Compute Engine のインスタンス上で動作するアプリケーションのメトリクスの収集が可能です。デフォルトで Stackdriver agent がメトリクスを収集できるアプリケーションには、 Apache 、 Nginx といったウェブサーバー、 MySQL や PostgreSQL といったリレーショナルデータベース、 Redis や Memcached といった KVS が含まれていますので、 Web アプリケーションの運用を行う際に使われる代表的なアプリケーションの監視はすぐに行うことが可能です。
これらのアプリケーションのメトリクス収集は Stackdriver agent のプラグインをインストールすることで行われます。プラグインの一覧は公式ページのサードパーティ製アプリケーションのモニタリングにあります。
アラートのポリシー
Stackdriver Monitoring では、メトリクスに対して Alerting Policy を設定することで、アラートの通知が可能になります。例えば、ディスクの使用率が90%を超えた場合、 CPU の使用率が90%を超えた場合…といった具合です。このような “…の場合” を Stackdriver Monitoring では “Condition” と呼んでおり、メトリクスが設定した Condition を満たした場合に “Incident” が発生してアラートが送信されます。対象のメトリクスと Condition 、通知先を組み合わせた設定が Alerting Policy となります。
Alerting Policy は上の画像に表示されている、 Stackdriver のコンソールから設定することが可能です。上の画像では “Threshold-user/test-log-critical” 、 “5XX check” という2つのアラートが設定されており、両方のアラートがオンとなっています。
価格設定について
現在、 Stackdriver には2つの価格設定があります。1つは Basic Tier で、こちらは無料で使用が可能です。もう1つは Premium Tier で、こちらは月単位で課金がなされます。詳細な価格等については公式ページをご確認ください。
Basic Tier では GCP metrics のみが使用できますので、 Stackdriver agent を利用したアプリケーションのメトリクス収集や AWS 上で動作するインスタンスのメトリクス収集を行いたい場合は、 Premium Tier を選択する必要があります。また、 Basic Tier ではアラートの送信先がメールと Cloud Console モバイルアプリのみとなっていますので、 Slack や HipChat を利用する場合は Premium Tier を選択しましょう。
おわりに
いかがでしたか。 Stackdriver Monitoring は多様化するアプリケーションの運用環境をうまくカバーし、アプリケーションの監視という非常に重要ではあるけれども厄介な問題をうまく解決するためのサービスです。アプリケーションの監視は MUNIN のようなオープンソースのツールを組み合わせて行うことももちろん可能ですが、監視ツールの設定やエージェントのインストール、さらに収集したメトリクスやログファイルの増加など、監視ツールを運用するための努力も必要になってきます。 Stackdriver Monitoring を使用することで、こうした監視ツールそのものの運用に気を使うことなく、本当に行いたい監視のみを行うことが可能となります。
同じシリーズの記事
-
【GCP入門編・第22回】 Stackdriver Logging で収集したログに対して、フィルタの実行や警告を設定しよう!
-
【GCP入門編・第21回】 Stackdriver Logging でアプリケーションのログを収集しよう!
-
【GCP入門編・第20回】 手間いらずでログ管理ができる Stackdriver Logging のご紹介!
-
【GCP入門編・第19回】 Stackdriver Monitoring でメールや Slack による通知を設定しよう!
-
【GCP入門編・第18回】 Stackdriver Monitoring で Google App Engine の監視をしよう!
-
【GCP入門編・第17回】 Stackdriver Monitoring で Google Compute Engine を監視しよう!
-
【GCP入門編・第16回】アプリのパフォーマンスを視覚的に確認できる Stackdriver Monitoring を紹介!
-
【GCP入門編・第15回】 GCP から AWS までモニタリングできる Google Stackdriver を紹介!
-
【GCP入門編・第14回】 Cloud Functions を使ってサーバレスアーキテクチャを体験しよう!
-
【GCP入門編・第13回】 Cloud Datalab でデータの可視化を行ってみよう!
-
【GCP入門編・第12回】 BigQuery を使って気軽にビッグデータの解析を行ってみよう!
-
【GCP入門編・第11回】 Google Cloud Dataproc を使ってデータを解析しよう!
-
【GCP入門編・第10回】スケーラブルな NoSQL データベースサービス Cloud Bigtable を使ってみよう!
-
【GCP入門編・第9回】 Cloud Shell で、いつでもどこでも Google Cloud Platform (GCP) が操作可能に!
-
【GCP入門編・第8回】 Container Registry での Docker イメージの使用方法!
-
【GCP入門編・第7回】知らなきゃ損! Google Container Engine (GKE) での Dockerイメージを使ったコンテナの起動方法!
-
【GCP入門編・第6回】これは簡単! Google App Engine での Cloud Datastore の利用方法!
-
【GCP入門編・第5回】 Google App Engine の魅力とは? Google App Engine (GAE) でのアプリケーション起動方法!
-
【GCP入門編・第4回】すぐ出来なくても大丈夫!サンプルアプリで Google Compute Engine (GCE) の動作練習!
-
【GCP入門編・第3回】難しくない! Google Compute Engine (GCE) でのインスタンス起動方法!
-
【GCP入門編・第2回】まずは、ここから!知らないと恥ずかしい Google Cloud Platform (GCP) の事前準備!
-
【GCP入門編・第1回】エンジニア必読!今さら聞けない、Google Cloud Platform (GCP) とは?