Upgrade to Pro — share decks privately, control downloads, hide ads and more …

障害対応を自動化した話 / 20220609_Automation

障害対応を自動化した話 / 20220609_Automation

Cdf97a1b1b132c56582773c3ba09a3a6?s=128

Rakus_Dev

June 09, 2022
Tweet

More Decks by Rakus_Dev

Other Decks in Technology

Transcript

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

  2. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 自己紹介 • 名前:下西 章王 (しもにし

    あきおう) • 出身:大阪 • 趣味:ゴルフ、野球、サウナ、麻雀、etc… • 所属:ラクス インフラ開発部 • 業務内容:インフラを担当してます。 コーポレートサイト・サービスサイトの運用・保守 メール配信システムの運用・保守
  3. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 今日話すこと • 自動化した内容 • 使ったツールの話

    • こんなことしました • まとめ
  4. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 自動化した内容

  5. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 自動化した内容 メール配信システムの話 • 障害の内容 •

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

    キューがなくなったの確認して… とめんどくさい。。。 そしてまぁまぁな頻度で発生する…(ならすと1日1回以上…) ヨシ。自動化しよう。
  7. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 使ったツールの話

  8. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 使ったツールの話 • Prometheus (監視のデータ収集) •

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

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

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

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

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

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

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

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

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

  18. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 構成 MQを監視 アプリ アラート発砲 ジョブを実行

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

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

  21. #RAKUSMeetup ©2019 RAKUS Co., Ltd. まとめ GrafanaからRundeckへ連携ができるようになったことで、障害の自動復旧がやり やすくなりました。 手順が決まっているような障害には使えるはず… 無駄な作業は機械にやらせてしまいましょう。

    自動復旧に頼ってしまうとそもそもの根本原因の解決が後回しになってしまうこ とは注意が必要です。 (この件でいうと障害の根本原因を解決していないのは内緒。)
  22. #RAKUSMeetup ©2019 RAKUS Co., Ltd. ご清聴ありがとうございました