pagerdutyの話

More than 3 years have passed since last update.

=====

pagerdutyを導入する時、調べたログとおまけ


機能


  • email,notificationは送り放題

  • 電話,SMSは1userあたり100コールまで


    • 追加料金で受けることは可能

    • 制限は全ユーザ数合算で行われるので5userいたら500コールまで料金内



  • サービスという概念で通知元を登録


    • nagios,cloudwatch,emailとかいくつかの入信方法から一つをサービスごとに選べる

    • emailを選ぶと[好きな文字列]@[アカウント名].pagerduty.com 的なアドレスが払い出される

    • サービスごとにwebhookを複数ぶらさげれれて、hipchatやslackなんかに通知を投げれる

    • サービスごとに発生したアラートを閲覧できる

    • 解決されてないインシデントがぶらさがってるとサービス自体のstatusがcriticalになって赤くなる

    • サービスは必ず一つのエスカレーションポリシーを持つ

    • 誰かが取得したインシデントに対して一定時間経過で再度全員に通知する機能と、インシデントを一定時間で解決にするお掃除機能がある

    • どっちも時間を結構チューニングしないと使えなさそう

    • メンテナンスの時用に通知を止める機能もある



  • エスカレーションポリシー


    • alert入信後のアサインの仕組みの定義

    • 一次受け、二次受け、....、n次受けが定義できる

    • 定義のフローは

    • まず最初に一次受けに通知がはいり、全員がアサインされる

    • 通知を受け取った人たちがインシデント(alert)に対してステータスを認知に変更する

    • もし誰もステータスを認知にせずに定義されたn分が経過した場合には自動でエスカレーションされる

    • 仮に認知した場合でも自分では判断できない場合はマニュアルでエスカレーションを選択することも可能

    • 最終エスカレーション先に達した場合は認知になるまで通知を繰り返す定義が可能



  • ユーザ


    • アカウントに紐づいて、ユーザを複数追加できる

    • 追加するにはadmin権限のユーザアカウントである必要あり

    • 1ユーザに4種類の通知方法を設定できる

    • email (複数可能)

    • notification (iphoneとandroidアプリインストール必要、インストールした端末ごとに設定可能)

    • SMS番号

    • 電話番号

    • 通知手段はユーザが設定する(ユーザ紐付き)

    • どの通知手段を使うか(複数設定可能)

    • 発生からn分後認知していなかった場合に再通知する通知手段(複数可能)


      • 例) 0分後にemail,notification, 5分後にemail, 10分後に電話



    • 自分がアサインされているインシデントのstatusが変更になった場合の通知方法の設定

    • スケジュール通知の際の通知方法の設定



  • インシデント


    • あるサービスからの入信(alert)をincidentという単位でとり扱う

    • statusとassignで管理

    • statusは一つの値を持ち、assignは複数人が設定可能

    • インシデントの入信があるとそのサービスのエスカレーションポリシーに基づいて一次受けにassignされ、status:triggeredが設定される

    • ackボタンが存在し、誰かがクリックするとその人にassignされ、status:Acknowledgedに変更される

    • 解決ボタンを押すとstatus:resolvedになりassignは全員解除される

    • マニュアルで同じエスカレーションポリシーの別のエスカレーションレベルの人にassignし直すことが出来る


      • assignに自分が入っているか、statusは何かで再通知の設定がユーザ設定で出来るので、効率良い再通知はできそう



    • 解決していないインシデントがあるとエスカレーションポリシーを変更できないという地味に嫌な仕様がある

    • 自分がassignにはいって、解決していないインシデントが一覧で見える

    • マニュアルでインシデントを作成することができ、監視に現在はいっていない問題で通知したい際などに便利

    • もちろんどれかのサービスにぶら下がる必要はあり。

    • ある程度前もってサービスを分離しておくことで必要な人に通知できそう

    • インシデントを追加してブラウザに反映されてから最大30秒くらいnotificationが来るまでに遅延があった(数回のテスト)

    • インシデントごとにassinや通知をした記録のlogがあり、noteでlogとしてコメントも残せる



  • nagios-plugin



  • android(iphone)アプリ


    • 自分に関連するインシデント一覧を操作するだけの非常にシンプルなUI

    • ack、解決、再アサイン(エスカレーション)全てできるので、通常時はこれだけで必要な操作は全てできそう

    • 携帯にnotificationがきて、アプリ開いて、ackボタンを押す。他の人は誰がアサインされてるか見て安心できる



  • 電話


    • 国際電話でかかってくる +81

    • descriptionとどのserviceかを読み上げてくれる

    • button pushで再読み上げ、ステータス変更等を実行してくれる



  • レポート


    • インシデントの解決や処理時間など、いろいろ統計を出してくれる機能

    • 各通知の総数はここで確認できるので、料金内かどうかは確認できそう

    • 20ユーザがいたらそれぞれユーザごとに制限じゃなく、アカウント全体で20*100まで料金内みたいな計算の模様。



  • API操作


    • APIkeyを発行していろいろ操作が可能




お値段


  • 一人あたり月額$49, 年払いだと39$

  • 電話とSMSによる通知は1ユーザ月100通まで料金内。


    • 超えた分は1通、$0.35



  • クレジットカード決済

  • 電話による通知に制限があり追加料金がかかるけど、通知手段の選択はユーザ紐付きなので、場合に寄っては超過料金は結構行きそう


おまけ

使いだしてからエスカレーションポリシーの各レイヤーに

それぞれ10ユーザしか登録できないことが判明。

(max 10 ってグレーの文字で書いてあるの見逃してた)

できればもう増やせない?って聞いてみた結果


  • アラートを10人以上が受けるのって混乱を生むのでやめたほうがいい

  • どうしてもやりたいなら


    • メーリングリストを追加しろ

    • 複数レイヤーを10人未満にして、最初のレイヤーが通知を受け取ってから(最短)5分で次のレイヤーに通知が飛ぶように設定しろ



とのことでした。