プロセスのメモリ/ CPU使用率を経時的に監視および記録する方法 [閉まっている]


30

私は、バルーニングメモリプロセスがスワップをいっぱいにし、マシン全体(Apacheなど)を殺すスワップデスなどの問題を診断する方法を探しています。

私はすでにサボテンを使用しており、nagios(ではないが)またはmuninをセットアップできますが、個々のプログラムの使用状況を記録することはできません-全体的なステータスだけです。

30秒ごとに>>というファイルをスクリプトにロールできることは知っていますが、既存の成熟したソリューションが既に存在するかどうかを確認したいと思います。

繰り返しますが、理想的には:

  • N秒ごとにプロセスのメモリ使用量を記録する
  • N秒ごとにプロセスのCPU使用率を記録する
  • チャートと履歴をサポート
  • サポート平均-mysqldが前日に43%CPUを使用し、平均400MBのメモリを使用したように
  • 無料でオープンソースであること

プロセス名は事前に知られていないため、事前に知っておくべきではありません。アイデアは、監視させてから、上位の違反者を確認することです。

私のシステムはLinux(OpenSUSE)です。


あなたは監視するか任意のメモリリーク(上位N個のメモリ豚)を有していてもよいか、プロセスの定義されたセット(ApacheなどのWebサーバとTomcatプロセス)を監視するために探しているプロセスを?後者は、いくつかの単純なNagiosまたはCactiプラグインで実行可能です。前者はより困難です。これを明確にする必要があります。
ステファンLasiewski

私はすでにポストでそれを明らかにしましたが、再び明確にするために:スワップの死によりシステムがダウンしたときのシステムの状態を知りたいです。最悪の犯罪者が誰であるかを知りたい。ちなみに、メモリリークである必要はありません。トラフィックの流入など、メモリ使用量が多くなる原因になります。そのため、再度、バイナリ名の事前知識を構成する必要はありません。
アルテムルサコフスキー


ウォーレン、それはまったく別の質問です。
アルテムルサコフスキー

8
このような質の高い投稿を閉じることは、特に4年前に遡って悪いことでした。
ペテルはモニカを

回答:


16

上位の攻撃者だけが必要な場合topは、バッチモードで比較的長い間隔(60秒以上)で実行することを検討してください。top複数のリソースで上位の違反者をキャプチャするには、複数の実行が必要になる場合があります。topリソースが過剰に使用されていたときに、数サイクル実行するようにシステムを構成しました。

sarリソースの使用率をキャプチャするには、バッチモードで実行することを検討してください。これはサーバーベースですが、問題が発生している時間を判断するのに役立ちます。

munin通知を実行して有効にします。これにより、サーバーにアクセスしてサーバーがダウンするのを見ることができます。問題が解決する前に修正できる場合があります。

メモリリークの場合、スワップの使用量が着実に増加していることが問題を示しています。サーバーが数日間にわたってゆっくりと死ぬのを見たことがあります。問題サービスは、メモリリークについて他のプロセスを監視するプログラムでした。システム管理者は、サーバーの応答が停止するまで、スワップの使用量の増加は問題ではないと主張し続けました。

cfengine異常が検出された場合、異常を検出すると、スクリプトをトリガーしてシステム状態をキャプチャできることがわかります。ほとんどのリソースを使用しているプロセスだけでなく、多くの情報が必要な場合があります。突然の使用の流入のために、ネットワーク接続のリストが必要な場合があります(名前ではなくアドレスによる)。メモリ使用量も役立ちます。


12

sysstatは、目的に合わせて作成されます。


ここから始めます。どこで試験を開始するかは、どこで最良の機会を得ることができるかを知るまでわかりません。Sysstatはあなたが探しているものです(きれいなグラフもあります)。詳細がわかったら、systemtapを使用します。
アレン

9

前に使ったことがあります:

http://freshmeat.net/projects/atop/

「AtopはASCIIフルスクリーンパフォーマンスモニターであり、すべてのプロセスのアクティビティをレポートできます(インターバル中にプロセスが終了した場合でも)、システムおよびプロセスアクティビティの毎日のログ記録、長期分析のために、色など。一定の間隔で、CPU、メモリ、スワップ、ディスク、ネットワークレイヤーに関連するシステムレベルのアクティビティを表示し、アクティブなプロセスごとにCPU使用率、メモリの増加、優先度、ユーザー名、状態、終了コード。」


頂上には、私が望んでいたものを提供するレポートはないようです。私が間違っている場合は修正してください。
アルテムルサコフスキー

最初の2つの箇条書き(プロセスごとのメモリ/ CPU)を処理します。ライブラリを使用してこれらの統計を収集し、データに基づいて履歴/グラフを作成できます。
-NinjaCat

4
@ artem-russakovskii-デフォルトでは、atopは10分ごとにデータをファイルに記録します。サーバーが3:45にクラッシュした場合は、で開始してプロセスごとのメモリ使用量ビューに切り替えatop -r log_filename、を押しmt3:40まで10分単位で先に進みます。あなたは時の上使用しての基本についてもっと読むことができますlwn.net/Articles/387202とでメモリリークを特定の例を参照してくださいatoptool.nl/download/case_leakage.pdf
リス属

