51
SonicGardenで実践している 安達 輝雄 (Teruo Adachi)

DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

Embed Size (px)

DESCRIPTION

SonicGarden Study #06 で利用したスライド資料です。 今回のテーマは"運用"。 ソニックガーデンではたくさんのサービスを管理・運用しています。 その取組の中で基礎的なことから、他社とはちょっと違う考え方/仕組みなどについて11回の連載で紹介したいと思います。今回はその第1回で監視についてです。 過去の勉強会内容を確認するには以下にアクセス! http://sonicgarden.doorkeeper.jp/

Citation preview

Page 1: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

SonicGardenで実践している

安達 輝雄 (Teruo Adachi)

Page 2: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

自己紹介

安達 輝雄 (Teruo Adachi)

昔はバリバリのインフラ屋。今は開発からインフラまで幅広く対応。自称フルスタックエンジニア

福岡出身の独身エンジニア 30歳

創業メンバー

Page 3: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

さっそく弟子へ質問。

Page 4: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

システム運用というと

何を思い浮かべる?

Page 5: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

”サービスを安定稼働させる”

ための取り組み全般

一般的 には...

Page 6: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

安定稼働させるためには何をすればよい?

Page 7: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

監視

Page 8: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

サービス監視特定のURLにアクセスして応答があるかを確認問題があればメンバーに通知

アクセス不可を検出して早く復旧させることが目的

監視サーバ

アプリケーションサーバ

URL監視

ホスト監視

利用者

Page 9: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

本当にこれで大丈夫?

Page 10: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

n 監視サーバが落ちても気づくように

n 同一クラウドからの監視にならないように ※ユーザの多い地域からリクエスト

障害に気づけない事態を回避

監視サーバ(国内)

アプリケーションサーバ

URL監視

ホスト監視

監視サーバ(外国)

サブ監視サーバ

Page 11: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

Availability monitoring

Page 12: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

早く復旧させるには

n 複数台構成にする

n Opsworks や AutoScale などの

仕組みに乗っかる

n … etc

Page 13: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

プロセス監視特定のプロセスが起動しているかを確認

想定外のプロセス異常終了を検知して早く復旧することが目的

Linux

Web ServerApacheNginx

Mail ServerPostfixSendmail

RDBMSMySQLPostgresql

Otherscrondrsyslogd…

番犬が監視

Page 14: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

本当にこれで大丈夫?

Page 15: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

サーバ起動時の自動起動(systemd services)も忘れずに

番犬は異常検出時に任意のコマンドを実行して

プロセス再開の仕組みを提供

自動復旧!

Page 16: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

リソース監視サーバリソースの状況をモニタリング Disk / CPU / Memory / Network

閾値に近づいていたらアラート

異常状態に早く気づくことが目的

Page 17: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

本当にこれで大丈夫?

Page 18: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

これと言ってない。。。

Page 19: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

パフォーマンス監視アプリケーションやミドルウェア等の状況を監視ボトルネック解消のための情報を把握

低下に気づき、改善することが目的

Page 20: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

本当にこれで大丈夫?

Page 21: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

ボトルネックはわかったけど、どうやって解消すればいい?

気合!?

Page 22: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

アプリケーションのパフォーマンス改善

Page 23: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

NewRelicは本番環境の計測だけでなく開発においても便利!

Page 24: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

http://localhost:3000/newrelic

Page 25: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

ミドルウェアのパフォーマンス改善

Page 26: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

基本的には Munin で取得しているリソース状況よりボトルネックを判断

Page 27: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

基本的には Munin で取得しているリソース状況よりボトルネックを判断

ボトルネック改善に時間がかかるなら...

Page 28: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

基本的には Munin で取得しているリソース状況よりボトルネックを判断

ボトルネック改善に時間がかかるなら...

n EC2インスタンス スケールアップ / スケールアウト

n EBS IOPSを利用

インフラコストも年々低下

Page 29: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

エラー監視アプリケーションエラーを検出して通知

いち早く発生したエラーに気づき、不具合修正することが目的

Page 30: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

本当にこれで大丈夫?

Page 31: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

同一構成のstaging環境を準備し、エラーの再現性/リリース前チェックを実施

http://staging.app.com

本番APサーバ

利用者

本番DBサーバ

StagingAPサーバ StagingDBサーバ

M/Wのバージョンも統一

http://production.app.com

サーバスペックは最小限に

Page 32: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

バッチ処理などのエラーハンドリングも

お忘れなく

Page 33: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

ここからは世間ではあまり聞かない監視項目

Page 34: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

キュー監視タスクが溜まっていないかをチェック・DelayedJob / Rescue / sidekiq・Postfix Mail queue

Page 35: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

バックアップデータ監視データのバックアップがリモートに保存されていることを確認

Page 36: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

他にも...

BackupsのsnapshotをS3に転送する機能 on Heroku

n 実データのフルバックアップ (tar.gz / zip)

n インスタンスのAMI

n Data領域のEBS snapshot

バックアップの種類はさまざま

これら全てを監視!!

AWS

Page 37: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

監視で利用しているツールのまとめ

サービス監視 Nagios / NewRelic

プロセス監視 Monit

リソース監視 Munin / Monit

パフォーマンス監視 NewRelic / Munin

エラー監視 AirBrake / Bugsnag / PaperTrail

バックアップ監視 自社ツール

Page 38: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

http://blog.mah-lab.com/2013/04/12/sonicgarden-heroku-2013/

Page 39: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

プラットフォーム別の監視項目

Page 40: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

こんな感じでサービスを安定稼働させるための

取り組みを実施してます

Page 41: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

当たり前すぎ?当たり前を疎かにすると

痛い目に遭うかも!?

Page 42: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

”サービスを安定稼働させる”ための取り組み全般

一般的 には...

と言いましたが...

Page 43: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

”サービスを進化させつつ安定稼働させる”ための取り組み全般

SonicGarden では...

なのです。

Page 44: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

“進化させつつ”を

実現するために

Developers の取り組みは

Page 45: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

を実施するのが当たり前。

n ソースコードのリファクタリング

n フレームワークのバージョンアップ

Page 46: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

Operationsでも

をするのが当たり前??

n システム構成のリファクタリング

n OSのバージョンアップ

Page 47: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

システム構成を変化させるのはリスクが高くて嫌だ・・・

Page 48: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

この不安を取り除くために

serverspec

Page 49: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

残念。お時間です。

続きは次回・・・

Page 50: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

今日のまとめ

システム運用での11の常識

常識① 監視を怠るべからず

Page 51: DevelopersのためのSonicGardenで実践しているシステム運用での11の常識 〜監視編〜

ご清聴ありがとうございました。