👋

地味だけど素晴らしいCloud Logging

2022/05/29に公開

最近あらためてCloud Loggingは素晴らしいサービスだなと感じています。
地味であまり話題にならないサービスですが、低コストで大きな価値を生み出します。

GCPをインフラに採用している場合、アプリケーションエンジニアもCloud Loggingの機能について理解しているのが望ましいです。しかし、公式ドキュメントを読むのは疲れるので、短時間で重要なポイントが掴めるように、簡単に各機能を紹介します。

ログの取り込み

Cloud Loggingにログを転送するには、APIやエージェントを使う方法もありますが、GKEやロードバランサーなど多くのGCPのサービスは統合されています。このため、GKEを採用している場合にはログの取り込みについて考える必要はほぼありません。コンテナの標準出力は自動的にCloud Loggingに転送されます。

ログエクスプローラ

Cloud Loggingに取り込まれたログはログエクスプローラで検索することができます。ログエクスプローラは非常に優秀です。ヒストグラム表示やクエリ言語による強力な絞り込み機能を備えています。

例えば、「Aコンテナが12時以降に出力した"hoge"をテキストに含むログ」といった検索が簡単にできます。
ヒストグラム表示があるので、どの時間に多く出力されたか視覚的に分かります。


出典: https://cloud.google.com/logging/docs/view/logs-explorer-interface?hl=ja

ログルーター

ログルーターは特定のログを別のサービスなどに転送する機能です。転送先には下記を選べます。

  • BigQuery データセット
  • Cloud Storage バケット
  • Cloud Pub/Sub トピック
  • Splunk
  • ユーザー定義のCloud Loggingバケット

この機能のおかげで例えば下記のようなユースケースに対応することができます。

  • BigQueryにアクセスログや監査ログ、障害解析用のログを溜めておき集計・分析する
  • Pub/Sub トピックを介して、別のサービスにイベントを通知する。
  • 特定のログのみ保持期間の長いCloud Loggingバケットに保存して長期間ログを検索できるようにする

ログベースの指標

分かりにくい名前ですが、英語では "log based metrics" です。例えば、「10分間に発生した特定の文字列を含むログの数」などがログベースの指標になります。

指標を定義すると次のようなことができます。

  • メトリクスエクスプローラでグラフで視覚的に指標の変化などを確認できる
  • アラートを作成し指標が閾値を超えたときにSlackなどに通知できる


引用元: https://cloud.google.com/monitoring/charts/metrics-explorer?hl=ja

構造化ログ(超重要)

紹介したログエクスプローラ、ログルーター、ログベースの指標を最大限に活かすために非常に重要になってくるのが構造化ログです。構造化ログを使わないとそれぞれの機能の魅力は10分の1くらいに落ちます(主観)。10分の1だぞ!10分の1!

テキスト形式のままログをCloud Loggingに転送すると textPayload というフィールドに単純にテキストが保持されます。これでは、例えばログに何らかの処理にかかった時間などを出力していても、5秒以上のログを抽出したいといった検索もできませんし、BigQueryに転送しても集計ができません。

構造化ログはログに構造を持たせ、Cloud Loggingがログのフィールドを認識できるようにするものです。Cloud LoggingにJSON形式でログを渡すことで、jsonPayloadフィールドにユーザー定義のフィールドを持たせることができます。これにより、フィールドを使った検索やBigQueryでの集計などを実現できます。

まとめ

Cloud Loggingはただログを便利に見れるだけでなく、ログルーターとログベースの指標、そして構造化ログを使うことでさまざまな要求を実現できる優れものです。特に障害解析/検知、監査ログ、分析といった分野の要求に対して低コストで対応できます。
なかなか注目されにくいサービスですが、この記事を通してその素晴らしさに少しでも気づいていただけたら幸いです。

Discussion