概要
GCPのLoggingから任意のサービスの実行を検知し通知する仕組みを作ります。
今回は任意のDataflowJobの実行を検知し、Slackに通知します。
参考
Dataflowのチュートリアル
GCPのlogging
loggingの高度なフィルタ
StackDriverのWorkspaceを作成
StackDriverのアラート設定
詳細
まずは適当にDataflowのログを流すためにDataflowのチュートリアルを参考にJobを作成していきます。
1. DataflowJobの作成
GCPからDataflowに接続し、初回のチュートリアル又はDataflowのチュートリアルを参考にJobを作成します。
2. 収集するログの定義
Dataflow又は任意のログを流し、Loggingのログベースの指標で収集したいログを定義していきます。
指標エディタはカウンタタイプを選択して以下のようなデフォルトの設定にします。
カウンタタイプは検知したログを単純にカウントするタイプで、通知などの機能を利用するにはカウンタタイプである必要があります。
次に検知するログの定義を書いていきます。下図のように検索窓のドロップダウンから高度なフィルタに変換を選択して検索クエリを入力していきます。
今回取得したいDataflowのログはDataflowの任意のJob作成のため検索クエリは以下のようにしました。
resource.type="dataflow_step"
protoPayload.methodName="dataflow.jobs.create"
protoPayload.request.job_name="dataflow-intro"
高度なフィルタに関してはその他正規表現などサポートしているので、こちらを参考ください。
※ ラベルについての説明は省きます。
3. 通知の設定
初めての方はStackDriverのWorkspaceを作成してください。
StackDriverでログベースの指標からの通知設定をする前にSlack通知の設定をしてください。
準備が整いましたら、先程作成したログベースの指標の三点ボタンから指標に基づいて通知を作成するを選択してください。
StackDriverに遷移した後は取得ログに対しての通知設定をします。
設定に関しては下図のように設定をします。閾値を設定するカウンタの値は一秒あたりの値になるため閾値は0.01などで設定しています。
設定をした後はSave Confitionを押し残りの設定を下図のように適当にしてください。
Notificationの部分に先程連携したSlackが表示されなければ再度、指標に基づいて通知を作成するからやり直してください。
Documentationの部分には通知時に表示したい文字列などを記述してください。
上記の設定が終われば Save Policyを押してください。
設定が終わればもう一度DataflowのJobを流し確認してください。CloudShellで実行した方はhistory残っている実行ログから実行することをオススメします。
感想
CloudWatchLogsを捨てて積極的にLogging+StackDriver使っていきたい