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

Backlog の運用監視 / Operational Monitoring of Backlog

Backlog の運用監視 / Operational Monitoring of Backlog

2017年10月30日(月)に行われたGeeks Who Drink in福岡 モニタリング勉強会edition でヌーラボの松浦が発表した、「Backlogの運用監視」の資料です。

[email protected]
PRO

October 30, 2017
Tweet

Other Decks in Technology

Transcript

  1. Backlog の運用監視
    松浦 祐亮 ‒ Nulab Inc.
    Geeks Who Drink in Fukuoka
    モニタリング勉強会 Edition

    View Slide

  2. 自己紹介
    ‒ Yusuke Matsuura @matsuzj ‒ Nulab Inc.
    ‒ Site Reliability Engineer @Backlog
    ‒ 趣味は登山・キャンプ
    ‒ Job
    ‒ Web サービスの開発/運用を始めて11年ぐらい経ちます
    ‒ アプリケーションエンジニアからインフラ方面へ
    ‒ 現在は運用・改善・トラブルシュート等
    ‒ Team
    ‒ 2015年7月から Nulab のインフラ担当としてジョイン
    ‒ 2016年9月から SRE チームを2名で発足
    ‒ 2017年8月から SREメンバーが追加されて3名体制へ

    View Slide

  3. 話す内容
    1. Backlog の歴史と経緯
    2. Backlog の運用と監視の概要
    3. 運用監視内容と改善サイクルについて
    4. 今後改善したいこと

    View Slide

  4. 1. Backlog の歴史と経緯

    View Slide

  5. 有料契約数の推移
    2006年に Backlog の正式版を
    リリースして11年経過
    2017年4月時点で
    利用契約数は50,000
    そのうち有料契約数は5,000
    無料契約数は45,000
    もう少しで有料契約数が6,000

    View Slide

  6. 増える運用環境
    2011年からAWSへ移行3環境で開始
    2013年に4環境
    2015年に5環境
    2017年に7環境
    現在のサーバ数は200台弱まで増えた

    View Slide

  7. 11年もやってるとレガシーな
    システムになって運用も大変
    なんじゃない?

    View Slide

  8. 改善内容 ‒ 開発
    ・UI変更
    ・Nulab Apps 連携(認証機能強化)
    ・クレジットカード決済対応
    ・Jenkins にてCI/CDを実施しており
    だいたい2週間に一回はアプリケーシ
    ョンがデプロイされています
    ・機能単位で Play / Scala へ移行中

    View Slide

  9. 改善内容 ‒ 運用
    ・Infrastructure as Code の実施
    (Terraform, Ansible,
    Serverspec, awspec)
    ・運用環境をより安定性の高いものへ
    移行(EC2, ALB , RDS for Aurora,
    ElasticCash, VPC)
    ・ミドルウェアの改善・開発(Proxy
    サーバ設置, Git SSH サーバの更新、
    画像配信方法の変更)

    View Slide

  10. 長くBacklog を使っていただ
    けるようにメンバー全員で常
    に改善を実施しています

    View Slide

  11. 前置きが長くなりましたが運
    用と監視について説明してい
    きます

    View Slide

  12. 2. Backlog の運用と監視概要

    View Slide

  13. 監視概要
    仮想マシン ( AWS 提供 )
    外部ホスト
    OS
    ミドルウェア
    アプリケーション
    Cloudwatch
    mackerel
    サービス ( Backlog )
    nagios
    Serverspec
    awspec
    Fluentd

    View Slide

  14. Nagios
    ユーザーの操作に近いところを監視しています
    ・アプリケーションの外形監視
    ・Git にログインできるか
    ・WebDAV にログインできるか
    ・SSL 証明書の有効期限は過ぎていないか
    ・RDS のAレコードのチェック(フェイルオーバーの検
    知)

    View Slide

  15. Mackerel
    ホスト単位の監視はすべて Mackerel (mon)で実施
    ・2014年からMackerelを使用
    ・Role単位でグラフがみれるため傾向分析がしやすい
    ・インスタンスのスケールアップした後傾向分析しやすい
    ・さっとプラグインを作成できるのがお気に入り

    View Slide

  16. Mackerelグラフサンプル

    View Slide

  17. Fluentd
    ・アプリケーションログをパースして通知したい場合等に
    利用
    ・すべての環境の MySQL スローログを集約し、毎日 pt‒
    query‒digest で傾向分析する

    View Slide

  18. Serverspec
    サーバの構成をテスト
    ・変更点がレポジトリに push された場合に Jenkins に
    てテストを実施
    ・日に3回 Jenkins によるテストを実施
    ・ミドルウェアやアプリケーションの設定値が正しいか
    ・ディスクのマウント先が正しいか
    ・必要なデーモンが起動しているか
    ・サーバプロビジョニングが正しく行われたか
    ・Serverspec が通ってから Mackerel を起動します

    View Slide

  19. awspec
    AWSリソースの設定をテスト
    ・RDSの構成チェックやパラメータグループの設定
    ・EIPが正しいインスタンスにアタッチされているか
    ・EBSが正しいインスタンスにアタッチされているか
    ・永続化層は Terraform では作成しないためテストを書
    いている

    View Slide

  20. 監視まとめ
    ・Mackerel だけ監視することはできるが、冗長化のため
    Nagios は残しています
    ・無駄に見えるところもあるが多重でチェックをかけるよ
    うにしている
    ・複雑になっても気づかないよりはましなので監視項目を
    増やしたが少し煩雑になってきている
    ・マネージドのサービスを使っていないインスタンスはい
    つでも入替えられるように構成管理のテストを充実させて
    います
    ・通知のチャネルは Typetalk 使ってます

    View Slide

  21. 3. 運用監視内容と改善サイク
    ルについて

    View Slide

  22. 改善内容
    日々の運用状況をみて発生ベースで対応しています
    ・アプリケーションの負荷状況をみてアプリケーションサ
    ーバを増やす
    ・DBサーバの負荷状況に応じてスケールアップする
    ・アプリケーションのデプロイに問題があれば状況をみて
    ロールバックを実施、原因がわかっていればサーバの数を
    増やす、スケールアップをして次のリリースまで運用する
    こともある( リリース予定は Google Calendar に記載 )
    ・わりとフレキシブルに構成変更をしています

    View Slide

  23. 監視内容を改善するタイミング
    Topic for Nagios
    Topic for CI/CD
    Topic for Mackerel
    サーバの状況が変わるアクションは
    随時Typetalkで監視し検知する
    ようにしている 日々の運用監視の兆候をチェッ
    クし状況に応じて、サーバを操
    作したり、監視項目を追加して
    いる
    Nulaber
    Topic for DEV Nulabers
    ‑ SRE/DEV

    View Slide

  24. 4. まとめ・今後改善したいこと

    View Slide

  25. 問題点
    今回改めて本を読みました
    Mackerel を生かしきれてない箇所がめ
    だった
    ・Ansible での Role が細分化されてい
    ない箇所があるため、そのまま監視項目
    が反映されている
    ・独自プラグインを書いているものも多
    いので公式によせていく

    View Slide

  26. まとめ・今後改善したいこと
    ・監視内容は日々の積み重ね
    ・定期的な監視項目の見直しが足りていない
    ・不要なものは削除する
    ・ホストが日々増えていくが、削減に対する意識が足りなかった
    ・増えた go‒check‒plugins をチェックする
    ・mkr で Mackerel 監視項目のコード化
    ・マルチロールによる運用に変更
    ・通知先の統一(PagerDuty導入)

    View Slide

  27. インフラエンジニア募集
    https://nulab‑inc.com/ja/about/careers/

    View Slide

  28. View Slide