ChatOps
本ドキュメント全体を通して !
で始まるさまざまなチャットコマンドが言及されています。(例:!ic page
)私たちにはSlackルーム内で稼働するボットがあり、コマンドを検知するとさまざまなアクションを実行してくれます。このページは、ドキュメントで言及されているコマンドの概要と、裏側でどのような働きをするのかをお伝えします。
これらのボットはオープンソースですか?
チャットのプラグインとボットは現在オープンソースにはなっていませんが、いずれはオープンソース化し皆さんが活用できるようにしたいと思います。それまでのあいだ、あなた自身のツールで同じような機能を再現する上で、このページの内容がお役に立てることを願っています。
インシデント対応#
!ic
コマンドは、PagerDuty APIを裏で呼び出し、指定内容に応じたさまざまなオンコールスケジュールを取得します。現在オンコール中のユーザの名前や連絡先情報をキャッシュしており、APIリクエストに問題があった場合も機能が影響を受けないようになっています。
!ic
#
このコマンドは、現在のオンコール中のインシデントコマンダーと電話番号をリストし、彼らに通知を送る方法を表示します。
!ic page
#
このコマンドは、インシデント対応プロセスを手動で開始するものです。キャッシュされたスケジュール情報を用い、現在オンコール中の全てのインシデントコマンダーへ通知を送ります。(プライマリ、バックアップ、そしてシャドーイングを行う訓練中のメンバーです)また、なんらかの理由で彼らに通知できなかった場合もルーム内に知らせ、連絡先情報を使って手動で連絡するようユーザーに促します。加えて、PagerDuty上に新しいインシデントを作成し、ユーザーをリンクします。
なんらかの理由で自動的にインシデントコマンダーへ通知できなかった場合、ボットは失敗を知らせ、手動で電話できるよう関係者の電話番号を教えてくれます。以下はボットをテストした際のサンプル出力で、API呼出に失敗したためにPagerDuty経由で通知が送れなかった場合をシミュレートしたものです。
!ic responders
#
これは !ic
コマンドと似たような動きをしますが、インシデントコマンダーのスケジュールだけでなくすべてのサービスチームのスケジュールを利用します。このコマンドでは、各エンジニアリングチームで現在オンコール中のすべての人たちがリストされます。これは、現時点でインシデント会議に誰が参加する可能性が高いかを知る上で便利です。
!ic page responders
#
これも !ic page
コマンドと似た動きをしますが、インシデントコマンダーの代わりに対応者(Responder)のリストにいる人たちだけに通知を行います。通常は関連するチームだけが通知されるため、このコマンドはめったに利用されません。しかし、ときには全員参加での対応が求められるケースもあり、すべてのオンコール中の人たちに素早く通知を行う機能が必要になります。
!ic who <user>
#
たまに、特定の人を指定して会議に招集したいときがあります。このコマンドは特定のユーザーの連絡先情報をリストし、通知する方法をメッセージで教えてくれます。
!ic page <user>
#
ユーザーネームを指定して特定の人へ通知します。
ステータス#
!status
コマンドは、私たちの内部モニタリングシステムを参照し、システムそのものからレポートされる内容に応じて現在のシステムの状態を特定します。これは、自動的に私たちへ問題を知らせるアラート用ツールが利用するステータスです。
!status
#
このコマンドは、現在のシステムの状態の概要を教えてくれます。また、もしステータスをチェックできなかった場合には、それ自体なんらかの問題を示唆している可能性があるので、警告します。しかし通常は NORMAL
のステータスを表示するでしょう。
!status stalk
#
これは上記のコマンドと同じことをしますが、!status unstalk
で止めるまで30秒おきにリクエストを行います。そして、前回チェックしたときの状態から変化があったときだけチャットルームに知らせます。インシデント発生中にこのコマンドを実行しておくことで、手動でモニタリングツールをチェックしなくても、システムの状態が悪化しているのか回復しているのかを容易に把握することができます。