Slide 1

Slide 1 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. ©2019 RAKUS Co., Ltd. 障害対応を自動化した話

Slide 2

Slide 2 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自己紹介 • 名前:下西 章王 (しもにし あきおう) • 出身:大阪 • 趣味:ゴルフ、野球、サウナ、麻雀、etc… • 所属:ラクス インフラ開発部 • 業務内容:インフラを担当してます。 コーポレートサイト・サービスサイトの運用・保守 メール配信システムの運用・保守

Slide 3

Slide 3 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 今日話すこと • 自動化した内容 • 使ったツールの話 • こんなことしました • まとめ

Slide 4

Slide 4 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自動化した内容

Slide 5

Slide 5 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自動化した内容 メール配信システムの話 • 障害の内容 • RabbitMQにメールキューをためているのですが、アプリのバグ?でなぜかキューが1つ残り 続けてしまうことがあります。 • このままでは残ったキューが配信されず、残り続けてしまい、読者に届かない… • 復旧方法はアプリを再起動すれば直る アプリ インターネット キューに残り続ける 再起動で復旧

Slide 6

Slide 6 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自動化した内容 メール配信システムの話 作業時間は5~10分くらいなのですが、 毎回アラートが上がるたびにPCを起動して… アプリ再起動させて… キューがなくなったの確認して… とめんどくさい。。。 そしてまぁまぁな頻度で発生する…(ならすと1日1回以上…) ヨシ。自動化しよう。

Slide 7

Slide 7 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 使ったツールの話

Slide 8

Slide 8 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 使ったツールの話 • Prometheus (監視のデータ収集) • Grafana (監視データの描画・アラート発砲) • Django (Pythonのフレームワーク) • Rundeck (ジョブ実行ツール) 上記を使って自動化しました。

Slide 9

Slide 9 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成

Slide 10

Slide 10 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 アプリ

Slide 11

Slide 11 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 MQを監視 アプリ

Slide 12

Slide 12 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 キューが残っている アラートを検知 アプリ

Slide 13

Slide 13 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 Webhookで Djangoに通知 アプリ

Slide 14

Slide 14 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 APIを叩いて ジョブを実行 アプリ

Slide 15

Slide 15 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 アプリを再起動 アプリ

Slide 16

Slide 16 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 キューを取得し配信 アプリ

Slide 17

Slide 17 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 アプリ 復旧を検知

Slide 18

Slide 18 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 MQを監視 アプリ アラート発砲 ジョブを実行 アプリを再起動 キューを取得し配信

Slide 19

Slide 19 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 使ったツールの話 当時、Rundeckはwebhookを受けられなかったので、仕方なくDjangoを挟みまし たが、現在ではRundeckもwebhookを受けられるようになっています。 これで、Djangoを挟まずに自動復旧ができるようになりました。 が、まだ使ってはいない。。。

Slide 20

Slide 20 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ

Slide 21

Slide 21 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ GrafanaからRundeckへ連携ができるようになったことで、障害の自動復旧がやり やすくなりました。 手順が決まっているような障害には使えるはず… 無駄な作業は機械にやらせてしまいましょう。 自動復旧に頼ってしまうとそもそもの根本原因の解決が後回しになってしまうこ とは注意が必要です。 (この件でいうと障害の根本原因を解決していないのは内緒。)

Slide 22

Slide 22 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. ご清聴ありがとうございました