この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の14日目です。
それでは14日目は mackerel-plugin-mongodb
です。
mackerel-plugin-mongodbはドキュメント指向データベースのNoSQL MongoDB
の専用プラグインです。
インストールと設定手順
MongoDBのプラグインは db.serverStatus()
の中身を可視化してくれるプラグインです。
本プラグインはプラグイン集として提供しているパッケージの mackerel-agent-plugins
に含まれています。
インストール先は /usr/bin/mackerel-plugin-mongodb
です。
次にMackerelのプラグインはコマンドですので実行する事ができます。
※MongoDBのバージョンは3.2を使っています。
-- /usr/bin はPATHが通っているので省略出来ます # mackerel-plugin-mongodb mongodb.opcounters.opcounters_insert 0.000000 1513220008 mongodb.opcounters.opcounters_query 0.000000 1513220008 mongodb.opcounters.opcounters_update 0.000000 1513220008 mongodb.opcounters.opcounters_delete 0.000000 1513220008 mongodb.opcounters.opcounters_getmore 0.000000 1513220008 mongodb.opcounters.opcounters_command 720.000000 1513220008 mongodb.connections.connections_current 1.000000 1513220008
設定ファイルであるmackerel-agent.confは標準では /etc/mackerel-agent/mackerel-agent.conf
にインストールされます。
こちらに下記のとおり追記しましょう。
[plugin.metrics.mongodb] command = "mackerel-plugin-mongodb"
以上を行った上でmackerel-agentを再起動してください。
見れるメトリック
MongoDBのserverStatusはとても多くの情報がとれますがmackerel-plugin-mongodbはシンプルに使いやすい情報にフォーカスして収集しています。
serverStatus — MongoDB Manual 3.6
各グラフ定義ごとに説明します。
それでは各グラフ定義ごとに説明します。
また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。
◯
となっている項目はプラグインで前回の実行時の値と差分値計算して出力しています。
MongoDB Connections
メトリック名(ラベル) | プラグインの出力名 | diff | 説明 |
---|---|---|---|
current | mongodb.connections.connections_current | ー | 接続数 |
こちらはMongoDBに接続している数です。
MongoDBは勿論データベースですので接続数を監視は大事です。
しかしMongoDBののmaxConnsのデフォルト値は20000です。
(3.6ではこの上限も廃止されているので無制限です)
そうするとどうなるかと言うと先にOSのプロセス数の上限にひっかかります。
UNIXのプロセス数の上限は ulimit -u
で確認できますので合わせて確認しましょう。
# ulimit -u 3904
上限制限を調整したい人向けにMongoDBの公式ドキュメントも出ています。
UNIX ulimit Settings — MongoDB Manual 3.6
このようにMongoDBはコネクションがOSの限界まで使いがちですのでMongoDBのコネクション数と合わせてシステムメトリックスも確認しましょう。 メモリのエラーが出ているのでMongoDB Connectionsを確認したらすごいコネクションを貼っていたということもありえます。
MongoDB opcounters
メトリック名(ラベル) | プラグインの出力名 | diff | 説明 |
---|---|---|---|
Insert | mongodb.opcounters.opcounters_insert | ◯ | 一分間あたりのInsert数 |
Query | mongodb.opcounters.opcounters_query | ◯ | 一分間あたりのQuery数 |
Update | mongodb.opcounters.opcounters_update | ◯ | 一分間あたりのUpdate数 |
Delete | mongodb.opcounters.opcounters_delete | ◯ | 一分間あたりのDelete数 |
Getmore | mongodb.opcounters.opcounters_getmore | ◯ | 一分間あたりのGetmore数 |
Command | mongodb.opcounters.opcounters_command | ◯ | 一分間あたりのCommand数 |
こちらはMongoDBで実行されているそれぞれの数です。 これによってコネクションの割にQueryはそんなに捌いてなかったり、更新の量が多いなど何が起こっているか一目瞭然です。 アプリケーションをリリースした直後などは振る舞いが変わりやすいところですので確認したりすると良いでしょう。
14日目はドキュメント指向データベースのMongoDBプラグインについての説明でした。
みなさんiptablesは使ってますか?明日はiptablesの ip_conntrack
の監視です。
引き続き、Mackerel プラグインアドベントカレンダーをお楽しみに!