Zabbix、MongoDBの監視

一日の良い時間!

...顧客はMongoDBモニタリングを要求しました。 インターネットで大騒ぎして、オンライン監視システムMongoDB(MMS)についての記事に出会いましたが、このオプションはうまく機能しません。第一に、統計データがサーバーより先に進まないこと。 。 MobgoDB Webサイトの監視および診断セクションで、 Mikoomiの完成したZabbixプラグイン「MongoDBプラグイン」について言及されていました。 それを使用することにしました。 コメントから判断すると、彼は一人の人から稼いでおり、実際、プロセスにはいくつかの困難がありました。 私は開発者に見た間違いについて書きましたが、彼は一通の手紙には反応しませんでした。



次の不正確さが観察されました。



-データベース数の誤った計算(PHPファイルのエラー)

-テンプレートの説明に、ログファイルの統計情報を取得するためのパラメーターがありましたが、実際にはありません(テンプレートのエラー)



Journaling: Commits in last 1 Minute Journaling: Commits in Writelocks in last 1 Minute Journaling: Datafile Write Time (ms) in last 1 Minute Journaling: Datafile Writes (MB) in last 1 Minute Journaling: Early Commits in last 1 Minute Journaling: Journal Write Time (ms) in last 1 Minute Journaling: Journal Writes (MB) in last 1 Minute Journaling: Log Buffer Prep Time (ms) in last 1 Minute
      
      





-トリガーが機能しませんでした(テンプレートのエラーも)

 One or more databases have been created One or more databases have been destroyed One or more replication members need attention One or more members have been removed from the ReplicaSet One or more members have been added to the ReplicaSet One or more new shard chunks have been created One or more shards have been added to the cluster One or more shards have been removed from the cluster One or more new sharded collections have been created One or more collections have been dropped One or more collections have been added One or more indexes have been dropped One or more indexes have been added
      
      





すべてが修正され、動作し、テストされています。



だから私たちが持っているもの:

Debianスクイーズ

Zabbix 1.8.10

Mongodb-10gen

OS(オペレーティングシステム)、SM(監視システム)、DBMS(データベース管理システム)をMongoDBにインストールすることは、この記事の範囲を超えているため、考慮しません。 インストールと構成のドキュメントで十分です。



どうぞ

すべてのインストールは、Zabbix CMを搭載したサーバーでのみ行われます。 MongoDBサーバーでは、ポート27017を開くだけで済みます。

プラグインを機能させるには、 必要なzabbix送信者を含むzabbix-agen tをインストールします

 sudo apt-get install zabbix-agent
      
      







ExternalScriptsのディレクトリを作成します-外部スクリプトをホストします:



 sudo mkdir -p /etc/zabbix/externalscripts/
      
      







外部スクリプトが存在するzabbixを表示します。このため、 「ExternalScripts」セクションがある場所を探し、次のビューに修正します(1行編集)。



 sudo nano /etc/zabbix/zabbix_server.conf
      
      





 ### Option: ExternalScripts # Location of external scripts # Mandatory: no # Default: ExternalScripts=/etc/zabbix/externalscripts
      
      







MongoDBプラグイン自体は、インストールする必要があるMongoDB PHPドライバーで動作します。 これには、次のパッケージが必要です。



 sudo apt-get install php5-dev php-pear gcc make git
      
      







次に、MongoDB PHPドライバー自体を直接インストールします。



 sudo pecl install mongo
      
      







インストールが成功したら、有効にする必要があります。 php.iniでDynamic Extensions」セクションを探し、そこに1行追加します。

 sudo find /etc/ -name "php.ini"
      
      





 /etc/php5/apache2/php.ini
      
      





 /etc/php5/cli/php.ini
      
      







この場合、見つかった両方のファイルに追加します。

 ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; extension=mongo.so
      
      







編集後、変更を有効にするために、Webサーバーが再起動します。



 sudo apache2ctl -k graceful
      
      







ドライバーをテストします。そのために、このようなコンテンツのファイルを作成します

 nano ~/test.php
      
      







 <?php // connect $m = new Mongo(); // select a database $db = $m->comedy; // select a collection (analogous to a relational database's table) $collection = $db->cartoons; // add a record $obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" ); $collection->insert($obj); // add another record, with a different "shape" $obj = array( "title" => "XKCD", "online" => true ); $collection->insert($obj); // find everything in the collection $cursor = $collection->find(); // iterate through the results foreach ($cursor as $obj) { echo $obj["title"] . "\n"; } ?>
      
      





テストスクリプトを実行する

 /usr/bin/php5 test.php
      
      







すべてが機能する場合、結果は次のようになります。

 Calvin and Hobbes XKCD
      
      





注:
データベースがlocalhostにない場合、テストスクリプトでは接続文字列は次のようになります。

だった

 $m = new Mongo();
      
      





になっています

 $m = new Mongo( "example.com:27017" );
      
      







プラグイン自体( シェルおよびphpスクリプト)をダウンロードし、ファイルを目的のフォルダーにコピーします。

 sudo cd ~ && git clone git://gist.github.com/2634051.git gist-2634051 && cp ~/gist-2634051/mikoomi-mongodb-plugin.* /etc/zabbix/externalscripts/
      
      





両方を実行可能にする

 sudo chmod 755 /etc/zabbix/externalscripts/mikoomi-mongodb-plugin.*
      
      







所有者を暴露する

 sudo chown -R zabbix:zabbix /etc/zabbix/externalscripts/
      
      







zabbixサーバーの再起動

 sudo /etc/init.d/zabbix-server restart
      
      







MiookomiからZabbixのテンプレートをダウンロードします。 そして、すでにSMのWebインターフェースからテンプレートをインポートします。



MongoDBサーバーをCMに接続します



マクロセクションで、3つのマクロを追加します(データベースへの接続に許可がない場合)

 {$MONGODB_HOSTNAME} =   IP    {$MONGODB_PORT} = ,   27017 {$MONGODB_ZABBIX_NAME} =    ()
      
      







接続に許可があり、さらに2つのマクロがある場合

 {$MONGODB_USER} =   {$MONGODB_PASS} = 
      
      







そして最後に、「保存」することを忘れないでください。

次のようになります。

画像



プラグインを確認する

 cd /etc/zabbix/externalscripts/
      
      





 ./mikoomi-mongodb-plugin.sh [-D -h 127.0.0.1 -p 27017 -z MongoDB_ZabbixN ]
      
      







すべてが正常な場合、ログファイルは次のようになります。

 tail -f /tmp/mikoomi-mongodb-plugin.php_MongoDB_ZabbixN.log
      
      







  "response":"success", "info":"Processed 66 Failed 5 Total 71 Seconds spent 0.000747"}] Info from server: "Processed 66 Failed 5 Total 71 Seconds spent 0.000747" sent: 71; skipped: 2; total: 73
      
      







zabbixユーザーからではなく作成されたログファイルとデータファイルを削除します

 rm -rf /tmp/mikoomi-mongodb-plugin.php_MongoDB_ZabbixN.*
      
      







しばらく待って、ログが再び表示されます。上記がある場合、すべて正常に機能しています。 Webインターフェース「監視」-「最近のデータ」に移動して、結果を楽しんでください:)

デフォルトでは、テンプレートは次のもので構成されます。

13グループ(77データ項目を含む)

14トリガー

チャートの4つのグループ



チャートの例


「直前のトランザクションのカウント」

画像



「雑誌の使用」

画像







All Articles