Ccmmutty logo
Commutty IT
1
3 min read

GCPのコストを毎日通知する

https://cdn.magicode.io/media/notebox/blob_rbybERX
予想外のGCPのコスト発生を早期検知するために、毎日コストを通知することにしました!

予算とアラートの設定

アラートを作成する
◼️閾値の設定
基本無料枠でしか使わないので、コストが1円でも出たら通知するように。
怖いので閾値どんどん追加していったら↓こんなことに…😅
◼️通知の管理
Pub/Sub トピックを接続する
◼️構成
Pub/Sub トリガーを追加する
先ほどのトピックを選択
◼️Cloud Functionのコード
main.py
import base64
import functions_framework
import requests
import json

# Triggered from a message on a Cloud Pub/Sub topic.
@functions_framework.cloud_event
def hello_pubsub(cloud_event):
    # Print out the data from Pub/Sub, to prove that it worked
    data = base64.b64decode(cloud_event.data["message"]["data"])

    # バイト文字列ならデコード
    if isinstance(data, bytes):
        data = data.decode('utf-8')

    # アラート名のデフォルト値を設定
    budget_display_name = 'アラート'

    # 配列に変換して必要なデータを取得
    if isinstance(data, str):
        data_json = json.loads(data)

        if 'budgetDisplayName' in data_json:
            budget_display_name = data_json['budgetDisplayName']

    # messageの作成
    message = f"【{budget_display_name}\n```\n{data}\n```"

    # Slackに投稿
    requests.post(
        url='SlackのwebhookURL',
        data=json.dumps({
            "text": message,
        })
    )
requirements.txt
functions-framework==3.*
requests
終わったらデプロイする

Slackへの投稿内容例

実際に動かしてみるとわかりますが、通知頻度がかなり多いです。頻度にムラがありますが多い時で1分に1回くらい? 通知が多すぎて辛い方は、1回通知したら当日のそれ以降の通知がされないようにコードに修正してみるとよいかもしれません

参考

Discussion

コメントにはログインが必要です。