GCP Billing - Google Chat 연동

김민형·2022년 6월 20일
1

GCP - Infra

목록 보기
5/14

아키텍처

Billing 데이터 BigQuery로 결제 내보내기

billing_data 데이터세트 생성한 후 Billing의 결제 내보내기 > 설정 수정에서 billing_data로 내보내게 해준다

Webhooks

개인 계정에서 만들어봤더니 웹훅 설정이 뜨지 않았다.
회사 계정에서 스페이스를 따로 만들어 줘야 했다.



URL을 기억해둔다

Cloud Functions

getBillingAlert functions생성

  • 메모리: 128GB
  • 런타임: python 3.7

main.py

from google.cloud import bigquery
from httplib2 import Http
from json import dumps
from datetime import datetime

def run_rule(request):
    client = bigquery.Client()
    query_job = client.query("""
            SELECT sum(cost) as total_cost FROM
`project_name.dataset.tablename`""")

    for row in query_job:
        tcost = row["total_cost"]

    url = '<Google Chat 스페이스 webhook URL>'
    now = datetime.now()
    msg_content = "GCP Cost: {}".format(tcost) + " [date]: " + now.strftime("%m/%d/%Y, %H:%M:%S")
    bot_message = {
        'text' : msg_content}

    message_headers = { 'Content-Type': 'application/json; charset=UTF-8'}

    http_obj = Http()

    response = http_obj.request(
        uri=url,
        method='POST',
        headers=message_headers,
        body=dumps(bot_message),
    )

requirement.py

# Function dependencies, for example:
# package>=version
google-cloud-pubsub==0.34.0
google-cloud-storage==1.13.1
google-cloud-bigquery==1.8.1
google-cloud-core==0.29.1
pytz==2018.7


Cloud Functions Test



functions log

Cloud Scheduler


URL은 만들어준 Cloud Functions의 트리거 URL

매일 오전 10시에 GCP Billing에 대한 메시지가 사내 메신저인 Google Chat으로 오게 하려고 했으나 cron 표현식을 잘못 입력했다.. 위의 사진은 매월 10일에 알람이 오게끔 하는 것이다.

profile
Solutions Architect (rlaalsgud97@gmail.com)

0개의 댓글