アプリケーション上で発生したイベントを通知するアプリケーション。 CloudRun にデプロイして PubSub から受け取った特定のイベントを通知先に通知する。 現在 CloudLogging で発生したエラーレベル以上のイベントを Slack への通知を想定した実装になっている。
- 環境の設定
gcloud auth login
ENV={dev|prd}
PROJECT_ID=sample-$ENV
gcloud config set project $PROJECT_ID
- Container Registory へ image の push
IMAGE_NAME=sample-logging-notifer-$ENV
gcloud builds submit --tag gcr.io/$PROJECT_ID/$IMAGE_NAME
- Cloud Run へのデプロイ
gcloud run deploy --image gcr.io/$PROJECT_ID/$IMAGE_NAME --platform managed
Cloud Run サービスデプロイ後、メッセージを push するように Pub/Sub を構成する。 PROJECT_NUMBER は gcp console から確認する ※はじめの一回のみ
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator
gcloud iam service-accounts create cloud-run-pubsub-invoker \
--display-name "Cloud Run Pub/Sub Invoker"
gcloud run services add-iam-policy-binding $IMAGE_NAME \
--member=serviceAccount:cloud-run-pubsub-invoker@$PROJECT_ID.iam.gserviceaccount.com \
--role=roles/run.invoker
gcloud pubsub topics create cloudlogging
$ENDOPOINT={https://...}
gcloud pubsub subscriptions create error-sub --topic cloudlogging \
--push-endpoint=$ENDOPOINT\
--push-auth-service-account=cloud-run-pubsub-invoker@$PROJECT_ID.iam.gserviceaccount.com
GCP コンソールのlogging
からログルーター
を選択し、以下の条件で PUbSub のトピックにレベルがエラー以上のものを push するように設定する
resource.type = cloud_run_revision AND severity >= ERROR
.env のSLACK_WEBHOOK_TEST_URL
にテスト送信先の WEBHOOK URL を設定
go test -run ./logging/