6

集めてみましたか?
非常に強力でカスタマイズ可能です。
多くのプラグインがあり、nagiosと統合できます。

http://collectd.org/features.shtml


Collectedは非常に軽量で、セットアップするのが難しくありません。また、時間の経過とともにメモリ/スワップの成長を確認できます。ただし、問題のプロセスを特定することはできませんが、多分、時間の経過とともにメモリの増加に気づき、それをキャッチして、手動で状況を調べることができますtop
マリウスゲドミナス

1
私はそのプラグインを試しなかったと言わざるを得ませんが、collectdのプロセスプラグインのマニュアルを読んでください:「プロセスが選択された場合、次の情報が収集されます。使用されたユーザー時間およびシステム時間、その名前のプロセス数、スレッド数(すべてのプロセスで合計)、メジャーおよびマイナーページフォールトの数ラフI / O番号(書き込みおよび読み取りバイトの期限プロセスによるシステムコールへ)
PiL

プロセスを選択するか、名前または正規表現で選択できます。
PiL

2

Nagiosの上にあるCentreon、NRPEと組み合わされたNagios。その後、NRPEに任意の形式でデータをレポートするカスタムスクリプトを作成できます。NagiosはNRPEを使用してリモートサーバーからデータをポーリングし、Centreonはきれいなグラフを作成し、ユーザーの柔軟性を大幅に増やします。http://beyondhosting.netでそれを使用し ます。必要に応じて、centeron + nagiosのセットアップを含むVZ Containerテンプレートが既にあります。

グラフcenteronビルドhostthenpost.org/tyler/2010-07-23_1719.png


私が言及したこと、最も重要なことは最もメモリを消費するプロセスを報告するための準備ができたソリューションが欲しいです。また、VZが何であるかわかりません。
アルテムルサコフスキー

2

nmonは、あなたが探していることをする素晴らしいツールです。AIXおよびLinux用に開発されました。大量の詳細な出力を生成し、レポートに簡単に入力できます。Googleで検索すると、データを解析するためのドキュメントと追加のユーティリティを含むIBM wikiがあります。


2

サーバー密度は、まさにあなたが説明したことをします。

運用サーバーの1つで使用し、非常に満足しています。一番の機能は、グラフを表示し、ピークをクリックして、実行中のすべてのプロセスを含む、その時点でのサーバーのCPU /メモリ消費量を確認できることです。彼らはそれをスナップショットと呼びます。

常に改善されています。最新の機能の1つに異常検出があり、これにより異常を簡単に検出できます。さまざまなしきい値を設定することもできます


1
ああ、できれば無料でオープンソースにしたいという小さな部分について言及するのを忘れていました。サーバーあたり100ドル以上は、実際に私が費やそうとしているものではありません(5台ではなく1台のサーバーしか持っていません)。 serverdensity.com/pricing
アルテムルサコフスキー


2

私が同様の質問をしたときに答えが示唆されました:

イカパン は言った

Muninは、インストールと構成に最小限の労力で稼働時間グラフを取得する最も簡単な方法です。また、いくつかのプロセスによるCPU使用量の集計にもatopを使用していますが、それはあなたが求めたものではありません。

デビッド・スピレット は言った

collectdを使用して、他の多くのパラメーターの中でシステム負荷を記録します。RRDストアにデータを保存し、利用可能な多くのツールとスクリプトを使用してグラフ化または分析することができます。グラフ作成にこのスクリプトの修正版を使用します(サンプル出力)。

Collectdには、多くのものを監視するためのプラグインがあり(一般的に要求されるすべてのものといくつかの上位のもの)、特殊なものが必要な場合は独自のものを作成することは難しくないので、非常に柔軟なツールになります。rrd.cgiでのグラフの構成は非常に手動のプロセスですが、難しくはありませんが、collectdによって維持されているRRDファイルを操作するためのより便利なツールが見つかるかもしれません。

NagiosまたはOpenNMSもチェックすることがあります。


1

Muninは、Nagiosやその他のツールを必要とせずに、必要なすべてをすぐに実行します。OpenSUSEで利用可能なRPMがあります。


プラグインでそれを行いますか。もしそうなら、どれ?監視するプロセスの事前構成リストを必要としないものを見つけることができませんでした。
アルテムルサコフスキー

元の質問から、事前に構成されたプロセスのリストを監視したくないということは明確ではありませんでした。要件の詳細を教えてください。
gareth_bowles

明確化:プロセス名は事前に知られてはならず、知るべきでもありません。監視するだけで上位の違反者を確認するという考え方です。
アルテムルサコフスキー

1

たぶん、古き良きOProfileはあなたが必要なことをするのでしょうか?これは、わずかなオーバーヘッド(数パーセント)しか持たないカーネルベースのシステムレベルのプロファイラーです。

次に、優れたPerlスクリプトPSMonがあります。これにより、あらゆる種類のCPU /メモリ制限を設定できます。これらを超えた場合、psmonはエラーをログに記録し、問題のあるプロセスを強制終了します。

後者はプロファイリングレポートを生成しませんが、同じプロセスを何度も強制終了することを決定した場合、おそらく探している厄介なやつを見つけたでしょう。:-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.