PagerDutyとAsanaをzapierをつかって連携させてみた

zapierをつかってPagerDutyとAsanaを連携させる方法をまとめます。

zapier.com

モチベーション

PagerDutyのIncidentをSlackに通知をして、その対応をAsanaでタスク化して運用をするうえで Asanaのタスク化を自動化させたい。そんなときzaiperは zap という単位でAサービスで発生したイベントをトリガーにBサービスにアクションを行うという一連の運用フローを自動化することができる。

PagerDutyでIncidentが新しく作られたら Asanaでタスクを作成する、このような運用フローがzaiperのダッシュボードからポチポチと設定するだけで自動化できる。

連携させてみた

f:id:n_soushi:20170426093701p:plain

zaiperのダッシュボードは直感的で設定フローの理解もすぐにできた。
PagerDutyをトリガーにAsanaでタスクを作るというフローだけど、他にもステップを追加することができる。例えばGoogleCalendarにイベントを追加したりgithubでissue化したり認証できるサービスであれば多様なステップを作ることができる。

ここからはzaiperの設定フローで補足したいところをまとめていく。

設定フローの補足

PagerDutyの設定

  • Incidentの発生条件はオプションで設定できる。
    • Incidentが誰にアサインされたかを指定したり、どのイベントタイプをトリガーにするか指定できる。
    • 今回は誰にアサインされたかは指定せず、イベントタイプはTriggerとした。つまり認知していない新規のIncidentの発生がトリガーとなる。
  • zaiperはPagerDutyのイベントを検知するためにEndpoinURLを生成するのでPagerDuty側でそのURLをWebhookに追加する必要がある。

Asanaの設定

  • 今回はAsanaのタスクを作成するアクションにしたが、StoryProjectなど他のアクションも設定できる。
  • タスクを生成するうえでタスクのタイトルやメモなどをテンプレートとして設定できる。
    • PagerDutyのIncidentから要素を取得することができるので、タイトルにIncidentのServiceNameやメモにIncidentのURLStatusなどを変数としてテンプレート化できる。
    • 今回は次のように設定してみた。 f:id:n_soushi:20170426100129p:plain
  • その他にもタスクを誰にアサインするかなどタスクの要素を細かく設定できる。 f:id:n_soushi:20170426100510p:plain

動かしてみる

あらかじめPagerDutyとAsanaはSlackと連携させているのでIncidentとタスクのイベントに応じてSlackに通知されることが確認できた。

f:id:n_soushi:20170426100917p:plain

実際にPagerDutyでIncidentを発生させてみて、Incidentが発生した通知の後にAsanaのタスクが作成されていることが分かる。

f:id:n_soushi:20170426101532p:plain

AsanaのタスクにはIncidentの情報が参照されていてzaiperで設定したAsanaのテンプレートが適応されていることが確認できる。

まとめ

zaiperをつかって運用フローの自動化を試してみた。zaiperのダッシュボードは使いやすい印象でつくってる方たちも好印象だった。
zaiperのプランはzapとタスクの数でグレードが分かれている。あとはzapierが稼働するのがBasicだと15分毎でBusiness以降は5分毎なので運用要件に合わせたプラン選択が必要だと感じた。

他のzapの組み合わせとしてはGoogleカレンダーにイベントが登録されたのをトリガーにSlackにイベントを通知する連携方法なども試しみたりした。

f:id:n_soushi:20170426161411p:plain

GoogleカレンダーのイベントをトリガーにしてSlackで告知するような運用はよくあるケースなので、まずはこういったところから導入を始めて、運用に合わせてzapを増やしていくとよさそうである。