준비사항 및 주의사항.
- 구글 챗에 웹훅 생성 -> GWS 이용계정이 아니면 웹 훅 생성 기능 사용불가 (Cloud ID, gmail 계정 생성불가)
- 설정에 사용될 API들을 사용 설정한다. (Cloud Function, Cloud Scheduler, Bigquery등)
- 테스트로 구축했기 때문에 메세지 수신에 초점을 두고 구축하였다. 보안 설정등은 배제하였기 때문에 실제 셋팅시 보안부분 설정해서 구축해야 한다.
0. Google Chat 웹 훅 생성
- 테스트 스페이스를 하나 생성 후 웹훅을 생성해준다.
1. Billing export 받을 BigQuery Dataset 생성
- Billing에서 BigQuery로 Billing 내역을 export하는 기능을 제공하기 때문에 제공받을 데이터셋을 생성한다.
2. Billing export 설정
- Billing export 기능을 사용하려면 IAM 권한에서 '결제 계정 관리자', '결제 계정 사용자' 권한이 필요하다. (자세한건 더 확인필요)
- Billing export에서 'Standard usage cost', 'Detailed usage cost', 'Pircing' 부분의 Edit Setting 진입
- 설정에서 알럿을 받을 프로젝트와 미리 생성해놓은 데이터셋에 연결 해준다.
3. Cloud Function
3-1. Configuration
- Cloud Function으로 이동해 함수를 생성다.
- Environment: 1세대로 생성
- Function name: 함수 이름
- Region: 사용할 리전 선택
- Trigger type: HTTP
(테스트이기 때문에 '인증없이 호출 허용', 'HTTPS 필요' 부분 체크 해제 하여 생성했다. 보안에 주의!)
- Memory allocated: 128MB
- Timeout: 60s
- Autoscailing
- Minimum number of instances: 0 (default값 사용)
- Maximum number of instances: 3000 (default값 사용)
- Runtime service account: default값 사용
3-2. Code.
- Runtime: Python 3.7
- Entry point: run_rule
- 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 = 'hangout_room_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), ) |
- requirements.txt: 사용될 패키지명 & 버전 기입
# 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 google-api-core==1.33.2 pytz==2018.7 |
4. 테스트
- 테스트 탭으로 이동하여 '함수 테스트' 실행
5. Cloud Scheduler 설정
- 'Create Job' 선택하여 스케줄링 생성
- Define the schedule
- Description: 스케줄링 설명
- Frequency: */1 * * * * (실행될 스케줄링 시간 설정)
- Timezone: KST (Timezone 설정)
- Configure the execution
- Target type: HTTP
- URL: Cloud Function 트리거 URL 기입
- HTTP method: POST
- HTTP headers: default값 사용
- Configure optional settings
필요에 따라 셋팅 진행 (여기선 default값 사용)
5. Google Chat 확인
* 참고
https://cloud.google.com/architecture/automated-hangout-chat-cloud-billing-summary?hl=ko
https://stackoverflow.com/questions/74673148/bigquery-client-using-python-timeout-and-polling-issues
https://velog.io/@minbrok/GCP-Billing-Google-Chat-%EC%97%B0%EB%8F%99
'GCP (공부중)' 카테고리의 다른 글
Artifact Registry repo에 이미지 Push 안될때 (IAM 권한 다 있어도) (0) | 2024.10.24 |
---|---|
Airflow 유저 접속 안될때 확인 방법 (1) | 2024.10.24 |
GKE에 argocd 설치하기 (0) | 2024.04.11 |
ubuntu 22.04 인증키 에러 발생시 해결방법 (GCP VM) (0) | 2024.02.26 |