続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

Log Volume (GCP Cloud Logging) の料金が高杉なんだが

f:id:iga-ninja:20220416152634j:plain

Google Cloud Logging が異常な請求額になったため、その原因と対策を説明する。請求レポートの Log Volume (Cloud Logging) がなんか高いなーと調べてる人は正解!ここです。

Loggingは結構使われる重要なコンポーネントにもかかわらず、優れたエントリが非常に少ない。そんな中でも見るに値するものは下記しっかり解説されていると思います。

blog.g-gen.co.jp

上記で大部分の知識は得られるとおもうので、金額が高くなった理由を書く。

原因と対策

  • GCSのAPIアクセスログがデフォルトで_Defaultにも Sink(シンクは日本人には意味かぶりするのでこう記載する)される
  • GCSをバリバリ触るなど、極端にAPIアクセスが多いプロジェクトの場合、30daysの保持期間はどうでもいいので、Sink対象を_Defaultから除外する
  • GCSのログを別途保持したいのならば、ログバケット(_Default)ではなく、GCSバケットなどにSinkする

仕組み

予備知識何もなしでは意味がわからないので、上記の参考エントリを見てもらうことを推奨しますが、玄人向けに雑に書く

ログバケット/ログストレージ

まずこれ、GCSのバケットとは違います。GCSの一覧には出てこない、Googleが管理管轄するやつなので、GCSバケツのようにユーザーには直接は見えない。 _Default_Required の2つがデフォルトで存在し、お金かかるのは_Defaultの方。

ログエクスプローラで見えているのは、ログストレージの中だけ

まずログルーターを理解する。

https://cloud.google.com/logging/docs/images/routing-overview-17-09-21.png?hl=ja

ありとあらゆるログは、一旦 Cloud Logging APIに入る。ここまで金はかからないはず
次にログバケットにSinkされる。ログエクスプローラでは、このログバケツの中のものだけが見えている。ここがダダじゃない、盲点
Sink先は、GCS,Pub/Sub,BigQueryなど選べるが、これらへSinkしたものはログエクスプローラは関係ないし、Sinkすること自体には金かからず、GCSなどのストレージコストがかかる。

ログエクスプローラ_Defualt, _Required どっち見てるの?

両方見てる。自分はこれが理解できてなかった。そもそもLoggingは30日タダという昔の知識があった。それなのに「あれ、30日よりも前に辿れるけど、どういうこと?どこかにSink(ログバケットではなく、GCSとか)してたら勝手にそっちみてくれる?」と深く考えてなかったが、これは _Required 分が見えていたのだった。 コンソールいうとこんな感じ

f:id:iga-ninja:20220416151454p:plain

請求の詳細にはなんと出る?

Log Volue (Cloud Logging) と出ている、SKU-ID: 143F-A1B0-E0BE 「あれ?Loggingは30日でしょ?なんでこんなに請求されるの?」 これを見ている人と同じ原因で俺も調べ始めた。

「もうちょっといい表現あるだろ」とは思うが、まあ間違っていないし、一言で説明するのは無理か。 30日の保持期間はこれとはほぼ関係なく、ログバケットに取り込んだ量を指します。課金対象の _Default

で、悪いことにこのログバケットへのSinkが超高い $0.5/1GB

監視できるの?

結構丁寧にUIにも出ている、気づかんかったけど。

f:id:iga-ninja:20220416151458p:plain

Monitoringに飛ぶリンクもついていて、それで加算でないかはわかる。このときのメトリックスはxxx Ingest とか書いてある。ユーザーから見たら ingestとは逆の感覚だな。

対策 _Default に特定イベントが飛ぶことをやめる

俺の場合は、GCSのイベントだった。まあ、AWSの感覚からしたら、GCSのイベントがデフォルトで全部取り込まれるのは 頭おかしい 文句は後でまとめて書くが。

_Default については、どれをSinkの対象とするかの設定ができるので、 GCSのイベントを除外する設定を入れたら料金は収まった。繰り返すけど、30日を縮めてもいみないからね。

f:id:iga-ninja:20220416153133p:plain

NOTに追加するか、除外に指定するかはお好きなように

f:id:iga-ninja:20220416152901p:plain

_Default への Sinkやめたら、 GCSへのSinkとかも失敗しない?

大丈夫、失敗しない。上で示した概要図みて。GCSなどログバケット以外へのSinkは _DefaultからのSinkではないから。

ダメ出し・文句

Cloud Logging は AWS CloudWatch Logsと大体同じで、AWSの感覚からすると(かつて、今は違う)「30日タダは太っ腹」に見えたが、GCSのログを全部デフォルトで取得する判断はないわ、ありえへん。だってAWSですら、ただ単にCloudTrailでS3にファイル吐き出すだけでも、デフォルト Offにしてるのに、さらに10倍以上も単価の高いCloudWatch Logsに全部打ち込むとか、正気の沙汰じゃない。

もちろん、ログストレージが高いのはわかる、ログエクスプローラやログからメトリックス作れるので高機能だ。だが、デフォルトで全部突っ組むのはありがた迷惑。
思惑としては、ログエクスプローラでなんもしなくてもGCSのログ見れまっせ!監査もバッチリアピールしたいんだろうし、アプリ開発者は自分の撒いたログがシュッと見れればええんやろ、だから邪魔くさいインフラ部分の説明は覆い隠したいんだろう。でもそこでユーザーへの説明端折っても、ユーザーの学習をスポイルしてもあんまいいことだとは思えんな、現にクレーム来るからわざわざ料金アラームのリンクつけてるんでしょ?

気づいたのは GCSだけだが、同じようにサービスAPIが大量にログを作るサービスは他にもあるだろうきっと。