MongoDBの監視
Upcoming SlideShare
Loading in...5
×
 

MongoDBの監視

on

  • 4,252 views

・MongoDBで何を監視すべきか ...

・MongoDBで何を監視すべきか
・MongoDBのコマンド・メソッドによる監視
・運用監視ツールとの連携して監視
・MMS(MongoDB Monitoring Service)で監視

Statistics

Views

Total Views
4,252
Views on SlideShare
4,071
Embed Views
181

Actions

Likes
12
Downloads
41
Comments
0

5 Embeds 181

http://momin.hatenablog.com 160
https://twitter.com 17
http://s.deeeki.com 2
http://www.zabbix.jp 1
http://slideshare-download.seesaa.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MongoDBの監視 Presentation Transcript

  • 1. Monitoring MongoDBMongoDBの監視2013/5/22丸の内MongoDB勉強会野村総合研究所 渡部
  • 2. 自己紹介名前:渡部 徹太郎 @fetaro ブログ所属:野村総合研究所 OpenStandiaチーム学生:東工大で情報検索の研究(@日本データベース学会)仕事:昔:大手証券会社のオントレシステムのWeb基盤今:オープンソース全般のサポート/コンサル特技:サーバ基盤、Linux、KVM、ruby、MongoDB(?)エディタ:emacs派趣味:自宅サーバMongoDB関連:• 2年前に、友人の結婚式用のアプリを作った時に利用• この勉強会(丸の内MongoDB勉強会)の主催者の一人• 技評で記事連載中「MongoDBでゆるふわDB体験」
  • 3. はじめに• 私はMongoDBをしっかり監視したことはありません!• ただ、これから運用するお仕事が舞い込んできます!• とりあえず、本やWebからいろいろ知識をかき集めて考えてみました• 間違ってたらツッコんでください!
  • 4. アジェンダ• 何を監視するのか?• どうやって監視するか?• 監視コマンド・メソッドで監視• 運用監視ツールで監視• MMS ( MongoDB Monitoring Service )で監視
  • 5. アジェンダ• 何を監視するのか?• どうやって監視するか?• 監視コマンド・メソッドで監視• 運用監視ツールで監視• MMS ( MongoDB Monitoring Service )で監視
  • 6. 何を監視するか?なぜ監視するか?→MongoDBの障害を未然に防ぎたいからでは、MongoDBの障害とは?
  • 7. 何を監視するか?真剣にMongoDBの障害について考えてみたMongoDBの障害使えない動かないディスク容量の枯渇設定ミス、バグによるハング接続できないネットワークリソースの枯渇遅い計算が遅い性能処理不足CPUの性能不足処理が非効率インデックスがうまく使われていないコレクションが肥大して再配置が多発待ちが多い内部起因 ロック解放待ちが多い外部起因ディスクIO待ちメモリにデータが載っていないディスクが遅いsyncが多発ネットワークIO待ち
  • 8. アジェンダ• 何を監視するのか?• どうやって監視するか?• 監視コマンド・メソッドで監視• 運用監視ツールで監視• MMS ( MongoDB Monitoring Service )で監視
  • 9. どうやって監視するか?監視コマンド・メソッドで監視$ mongostat MongoDB全体の状態をリアルタイムに表示一番便利。とりあえず何か起きたらこれを打つ。$ mongotop コレクションの処理時間順にリアルタイムに表示負荷が集中している箇所を探すのによい。> db. serverStatus() MongoDB全体の統計情報をjsonで表示。圧倒的な情報量。監視スクリプトに食わせるとよい。> db.stats() あるデータベースに対する統計情報jsonで表示。> db.(コレクション名).stats()あるコレクションに対する統計情報jsonで表示。PaddingFactorを見たい場合に。> cursor.explain()例) db.col.find.explain()Findした際の実行計画を表示。Indexが効いているか見たい場合に。> db.currentOp() 現在稼働中のオペレーションが見れる。クエリが長い場合に。$ mongosniff オペレーションが全部見える。最終手段。
  • 10. 何をどうやって監視するか?想定する障害 Pri 監視方法 監視内容インデックスがうまく使われていない高 mongostatのidx miss%corsor.explain()インデックスはメモリに乗っているかインデックスは使われているかロック解放待ちが多い 高 mongostatのLocked% ロック時間が稼働時間に対して大きくなっていないかメモリにデータが載っていない高 mongostatのresやfaultsデータ量が物理メモリを超えてページフォルトが発生していないかディスクが遅い 高 OSコマンド(iostatなど)ディスクの処理時間は遅くないかSyncが多発 中 mongostatのflushes Syncが多発していないかコレクションが肥大して再配置が多発中 コレクションstats.paddingFactorPadding_factorは1より大きい値になっていないかディスク容量枯渇 中 OSコマンド(df など) ディスク容量があふれないかネットワークリソースの枯渇低 mongostatのconnOSコマンド(netstatなど)コネクション数は、TCPのソケット数の最大に達していないかネットワークIO待ちが多い 低 mongostatのnetIN,netOutネットワーク流量が回線の通信容量に迫っていないか?設定ミス、バグによるハン 低 MongoDBのログ、 ログにエラーは出ていないか
  • 11. 簡単に負荷をかけて観察してみる• 環境• メモリ1G• テスト1o 500Mデータを挿入した後、ランダムで読み込みo →メモリに乗るため、ディスクへのアクセスは起きない• テスト2o 2Gのデータを挿入した後、ランダムで読み込みo →メモリに乗らないため、page faultが起きディスクアクセスが頻発→スループット低下
  • 12. アジェンダ• 何を監視するのか?• どうやって監視するか?• 監視コマンド・メソッドで監視• 運用監視ツールで監視• MMS ( MongoDB Monitoring Service )で監視
  • 13. どうやって監視するか?運用監視ツールで監視運用監視ツールとMongoDBの連携以下のようにいくつかある。• MongoDB – Zabbix 連携• MongoDB - Nagios 連携• MongoDB - Munin 連携今回はMongoDB – Zabbix 連携を紹介。他も同じ仕組み(なはず)
  • 14. Zabbix-MongoDB連携の仕組みserverZabbix serveryour servermongodyour clientWeb browser Web Consoleview dataMongoDBpliginPHP ScriptMongoDBDriverserverStatus()Command
  • 15. Zabbix-MongoDB連携画面
  • 16. アジェンダ• 何を監視するのか?• どうやって監視するか?• 監視コマンド・メソッドで監視• 運用監視ツールで監視• MMS ( MongoDB Monitoring Service )で監視
  • 17. どうやって監視するか?MMS (MongoDB Monitoring Service)で監視一味違うMMS!• 開発元である10genが提供• アカウントの登録さえしてしまえば、無料で使える• クラウド上(AWS上)にあり、手元のMongoDBをMMS-Agent経由でクラウドにつなぐ• クラウド上のMSSコンソールにはブラウザでアクセス。ここでいろいろ見れる• 一つのMMS-Agentを設置すれば、手元の環境のMongoDBを何台でもつなげる(今まで紹介した運用監視ツールとは大きく違う!)。• 独自のダッシュボートが作れる• バックアップもできるらしい
  • 18. MMS の仕組みMMS(on AWS)your server #1MMS Agentyour server #2pymongoInternetmongodmongodpush data(over HTTP/SSL)gather dataview datayour clientWeb browseryour server #3mongodgather dataappkey
  • 19. MMSのインストール1. MMSのアカウントを作るo http://www.10gen.com/products/mongodb-monitoring-service2. MMSにログインo https://mms.10gen.com/user/login3. MMS Agentのダウンロードo settingsからアプリキー込みのバイナリをダウンロード4. Pythonとpymongoのインストール5. MMS Agentの解凍&起動$ yum install python python-setuptools$ easy_install pymongo simple_json$ unzip 10gen-mms-agent-mlfie.zip$ cd mms-agent$ python agent.py
  • 20. MMSの設定1. Agentの登録2. Hostの登録こんだけ!とにかく簡単です。あとは、適当にダッシュボードを作るなりしましょう。
  • 21. MMSの画面host一覧画面
  • 22. MMSの画面ホストのstatus画面
  • 23. MMSの画面ログビュー
  • 24. MMSの画面ダッシュボードのカスタマイズ