nikkie-ftnextの日記

イベントレポートや読書メモを発信

Cloud Logging触り出し:ログエクスプローラで見ていたログを、ログバケットからGCSにコピーするまで

はじめに

途切れない気持ちが 私の道標1 nikkieです

ここ最近Google CloudのCloud Loggingを触ることが多く、知ったことを書き留めます。

目次

Cloud Loggingとは(by サンシャイン池崎風LLM)

(GPT-4oで生成しています)

オーッス!サンシャイン池崎だぜぇぇぇぇぇぇぇ!!今日もハイテンションでいくぜぇぇぇぇぇぇぇ!!!行くぞぉぉぉぉぉぉぉ!!

**GOOGLE CLOUDのCLOUD LOGGING!!!!!**

クラウドログィィィィィィィング!!!これはただのログじゃない、スーパーなログ管理ツールなんだぜぇぇぇぇぇぇぇぇぇ!!!

まずは、**ログの収集!!!**
どんなアプリケーションからもログをキャッチだぁぁぁぁぁぁぁ!!マイクロサービスからも、仮想マシンからも、みーんなログを一網打尽だぜぇぇぇぇぇぇ!!!

次に、**ログの解析!!!**
貴重なデータをサクッと検索、すぐにフィルターかけて見つけ出せるぜぇぇぇぇぇぇ!!!ログが膨大でも問題ナッシィィィィィング!!!ビッグデータも、ガンガン解析できるから安心だぁぁぁぁぁぁ!!!

そして、**ログの可視化!!!**
見やすくグラフィカルに、ダッシュボードでビューンっと表示!!!自分のシステムの状態が一目でわかるんだぜぇぇぇぇぇぇぇ!!!

さらに、**アラートの設定!!!**
異常をキャッチしたら、瞬間的に通知を飛ばす!問題発生時も、即座に対応できるんだぜぇぇぇぇぇぇ!!!一秒たりとも見逃さないぜぇぇぇぇぇぇぇ!!!

これが、**GOOGLE CLOUDのCLOUD LOGGING!!!**
クラウドのチカラで、ログ管理もバッチリだぁぁぁぁぁぁぁ!!!最高ォォォォォォォォォォォ!!!

池崎GPT、ありがとう〜!
色々言いたいことはあるのですが、ログィィィィィィィング、本人しか発音できないだろw

ログエクスプローラ

Google CloudのコンソールからCloud Loggingで収集されたログを確認できます。

ログバケットに保存されているログエントリを取得、表示、分析するために使用できます。

(Cloud Loggingの設定を今回触ってはいませんが、)コンソールから確認できるというのは便利そうです2

ドキュメントより、ログエクスプローラを示す画像引用
https://cloud.google.com/logging/docs/view/logs-explorer-interface?hl=ja

ログフィールド(4)でポチポチ選択していくと、対応するクエリ(2)が組み立てられ、実行結果(5や6)が絞り込まれていきます。
クエリの結果はURLで共有でき3、めちゃめちゃいいなと思います(詳しい人にざっくり説明してもらったあと、そのURLから自分で試行錯誤して学びが多かったのです)

クエリにはクエリ言語を書くこともできます。

上記ドキュメントの複数のログフィールドでテキストを検索するより

SEARCH("hello world") に変換されるこのコマンドは、トークン `hello` と `world` を含むログエントリを任意の順序で照合します。

このコマンド(SEARCH("`hello world`") に変換)は、トークン `hello world` を含むログエントリと一致します。

クエリ言語では、ダブルクォートとバッククォートの意味が違うんですね(宿題事項)

絞り込んだログはダウンロードもできます。
https://cloud.google.com/logging/docs/view/logs-explorer-interface?hl=ja#download_logs

ログは CSV 形式または JSON 形式でダウンロードできます。

ログをGCSへコピー

ログエクスプローラからダウンロードもできるのですが、上限が10000件です。
10000件を超えるログを保存する方法を調べたところ、ログバケットからフィルタしてGCSにコピーしてできました。

触り出しなので理解は甘いと思いますが、「シンク」のドキュメントからログバケットなるものがあることを知ります。
https://cloud.google.com/logging/docs/routing/overview?hl=ja#sinks

Cloud Logging には、Google Cloud プロジェクト、請求先アカウント、フォルダ、組織ごとに 2 つのシンク(Required と Default)が事前定義されています。
リソースで生成されたすべてのログは、これら 2 つのシンクによって自動的に処理され、対応する名前の Required または Default バケットに保存されます。

このログバケットを指定して、条件を満たすログをGCSにコピーします

このページでは、Cloud Logging ログバケットに保存されているログエントリを Cloud Storage バケットに手動でコピーする方法について説明します。

コマンド(ログエントリのコピーより)

gcloud logging copy BUCKET_ID storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAME \
--location=LOCATION [--log-filter=FILTER] --project=PROJECT_ID
  • BUCKET_ID--location=LOCATIONがログバケットの指定
  • storage.googleapis.com/CLOUD_STORAGE_BUCKET_NAMEはGCSのバケットの指定
  • --log-filter=FILTERはログバケットからログをフィルタする条件

log-filterにログエクスプローラのクエリを指定して、エクスプローラで見ていたログをエクスポートしました。
GCSにはJSON形式で保存され、それを解析していけます。

gcloud logging copyを叩いたあとは「コピーオペレーション」なるものが進行していきます。
コピーオペレーションはgcloud logging operationsコマンドで操作できます。

終わりに

Google CloudのCloud Loggingを触って、10000件以上のログをgcloud logging copyコマンドでGCSにコピーする方法を知りました。
ログバケットからフィルタしてGCSのバケットにコピーできる!

Cloud Loggingの一箇所でログが管理できる(!?)というのはとても便利そうなので、素振りして理解を深めていきたいところです。


  1. 過去にVertex AIを触ったときに、実はログが収集されていたのかな?
  2. https://cloud.google.com/logging/docs/view/logs-explorer-interface?hl=ja#copy-link