WhatsUp Goldを使用して、すべてのWebサーバーを監視しています。私たちのLinuxサーバー(そしてほぼ同じ程度に私たちのFreeBSDサーバー)では、メモリモニターに少し問題があります。サーバーからデータを取得するために、WUGでSNMPを使用しています。 SNMPデーモンがサーバーに返すメモリカウンターは、結合された値(使用済み、キャッシュ済み、バッファー)です。現在、私のサーバーの1つは次のようになっています。
[admin@stgwww snmp]$ free -m
total used free shared buffers cached
Mem: 7872 1656 6216 0 143 1107
-/+ buffers/cache: 404 7467
Swap: 4867 0 4867
SNMPを介してWUGに返される値は1656です。私が理解していることから、キャッシュされたRAMは基本的に無料ですRAMで、データに依存するという追加の利点があります再び必要になった場合に備えて、以前はそれを占有していました。したがって、RAMが実際にアクティブに使用されている量を知りたいという目的のために、返される値は誤解を招く可能性があります。 WUGによってグラフ化されているものの中で、実際よりも多くのRAMが使用されており、使用可能なものが少ないと考えられています。
では、これを監視するための最善の方法は何でしょうか。 WUGを使用すると、SSHスクリプトを記述できます。SSHスクリプトは、5分ごとにサーバーにSSHで接続し、スクリプトを実行して値を返します(単一の数値である場合)。これを使用して、上記の例から「404」の数値を取得し、それを合計量で割って、使用率の値を取得するスクリプトを作成しました。これをWUGに戻し、0から100までのグラフにグラフ化します。これは多くのハックへの道のようです。
Free + buffers + cached値を監視したほうがいいですか? WUGでこれを行うためのより良い方法はありますか?考え?
linuxatemyram.com をご覧ください。 WUGは、Linuxが使用されていると考えるもの(used + buffers + cache)を示しています。あなたが監視することに決めたもの(使用済み/合計)は、システムの詳細に関する知識を必要としないため、特にグラフの場合は合理的と思われます。
フリーラムはフリーラムであり、バッファはキャッシュされたラムであり、再利用できます。私が使用したほとんどの監視ツールは、この違いを累積面グラフに表示します。このグラフには、少なくとも使用済み、キャッシュ済み、および非アクティブなメモリが100%レベルでスタックされ、これらがスワップされます。サーバーのパフォーマンスを正しく理解する唯一の方法は、それらすべてを表示することです。
値をグラフ化することしかできない場合は、使用済みメモリをグラフ化して、残りを「解放」することをお勧めします。ああ、私は監視ツールの切り替えもお勧めします。デフォルト設定のmuninでさえ、まともなメモリグラフを持っています。
私は神経節をお勧めします: http://ganglia.sourceforge.net/
メモリの監視を行い、構成要素に分割します。構成はほとんどありません。各Linuxボックスにデーモンをインストールしてから、RRDを記録するための中央ボックスを1つ指定します。
メモリグラフの例を次に示します。
私が思いついた解決策を知りたい人(レナン)のために。
私はカスタムbashスクリプトを使用してメモリ(使用済み/合計)を取得し、それをパーセンテージに変換してきました。
#!/bin/bash
USED=`free -m | grep "buffers/cache" | awk '{print $3}'`
TOTAL=`free -m | grep "Mem:" | awk '{print $2}'`
VALUE=`bc -l <<< "scale=2; (${USED}/${TOTAL})*100" | sed 's/\.[0-9][0-9]//'`
exit $VALUE
次に、カスタムSNMPカウンターを使用してそのスクリプトを実行し、値を返します。 snmpd.confファイルでは、次のようになります。
exec check_mem /usr/share/snmp/check_mem.sh
各execスクリプトは、スクリプトの名前、終了ステータス、戻り値などを含むいくつかのOIDを返します。残念なことに、戻り値は整数ではなく文字列であるため、WUGではグラフ化に問題があります(グラフ化はできますが、リアルタイムグラフは機能しません)。したがって、値が常に100未満になることがわかっているこの場合、終了ステータスに設定してから、そのOIDをポーリングします。
WUGで監視するには、カスタムSNMPパフォーマンスモニターを作成し、そのexecスクリプトの終了ステータスのOID)を監視します。その後、カスタムアラートなどを作成できます。
私たちはしばらくの間それを使用していて、それは素晴らしい働きをします。お役に立てば幸いです。