SonicGardenで実践している

安達 輝雄 (Teruo Adachi)
自己紹介
安達 輝雄 (Teruo Adachi)
福岡出身の独身エンジニア 30歳

創業メンバー

昔はバリバリのインフラ屋。
今は開発からインフラまで幅広く対応。
自称フルスタックエンジニア
さっそく弟子へ質問。
システム運用というと
何を思い浮かべる?
一般的

には...

”サービスを安定稼働させる”
ための取り組み全般
安定稼働させるためには
何をすればよい?
監視
サービス監視

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

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

監視サーバ

ホスト監視

アプリケーションサーバ

利用者
本当にこれで大丈夫?
n 監視サーバが落ちても気づくように
n 同一クラウドからの監視にならないように
※ユーザの多い地域からリクエスト
URL監視
監視サーバ(外国)
監視サーバ(国内)

ホスト監視

アプリケーションサーバ

サブ監視サーバ

障害に気づけない事態を回避
Availability monitoring
早く復旧させるには
n 複数台構成にする
n Opsworks や AutoScale などの

仕組みに乗っかる
n … etc
プロセス監視

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

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

番犬が監視

Web Server

Mail Server

Apache
Nginx

Postfix
Sendmail

Linux

RDBMS

Others

MySQL
Postgresql

crond
rsyslogd
…
本当にこれで大丈夫?
番犬は異常検出時に
任意のコマンドを実行して
プロセス再開の仕組みを提供

自動復旧!
サーバ起動時の自動起動(systemd services)も忘れずに
リソース監視

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

サーバリソースの状況をモニタリング
 Disk / CPU / Memory / Network
閾値に近づいていたらアラート
本当にこれで大丈夫?
これと言ってない。。。
パフォーマンス監視

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

アプリケーションやミドルウェア等の状況を監視
ボトルネック解消のための情報を把握
本当にこれで大丈夫?
ボトルネックはわかったけど、
どうやって解消すればいい?

気合!?
アプリケーションの
パフォーマンス改善
NewRelicは本番環境の計測だけでなく
開発においても便利!
http://localhost:3000/newrelic
ミドルウェアの
パフォーマンス改善
基本的には Munin で取得している
リソース状況よりボトルネックを判断
基本的には Munin で取得している
リソース状況よりボトルネックを判断
ボトルネック改善に時間がかかるなら...
基本的には Munin で取得している
リソース状況よりボトルネックを判断
ボトルネック改善に時間がかかるなら...
n EC2インスタンス スケールアップ / スケールアウト
n EBS IOPSを利用

インフラコストも年々低下
エラー監視

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

アプリケーションエラーを検出して通知
本当にこれで大丈夫?
同一構成のstaging環境を準備し、
エラーの再現性/リリース前チェックを実施
サーバスペックは最小限に

http://staging.app.com
StagingAPサーバ

StagingDBサーバ

M/Wのバージョンも統一
利用者
http://production.app.com

本番APサーバ

本番DBサーバ
バッチ処理などの
エラーハンドリングも
お忘れなく
ここからは世間では
あまり聞かない監視項目
キュー監視
タスクが溜まっていないかをチェック
・DelayedJob / Rescue / sidekiq
・Postfix Mail queue
バックアップデータ監視
データのバックアップがリモートに保存されている
ことを確認
バックアップの種類はさまざま
n 実データのフルバックアップ (tar.gz / zip)
n インスタンスのAMI

AWS

n Data領域のEBS snapshot

これら全てを監視!!
他にも...
BackupsのsnapshotをS3に転送する機能 on Heroku
監視で利用しているツールのまとめ
サービス監視

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の常識
常識① 監視を怠るべからず
ご清聴ありがとうございました。

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