web-dev-qa-db-ja.com

Linuxシステムでのメモリ使用量の監視

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でこれを行うためのより良い方法はありますか?考え?

2
Safado

linuxatemyram.com をご覧ください。 WUGは、Linuxが使用されていると考えるもの(used + buffers + cache)を示しています。あなたが監視することに決めたもの(使用済み/合計)は、システムの詳細に関する知識を必要としないため、特にグラフの場合は合理的と思われます。

5
user9517

フリーラムはフリーラムであり、バッファはキャッシュされたラムであり、再利用できます。私が使用したほとんどの監視ツールは、この違いを累積面グラフに表示します。このグラフには、少なくとも使用済み、キャッシュ済み、および非アクティブなメモリが100%レベルでスタックされ、これらがスワップされます。サーバーのパフォーマンスを正しく理解する唯一の方法は、それらすべてを表示することです。

値をグラフ化することしかできない場合は、使用済みメモリをグラフ化して、残りを「解放」することをお勧めします。ああ、私は監視ツールの切り替えもお勧めします。デフォルト設定のmuninでさえ、まともなメモリグラフを持っています。

1
theist

私は神経節をお勧めします: http://ganglia.sourceforge.net/

メモリの監視を行い、構成要素に分割します。構成はほとんどありません。各Linuxボックスにデーモンをインストールしてから、RRDを記録するための中央ボックスを1つ指定します。

メモリグラフの例を次に示します。

Graph 1

0
dmourati

私が思いついた解決策を知りたい人(レナン)のために。

私はカスタム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)を監視します。その後、カスタムアラートなどを作成できます。

私たちはしばらくの間それを使用していて、それは素晴らしい働きをします。お役に立てば幸いです。

0
Safado