저는 최근 7일 동안의 세션 수를 시각화하는 그래프를 사용하여 Slack 알림을 자동화하는 시스템을 구축했습니다. 이는 데이터 처리 및 그래프 생성을 위한 Cloud Run 기능과 실행 예약을 위한 Cloud Scheduler의 조합을 사용하여 달성되었습니다.
Cloud Run 기능은 BigQuery에 쿼리하여 세션 데이터를 가져오고 Matplotlib를 사용하여 선 차트를 만든 다음 Slack API를 통해 차트를 Slack으로 보냅니다. 다음 단계에서는 설정 프로세스를 간략하게 설명합니다.
main.py의 코드는 다음과 같습니다. 실행하기 전에 SLACK_API_TOKEN 및 SLACK_CHANNEL_ID를 환경 변수로 설정해야 합니다. 나중에 설정하므로 지금은 비워두어도 됩니다.
import os import matplotlib.pyplot as plt from google.cloud import bigquery from datetime import datetime, timedelta import io import pytz from slack_sdk import WebClient from slack_sdk.errors import SlackApiError def create_weekly_total_sessions_chart(_): SLACK_TOKEN = os.environ.get('SLACK_API_TOKEN') SLACK_CHANNEL_ID = os.environ.get('SLACK_CHANNEL_ID') client = bigquery.Client() # Calculate the date range for the last 7 days jst = pytz.timezone('Asia/Tokyo') today = datetime.now(jst) start_date = (today - timedelta(days=7)).strftime('%Y-%m-%d') end_date = (today - timedelta(days=1)).strftime('%Y-%m-%d') query = f""" SELECT DATE(created_at) AS date, COUNT(DISTINCT session_id) AS unique_sessions FROM `<project>.<dataset>.summary_all` WHERE created_at BETWEEN '{start_date} 00:00:00' AND '{end_date} 23:59:59' GROUP BY date ORDER BY date; """ query_job = client.query(query) results = query_job.result() # Prepare data for the graph dates = [] session_counts = [] for row in results: dates.append(row['date'].strftime('%Y-%m-%d')) session_counts.append(row['unique_sessions']) # Generate the graph plt.figure() plt.plot(dates, session_counts, marker='o') plt.title('Unique Session Counts (Last 7 Days)') plt.xlabel('Date') plt.ylabel('Unique Sessions') plt.xticks(rotation=45) plt.tight_layout() # Save the graph as an image image_binary = io.BytesIO() plt.savefig(image_binary, format='png') image_binary.seek(0) # Send the graph to Slack client = WebClient(token=SLACK_TOKEN) try: response = client.files_upload_v2( channel=SLACK_CHANNEL_ID, file_uploads=[{ "file": image_binary, "filename": "unique_sessions.png", "title": "Unique Session Counts (Last 7 Days)" }], initial_comment="Here are the session counts for the last 7 days!" ) except SlackApiError as e: return f"Error uploading file: {e.response['error']}" return "Success"
requirements.txt 파일을 만들고 다음 종속성을 포함합니다.
functions-framework==3.* google-cloud-bigquery matplotlib slack_sdk pytz
Cloud Scheduler 또는 기타 서비스가 Cloud Run 기능을 호출하도록 허용하려면 해당 항목에roles/run.invoker 역할을 할당해야 합니다. 이를 수행하려면 다음 명령을 사용하십시오.
gcloud functions add-invoker-policy-binding create-weekly-total-sessions-chart \ --region="asia-northeast1" \ --member="MEMBER_NAME"
MEMBER_NAME을 다음 중 하나로 바꾸세요.
Cloud Scheduler를 사용하여 매주 월요일 오전 10시(JST)에 함수 실행을 자동화하세요. 구성 예는 다음과 같습니다.
Cloud Run 기능을 활성화하여 Slack 알림을 보내려면 다음 단계를 따르세요.
모든 것이 설정되면 Slack 채널은 다음과 같은 그래프가 포함된 주간 알림을 받게 됩니다.
위 내용은 Cloud Run Functions 및 Cloud Scheduler를 사용하여 그래프로 Slack 알림 자동화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!