はじめに
途切れない気持ちが 私の道標♪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
ログを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の一箇所でログが管理できる(!?)というのはとても便利そうなので、素振りして理解を深めていきたいところです。
- ↩
- 過去にVertex AIを触ったときに、実はログが収集されていたのかな? ↩
- https://cloud.google.com/logging/docs/view/logs-explorer-interface?hl=ja#copy-link↩