Sensu Advent Calendarに便乗して、Kaizen Platform, Inc.の2014年12月現在の監視アーキテクチャの話をちょっとしてみようと思う。
モニタリング領域
サービスを監視している領域
Pingdom
- Pingdom - Website Monitoring
- 外部ネットワークからのサービスの死活監視。アメリカ、ヨーロッパ、アジアなどの拠点からサービスの死活監視が出来るため、特定の地域からアクセス出来ない場合なのが検知出来る。
- 後述するstatuspage.ioとの連携で、障害を検知すると、サービスのステータス状況が自動で変わるようになっている
Sensu
- Sensu | The open source monitoring framework.
- 監視フレームワーク
- サーバを内部ネットワークから監視するために利用
- サーバのプロセス監視、サーバ間の疎通監視、エラー監視など一般的な監視はSensuが担当
- 自作の監視プラグインなども利用して監視
Mackerel
- Mackerel: A Revolutionary New Kind of Application Performance Management
- メトリクス監視。
- CPU、メモリ、LA監視などグラフと一緒に確認したいものはMackerelが担当
- CPUアラートが来たら、Mackerelの画面を見て、いつから現象が発生しているかなどすぐに確認が出来る。
Incident Management領域
アラート通知先や障害情報の自動更新を管理している領域
StatusPage.io
- StatusPage.io - Hosted Status Pages for Your Company
- サービスのステータスを外部に公開、障害情報の公開に利用。 Kaizen Platform Inc Status
- Pingdomと連携しているので、サービスに障害があった場合は自動でお知らせが出る。
- Twitter連携しているので障害情報を公開すると、Twitterアカウントにもお知らせが出せる。
PagerDuty
- Incident Management System for IT Monitoring Tools | PagerDuty
- アラートのハンドリングに利用
- 各監視サービスのアラートは全てPagerDutyに集約
- アラートの通知先をSMS、電話、スマホアプリ、チャットなどに設定出来る。
- 通知スケジュールも細かく設定出来るので、日替わりでエスカレーション先のエンジニアを切り替えている
- スマホアプリの出来が良い。
Infomation / Escalation領域
お知らせ、エスカレーション領域
- 前述のstatuspage.ioと連携。
- statuspage.io上で障害情報を掲載するとTwitterにも投稿されるので、障害情報の更新において二度手間が無い。
Slack
- Slack: Be less busy
- 各種アラートがPagerDuty経由でSlackに通知される
- Slackに逐一通知されるんので、アラートの履歴や対応状況などが一目で分かるようになっている
電話、SMS、メール、アプリへのPush通知など
- PagerDutyが通知をハンドリングしてくれるので、「最初はSMSにアラートを送って、反応が無ければ○○分後電話する」など通知設定をして運用している。
- 監視担当の人がその日都合が悪かったりした場合など、通知先の変更が簡単にできる。
その他
- Mackerelの部分には、Datadogも検証。非常に素晴らしいサービスだった。
- 現時点ではDatadogの方が高機能なんですが、MackerelがDatadogの超えてくれるのを期待してMackerelを採用
なぜ複数のサービスを組み合わせて監視しているかは技術顧問の伊藤直也さんのスライドを見ると分かるかと思います。
来年にはガラッと変わっているかもしれないけど、各コンポーネントがAPIで疎結合化されているのでアーキテクチャの変更も容易。
些細な障害、兆候も検知して見逃さないように、いろいろと試行錯誤を繰り返している。