PagerDutyとAsanaをzapierをつかって連携させてみた
zapierをつかってPagerDutyとAsanaを連携させる方法をまとめます。
The best apps. Better together. - Zapier
モチベーション
PagerDutyのIncidentをSlackに通知をして、その対応をAsanaでタスク化して運用をするうえで Asanaのタスク化
を自動化させたい。そんなときzaiperは zap
という単位でAサービスで発生したイベントをトリガーにBサービスにアクションを行うという一連の運用フローを自動化することができる。
PagerDuty
でIncidentが新しく作られたら Asana
でタスクを作成する、このような運用フローがzaiperのダッシュボードからポチポチと設定するだけで自動化できる。
連携させてみた
zaiperのダッシュボードは直感的で設定フローの理解もすぐにできた。
PagerDutyをトリガーにAsanaでタスクを作るというフローだけど、他にもステップを追加することができる。例えばGoogleCalendarにイベントを追加したりgithubでissue化したり認証できるサービスであれば多様なステップを作ることができる。
ここからはzaiperの設定フローで補足したいところをまとめていく。
設定フローの補足
PagerDutyの設定
- Incidentの発生条件はオプションで設定できる。
- Incidentが誰にアサインされたかを指定したり、どのイベントタイプをトリガーにするか指定できる。
- 今回は誰にアサインされたかは指定せず、イベントタイプは
Trigger
とした。つまり認知していない新規のIncidentの発生がトリガーとなる。
- zaiperはPagerDutyのイベントを検知するためにEndpoinURLを生成するのでPagerDuty側でそのURLをWebhookに追加する必要がある。
Asanaの設定
- 今回はAsanaのタスクを作成するアクションにしたが、
Story
やProject
など他のアクションも設定できる。 - タスクを生成するうえでタスクのタイトルやメモなどをテンプレートとして設定できる。
- PagerDutyのIncidentから要素を取得することができるので、タイトルにIncidentの
ServiceName
やメモにIncidentのURL
やStatus
などを変数としてテンプレート化できる。 - 今回は次のように設定してみた。
- PagerDutyのIncidentから要素を取得することができるので、タイトルにIncidentの
- その他にもタスクを誰にアサインするかなどタスクの要素を細かく設定できる。
動かしてみる
あらかじめPagerDutyとAsanaはSlackと連携させているのでIncidentとタスクのイベントに応じてSlackに通知されることが確認できた。
実際にPagerDutyでIncidentを発生させてみて、Incidentが発生した通知の後にAsanaのタスクが作成されていることが分かる。
AsanaのタスクにはIncidentの情報が参照されていてzaiperで設定したAsanaのテンプレートが適応されていることが確認できる。
まとめ
zaiperをつかって運用フローの自動化を試してみた。zaiperのダッシュボードは使いやすい印象でつくってる方たちも好印象だった。
zaiperのプランはzapとタスクの数でグレードが分かれている。あとはzapierが稼働するのがBasicだと15分毎
でBusiness以降は5分毎
なので運用要件に合わせたプラン選択が必要だと感じた。
他のzapの組み合わせとしてはGoogleカレンダーにイベントが登録されたのをトリガーにSlackにイベントを通知する連携方法なども試しみたりした。
GoogleカレンダーのイベントをトリガーにしてSlackで告知するような運用はよくあるケースなので、まずはこういったところから導入を始めて、運用に合わせてzapを増やしていくとよさそうである。