Giter VIP home page Giter VIP logo

go-event-notifier's Introduction

概要

アプリケーション上で発生したイベントを通知するアプリケーション。 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/

go-event-notifier's People

Contributors

kotaroyamazaki avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.