メニュー

【GCP入門編・第20回】 手間いらずでログ管理ができる Stackdriver Logging のご紹介!

【GCP入門編・第20回】 手間いらずでログ管理ができる Stackdriver Logging のご紹介!

GCP

投稿日:2018/06/05 | 最終更新日:2018/06/28

【GCP入門編・第20回】 手間いらずでログ管理ができる Stackdriver Logging のご紹介!

みなさんは、インフラやアプリケーションのログをどう管理していますか。 syslog サーバを立ててサーバのログを一箇所に収集している、 Logstash と Kibana を使って収集を行い、障害調査に活用している、もしくはサーバーにあるログをそのままサーバーに置いている、といったこともあるかと思います。

ログの収集は特にアプリケーションやインフラに起きた障害を調査する際に非常に重要になりますが、同時に自分でログ収集や調査を行う基盤の仕組みを整えるのは大きな労力がかかる作業です。障害が起きて調査を行うときにはじめて、ログを一箇所に集中させておけばよかった、と思った経験がある方は多いのではないでしょうか。

この記事では、こうした運用には欠かせないログの収集と管理を一括で担うサービスである Stackdriver Logging の機能を紹介していきます。

この記事の目的

  • Stackdriver Logging とは何かを知ろう。
  • Stackdriver Logging の機能でできることを学ぼう。

Stackdriver Logging とは

GCP には Stackdriver というモニタリングに特化したサービスが付属しており、この Stackdriver の一部としてログ収集、調査のための Stackdriver Logging というサービスが提供されています。

Stackdriver Logging は上述した大きな労力のかかるログの収集、検索、監視のための基盤をサービスとして一括で提供するサービスです。
SaaS として提供されているため、ユーザーはログの収集を設定するだけで、どんどん溜まっていくログを保管するストレージの容量や、検索システムの設置といった大変な部分はサービスがすべて面倒を見てくれるようになっています。そのため、ユーザーはログの検索や監視、ログを元にしたメトリクスの可視化といった、最終的に行いたいタスクに集中することができ、ログの保管や検索システムをどうするか、といったことに悩む必要がなくなります。

チームが小さいためアプリケーションの開発に集中したい、ログ収集やその管理といった手間を省きつつ、いざ障害が起こった際には調査を十分に行える環境を整えておきたい、といった場合には、非常に強力なツールとなるでしょう。

ログの収集

Stackdriver Logging ダッシュボード

Stackdriver Logging では、ログの収集が非常に簡単に行えるようになっています。 AppEngine standard environment を使っている場合、リクエストとレスポンスのログは自動的に収集されます。そのため特に何も設定をしなくとも、アプリケーションでどの程度500番台のレスポンスコードが出ているか、といったことはすぐに検索を行うことが可能です。

AppEngine flexible environment でも、 stdout もしくは stderr にログを出力しておけば、 Stackdriver Logging が自動的に収集するようになっています。もしくは、 Google Cloud Client Library を使って、カスタムしたログを出力して収集する、といったことも可能です。

Compute Engine を使っている場合も、インスタンスのアクティビティのログである activity_log は自動的に収集されます。また、 fluentd ベースの Logging Agent を利用することで、インスタンス内に出力される syslog などのログを収集するように設定することも可能です。

ログの検索、可視化

Stackdriver Logging には、高機能なログのビューワーが付属しています。そのため、収集したログを検索することも簡単に行うことができます。また、リアルタイムに出力されるログを目で見ることも行えます。

ログのビューワーには強力なフィルタリング機能がついており、テキストで検索を行うことも、ログの中の特定のフィールド( HTTP のレスポンスログであれば status など)を指定して検索を行うことも可能です。このフィルタリング機能を使うことによって、現在どのインスタンスがどのような500番台のエラーを吐いているか、といったことも即座に調査することができます。

Web アプリケーションを運用していると、時間に従ってログの量はどんどん増えていきます。アプリケーションだけでなく、インスタンスのログを含めれば、その量は膨大なものとなるでしょう。 Stackdriver Logging はログを BigQuery 経由で検索する機能を提供していますので、ログが膨大になってしまった場合でも高速に検索を行うことが可能です。
このあたりの連携は、強力なビッグデータ解析基盤をサービスとして提供できる GCP ならではといった感じがあります。

課金体系について

Stackdriver Logging には、基本階層とプレミアム階層という2つの課金体系が存在します。基本階層はその名前の通り、基本的な機能をサポートするプランとなっており、50GBの無料制限を超過してログを受信するまで課金は行われません。

一方のプレミアム階層では、 AWS のサポートや、モニタリング エージェントの使用など、基本階層に比べて多くの機能を使用することができます。プレミアム階層では、App Engine の実行中インスタンスや Compute Engine VM インスタンスなどの課金対象インスタンス1つに対して、毎月 $8.00 の料金が課金されます。

Stackdriver Loggingの料金プランについて詳しく知りたい方は、公式ドキュメントをご覧ください。

ログのエクスポート

Stackdriver Logging は、 基本階層 / プレミアム階層 どちらのサービス階層でもログの量に上限があり、超過した分に超過料金が発生します。

ログの上限は基本階層の場合毎月プロジェクトごとに 50GB 、プレミアム階層では毎月プロジェクトごとに 50GB と、課金対象リソースごとに1時間あたり 14.25MB となっています。
保存期間は基本階層で7日間、 プレミアム階層で30日間と決まっており、この期間を過ぎたログは削除されます。

ログのデータをもっと長期間保存しなければならない場合は、 Stackdriver Logging が提供するエクスポート機能を使うことで GCP の他のサービスにログをエクスポートすることが可能です。

ログのエクスポート

ログのエクスポート先としては、 Cloud Storage 、 BigQuery 、 Cloud Pub/Sub がサポートされており、上の図に示されているようにコンソールから設定を行うことが可能です。
長期間保存し、かつ検索も頻繁に行う場合は BigQuery に、保存は行いたいが参照は少なめという場合は Cloud Storage に、といった形で出力先を変えることでコストの削減が行えるのではないでしょうか。

警告の通知

Stackdriver Logging は同じ Stackdriver のサービスである Stackdriver Monitoring と連携して、警告を通知する機能が付属しています。ログを使ったメトリクスを設定し、あとは Stackdriver Monitoring で警告の通知を設定するだけで、簡単にログの内容を基にした警告を送信可能です。

500エラーが増えてきたら警告する、といったアプリケーション固有の警告の通知とインフラの通知を一括で扱えるのは、大きなメリットではないかと思います。

おわりに

いかがでしたか。 Stackdriver Logging を使うことで、ログの収集、検索、保管、警告の通知といった運用上非常に重要なタスクが簡単に行えます。また、 Stackdriver Montoring と連携させることができるため、インフラのメトリクス監視とログの監視を一箇所で行えるという大きな利点もあります。
本格的な運用監視を行いたいけれど人手が足りない、できるだけ手間を省いて運用環境を整えたい、といった場合は検討してみてはいかがでしょうか。

PAGE TOP