Mackerelに触れる前にサーバー監視に ついて考えてみよう
2015.07.11 横浜クラウド勉強会
@gu4
Yuki Asano
Lead Software Enginer / atWare
@gu4
guyon
Yokohama.vim at Yokohama
2010 ~ 2014 座談形式でなにかvimにとりくむ
・どうしてサーバー監視をやるの ・サーバー監視ってどうやろう ・監視対象・仕組み・ソフトウェア ・クラウド時代の監視
考えたい事
考えられるリスク
・機械はいつかは壊れるもの ・プログラムの暴走やレアケースの障害 ・自然災害や停電 ・人間はいつだってミスをする
リスクを回避!
・壊れない機械を作る・買う ・完璧な品質でバグをださないプログラマーを雇う ・シェルターを用意して自家発電 ・完璧な人間は自身のみ?
99.999999999を目指すのをやめる
・機械が壊れても良い仕組み ・落ちても大丈夫なアーキテクチャを考える ・マルチリージョンデータセンターで運用 ・人間がするという事を極力やめる
そこで監視の登場です
異常事態が発生した事に 人間やシステムが気づける仕組みを仕込んでおく
テキストデータの監視
・特定の文字列が出力された何かの処理を行う ・不正なアクセスがないかを監視 ・致命的なエラーが出力されていないかを監視
外部プログラムで監視
・常に指定されたファイルを監視する ・特定の文字列に引っかかった場合のみ処理実行
プログラムに処理埋め込むと
・アプリケーションの実装に依存し柔軟性に欠ける ・追加設定を行いたい場合に毎回デプロイが必要 ・環境毎の設定や情報をアプリケーションで管理 することになってしまう
・サーバーリソース(CPU・メモリ・ディスク) ・ネットワークリソース(帯域・トラフィック) ・ミドルウェア ・アプリケーションのヘルス状態 ・アプリケーションログ
監視項目
アプリケーションログ監視方法
Logwatchhttp://www.logwatch.org
Perlで実装された監視するツールです。ApacheやSSHのログなど 設定ファイルで指定したログファイルを監視し、Cronで一日一回 レポートを生成し通知する(実際にはコマンド指定を行う)。
CPU・メモリ・ディスク・ネットワーク監視方法
MRTGhttp://www.mrtg.jp/doc/
Perlで実装されたネットワークを監視するツールです。 ネットワーク・トラフィック情報をSNMPエージェントを通して 取得します。他にもCPU・メモリ・ディスクなども監視でき、 RRDtoolというツールで出力されたrrdデータを取得する事で グラフ化を実現します。
ミドルウェア
監視方法
muninhttp://munin-monitoring.org/
アプリケーションのヘルスチェック
監視方法
Gangliahttp://ganglia.sourceforge.net
Windowsアプリケーションで監視
監視方法
Hinemoshttp://www.hinemos.info
RRDtool関連ソフトウェアデータ収集が可能監視方法
Cactihttp://www.cacti.net/
通知機能も充実した監視ツール監視方法
Nagioshttps://www.nagios.org/
自前で監視ツールして使うなら現時点でデファクト?
監視方法
Zabbixhttp://www.zabbix.com/jp
クラウド時代の監視
New Relic
Application Monitoring
http://newrelic.com
クラウド時代の監視
Amazon CloudWatch
クラウドリソースの監視と統計
http://aws.amazon.com/jp/cloudwatch/
クラウド時代の監視
Heroku librato
PaaSでリソースのメトリクスを
https://addons.heroku.com/librato
クラウド時代の監視
Papertrail
ログ監視とログコレクトとGrepも
https://papertrailapp.com/
クラウド時代の監視新しいアプリケーションパフォーマンスマネジメント
https://mackerel.io/ja/