Post on 28-May-2015
description
SonicGardenで実践している
安達 輝雄 (Teruo Adachi)
自己紹介
安達 輝雄 (Teruo Adachi)
昔はバリバリのインフラ屋。今は開発からインフラまで幅広く対応。自称フルスタックエンジニア
福岡出身の独身エンジニア 30歳
創業メンバー
さっそく弟子へ質問。
システム運用というと
何を思い浮かべる?
”サービスを安定稼働させる”
ための取り組み全般
一般的 には...
安定稼働させるためには何をすればよい?
監視
サービス監視特定のURLにアクセスして応答があるかを確認問題があればメンバーに通知
アクセス不可を検出して早く復旧させることが目的
監視サーバ
アプリケーションサーバ
URL監視
ホスト監視
利用者
本当にこれで大丈夫?
n 監視サーバが落ちても気づくように
n 同一クラウドからの監視にならないように ※ユーザの多い地域からリクエスト
障害に気づけない事態を回避
監視サーバ(国内)
アプリケーションサーバ
URL監視
ホスト監視
監視サーバ(外国)
サブ監視サーバ
Availability monitoring
早く復旧させるには
n 複数台構成にする
n Opsworks や AutoScale などの
仕組みに乗っかる
n … etc
プロセス監視特定のプロセスが起動しているかを確認
想定外のプロセス異常終了を検知して早く復旧することが目的
Linux
Web ServerApacheNginx
Mail ServerPostfixSendmail
RDBMSMySQLPostgresql
Otherscrondrsyslogd…
番犬が監視
本当にこれで大丈夫?
サーバ起動時の自動起動(systemd services)も忘れずに
番犬は異常検出時に任意のコマンドを実行して
プロセス再開の仕組みを提供
自動復旧!
リソース監視サーバリソースの状況をモニタリング Disk / CPU / Memory / Network
閾値に近づいていたらアラート
異常状態に早く気づくことが目的
本当にこれで大丈夫?
これと言ってない。。。
パフォーマンス監視アプリケーションやミドルウェア等の状況を監視ボトルネック解消のための情報を把握
低下に気づき、改善することが目的
本当にこれで大丈夫?
ボトルネックはわかったけど、どうやって解消すればいい?
気合!?
アプリケーションのパフォーマンス改善
NewRelicは本番環境の計測だけでなく開発においても便利!
http://localhost:3000/newrelic
ミドルウェアのパフォーマンス改善
基本的には Munin で取得しているリソース状況よりボトルネックを判断
基本的には Munin で取得しているリソース状況よりボトルネックを判断
ボトルネック改善に時間がかかるなら...
基本的には Munin で取得しているリソース状況よりボトルネックを判断
ボトルネック改善に時間がかかるなら...
n EC2インスタンス スケールアップ / スケールアウト
n EBS IOPSを利用
インフラコストも年々低下
エラー監視アプリケーションエラーを検出して通知
いち早く発生したエラーに気づき、不具合修正することが目的
本当にこれで大丈夫?
同一構成のstaging環境を準備し、エラーの再現性/リリース前チェックを実施
http://staging.app.com
本番APサーバ
利用者
本番DBサーバ
StagingAPサーバ StagingDBサーバ
M/Wのバージョンも統一
http://production.app.com
サーバスペックは最小限に
バッチ処理などのエラーハンドリングも
お忘れなく
ここからは世間ではあまり聞かない監視項目
キュー監視タスクが溜まっていないかをチェック・DelayedJob / Rescue / sidekiq・Postfix Mail queue
バックアップデータ監視データのバックアップがリモートに保存されていることを確認
他にも...
BackupsのsnapshotをS3に転送する機能 on Heroku
n 実データのフルバックアップ (tar.gz / zip)
n インスタンスのAMI
n Data領域のEBS snapshot
バックアップの種類はさまざま
これら全てを監視!!
AWS
監視で利用しているツールのまとめ
サービス監視 Nagios / NewRelic
プロセス監視 Monit
リソース監視 Munin / Monit
パフォーマンス監視 NewRelic / Munin
エラー監視 AirBrake / Bugsnag / PaperTrail
バックアップ監視 自社ツール
http://blog.mah-lab.com/2013/04/12/sonicgarden-heroku-2013/
プラットフォーム別の監視項目
こんな感じでサービスを安定稼働させるための
取り組みを実施してます
当たり前すぎ?当たり前を疎かにすると
痛い目に遭うかも!?
”サービスを安定稼働させる”ための取り組み全般
一般的 には...
と言いましたが...
”サービスを進化させつつ安定稼働させる”ための取り組み全般
SonicGarden では...
なのです。
“進化させつつ”を
実現するために
Developers の取り組みは
を実施するのが当たり前。
n ソースコードのリファクタリング
n フレームワークのバージョンアップ
Operationsでも
をするのが当たり前??
n システム構成のリファクタリング
n OSのバージョンアップ
システム構成を変化させるのはリスクが高くて嫌だ・・・
この不安を取り除くために
serverspec
残念。お時間です。
続きは次回・・・
今日のまとめ
システム運用での11の常識
常識① 監視を怠るべからず
ご清聴ありがとうございました。