Skip to content

go-event-notifier handles some event (e.g. cloud logging) to notify slack, etc.

Notifications You must be signed in to change notification settings

kotaroyamazaki/go-event-notifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

概要

アプリケーション上で発生したイベントを通知するアプリケーション。 CloudRun にデプロイして PubSub から受け取った特定のイベントを通知先に通知する。 現在 CloudLogging で発生したエラーレベル以上のイベントを Slack への通知を想定した実装になっている。

CloudRun へのデプロイ手順

  1. 環境の設定
gcloud auth login
ENV={dev|prd}
PROJECT_ID=sample-$ENV
gcloud config set project $PROJECT_ID
  1. Container Registory へ image の push
IMAGE_NAME=sample-logging-notifer-$ENV
gcloud builds submit --tag gcr.io/$PROJECT_ID/$IMAGE_NAME
  1. Cloud Run へのデプロイ
gcloud run deploy --image gcr.io/$PROJECT_ID/$IMAGE_NAME --platform managed

PubSub の設定

権限の付与

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

PubSub Subscription の設定

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

Cloud Logging の設定

ログルーターの設定

GCP コンソールのlogging からログルーター を選択し、以下の条件で PUbSub のトピックにレベルがエラー以上のものを push するように設定する

resource.type = cloud_run_revision AND severity >= ERROR

テスト

.env のSLACK_WEBHOOK_TEST_URLにテスト送信先の WEBHOOK URL を設定

go test -run ./logging/

About

go-event-notifier handles some event (e.g. cloud logging) to notify slack, etc.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages