Linuxで時間経過に伴うCPU使用率を監視する方法
ザ
topユーティリティは各実行中のプロセスの現在のCPU使用率を表示しますが、これを時間の経過にわたって監視してグラフに表示したい場合はどうすればよいでしょうか?もしあなたのクラウドプロバイダーにすでにそれがない場合、これを行うためのいくつかのユーティリティがあります。
ちなみに、もしまだインストールしていない場合は、その
htop上記のユーティリティはデフォルトよりもずっと使いやすいです。
top些細な解決策:クラウドプロバイダーのグラフを利用する
このソリューションは今のところ最も使いやすいですが、すべての人に利用できるわけではありません。もしAWSを使用しているなら、CloudWatchを使うことでCPU使用率の監視が非常に簡単になります。
CloudWatch管理コンソールから「メトリクス」を選択し、その後EC2のメトリクスを表示します。「CPU使用率」メトリクスは、平均CPU使用率を表示します。
平均的なCPU使用率は5分ごとに測定されますが、インスタンスの拡張モニタリングを有効にすることで1分ごとに増やすことができます。ただし、これには追加費用がかかります。また、CPU使用率が高すぎるときのアラームを簡単に設定することも可能です。
Google Cloud Platformにいる場合、インスタンスを選択すると「監視」タブの下にグラフが表示されます。
Azureには、同様の情報を表示するAzure Monitorがあります。
ほとんどの他のクラウドプロバイダーも、このようなグラフを持っている可能性が高いです。
/proc/loadavgの使用
これをネイティブに行う最良の方法は、どこを見ればよいかを見ることです
top
から情報を得る。
/proc/loadavg1分、5分、15分の平均が含まれています。これを使って記録できます。
catcat /proc/loadavg/
1.71 1.32 1.38 2/97 6429
これを使用して、いくつかのawkマジックを使って、各行をカンマ区切りのCSVファイルに印刷することでグラフを生成できます:
cat /proc/loadavg | awk '{print $1","$2","$3}' >> cpu.csvこれを毎分実行されるcronジョブに接続し、logrotateでログをローテートすれば、即席のCPUモニターができあがります。CSVファイルをExcelにインポートすれば、平均CPU使用率を折れ線グラフで簡単にグラフ化できます。
注記、上記のコマンドは1分、5分、15分の平均を表示します。毎分実行している場合は、計算でそれを判断できるため、5分および15分の平均を表示することは実際には必要ありません。
sysstatをインストールする
sarユーティリティはシステムパフォーマンスをモニタリングするのに素晴らしいです。これはsysstatの一部として含まれており、あなたのシステムにはデフォルトでインストールされていない可能性が高いです。ディストリビューションのパッケージマネージャーから取得する必要があります。UbuntuのようなDebianベースのシステムでは、次のようになります:
sudo apt-get install sysstat次に、/etc/default/sysstatを編集して「ENABLED」をtrueに設定することで有効にします。
これを行うことで、システムを監視し、10分ごとにレポートを生成し、1週間後にそれらをローテーションします。この動作を変更するには、/etc/cron.d/sysstat にある sysstat の crontab を編集するか、/etc/sysstat/sysstat にある sysstat の設定でローテーション設定を変更します。
次のコマンドを使用してリアルタイムレポートを生成できます:
sar -u 1 3
sysstatは背景のCPU使用データを毎分収集し、それを/var/log/sysstat/に保存します。その後、このデータを分析のためにインポートすることができます。スプレッドシートプログラムや、きれいなチャートを表示するカスタムツールのsargraphのようなものを使用できます:
このようなグラフを描くために、ttyplotのようなコマンドラインユーティリティを使うこともできますが、どれもGUIのように使いやすく(見た目も良い)にはほど遠いです。この件に関してはコマンドラインには敵いません---チャートの方がいいです。
モニターはCPU使用率が高すぎると警告できます
Monitは、Unix用のオープンソースの監視スイートで、サーバーの健康状態をチェックし、サーバーのCPU使用率が危険なほど高くなると通知を送るように設定できます。設定方法のガイドをお読みいただき、詳細を学んでください。
CloudWatchはアラームを使って自動的に同じことを実現でき、CPU使用率だけでなく、複数の異なるメトリクスで動作できます。





