😎

Cloud Loggingについて

2023/12/04に公開

what

  • Google CloudのCloud Loggingについて基本概要など調べたことをまとめる
  • 適宜追記予定

Cloud Loggingとは

https://cloud.google.com/logging/docs/overview?hl=ja

GoogleCloud上のシステム等が生成したログを収集・保管・管理するための仕組み。

基本的にGoogleCloud上のサービスが出力するログはCloud Loggingへと集められる。

収集されたログはログバケットと呼ばれるストレージで保管され、期間が過ぎたら破棄するといった設定を行うことが可能。

ログはコンソールのログエクスプローラーで閲覧・クエリすることができ、アラートを上げるような設定も行うことができる。

対象のログ

https://cloud.google.com/logging/docs/overview?hl=ja#categories

Google Cloudが生成するログ

  • BigQueryやCloud Run等のGoogleCloudサービス

コンポーネントログ

  • カスタム アプリケーションとサービスによって書き込まれるログ

ユーザーが生成するログ

  • VMのエージェント経由やAPI経由でユーザーがCloudLoggingに投入したログ

セキュリティログ(監査ログ)

  • Cloud Audit Logsのログ
  • アクセスの透明ログ

マルチクラウドトハイブリッドクラウドのログ

  • Microsoft AzureやAWSから取り込んだログやオンプレミスから取り込んだログ

ログの保存先

https://cloud.google.com/logging/docs/overview?hl=ja#store

ログの保存先ストレージは以下から選択できる

  • ログバケット(Cloud Logging独自のストレージ)
  • Cloud Storageバケット
  • BigQueryデータセット
  • Pub/Sub トピック

ログバケットはCloudLogging独自のストレージであり、このログバケットに保管されているログをCloudLoggingのログエクスプローラーから閲覧できる。

料金

https://cloud.google.com/stackdriver/pricing?hl=ja#logging-pricing-summary

CloudLoggingの料金は以下2つの軸で計算される

  • 取り込み処理
  • ストレージ

取り込み処理

Cloud Loggingのログバケットに取り込むログのGB数に応じて料金が発生する

  • 料金: $0.50/GiB
    • Cloud Loggingログバケットに投入されたログのサイズに応じて課金

ストレージ

ログバケットの保管ストレージにかかる料金を指す

  • 料金: $0.01/GiB
    • 30日以上保管するログバケット上のログにのみ適用。30日以内の保管なら無料。
    • ログをGCSやBigQuery等に転送する際はそれらの料金が発生する点に注意すること。

取り込み処理料金の節約

取り込み処理の料金は、ログのボリュームが大きくなるに従い高額になっていく。

ただし、これはCloudLoggingログバケットに対して取り込むログサイズにのみ発生する。

つまり、以下に対しては料金が発生しない。

  • GCS/BigQuery等にルーティングされたログ(シンクという機能を利用する)
  • 上記の方法を用いる際に除外フィルタで除外したログ。

ログの量が膨大になった場合、除外フィルタで取り込むログをフィルタリングしたり、GCSやBigQueryへ転送することによって料金を節約できる。

ただし、転送先のサービスの利用料がかかるため、事前に確認する必要がある。

ログの閲覧

Webエクスプローラー

  • GoogleCloudのwebコンソール画面→ログエクスプローラーで確認が可能
  • またgcloud コマンドを利用することでも閲覧ができる

クエリ言語

ログエクスプローラやgcloudコマンド上でクエリを実行する事によって、ログをフィルタリングすることも可能。(なお、WebコンソールでもGUI経由でフィルタリングが可能)。

インデックス

CloudLoggingの1つ1つのデータにはインデックスの概念がある。

以下のフィールドにインデックスが貼られており、クエリに利用することで抽出を高速に行うことが出来る。

  • resource.type
  • resource.labels.*
  • logName
  • severity
  • timestamp
  • insertId
  • operation.id
  • trace
  • httpRequest.status
  • labels.*
  • split.uid

ログ監視

ログベースの指標

https://cloud.google.com/logging/docs/logs-based-metrics?hl=ja

ログの特定文字列を正規表現で検知し、その検知数を基準にしてCloudMonitoringに指標として送信する機能。

これをCloudMonitoringのアラートポリシーを利用して検知することでログ監視が可能になる。

ログベースのアラート

https://cloud.google.com/logging/docs/alerting/log-based-alerts?hl=ja#policy_structure

ログの特定文字列を検知すると、直接アラートを通知することが出来る機能。

「ログベースの指標」と同じような事が出来るが、文字列件数を指標化しないため、数値として後から統計は取れない。

しかし、簡単な手順でアラートを設定することが可能。

ログルーティングとログの保存

https://cloud.google.com/logging/docs/routing/overview?hl=ja

ログルーティング

Google公式ドキュメントより

画像の最上部がログの発生元。

ここからログがCloudLoggingに向けて投入される。

投入されたログはログルーターと呼ばれるものにより振り分け先を決定される。

ログルーターは、シンクと呼ばれる個別の設定を持っており、ログはシンクに定義された設定に応じて保存先に振り分けられる。

ログの振り分け先としては以下

  • GCSバケット
  • BigQueryデータセット
  • Pub/Subトピック
  • 他のGoogleCloudプロジェクト

シンク

シンク: Cloud Loggingに入ってきたログの振り分けを行うコンポーネント。

APIを通じてCloudLoggingに入ってきたログは、シンクによって宛先であるログバケットやBigQuery等に振り分けられる。

【設定値】

  • ログの保存先
    • ログの振り分け先を選択
  • 包含フィルタ
    • そのシンクがどのログを保存先に振り分けるかを決定する
  • 除外フィルタ
    • どのログをシンクから除外するかを決定する

Discussion