2016-10-30 45 views
1

私のアプリケーションでシステムメトリックを監視したい。私はSpring Boot Actuatorを使用しますが、CPU使用量に関するメトリックはありません。Java Management API CPU使用率を取得する

MemoryUsage 

はその時あなたは、このような取得することができます。

getSystemLoadAverage 
getAvailableProcessors 

が別のクラスがあります:それはのようなメソッドを持っている

OperatingSystemMXBean 

:私は春ブーツアクチュエータで、このような指標はここから取り出すことを知っています指標:

getUsed 
getCommitted 

しかし、私はjava.lang.managementでJavaアプリケーションのCPU使用量に関するメトリックを見ることができませんでした。どのように私はそれを取得できますか?

+0

['com.sun.management.OperatingSystemMXBean.getSystemCpuLoad()'](http://docs.oracle.com/javase/7/docs/jre/api/management/extension/com/sun/management/OperatingSystemMXBean .html#getProcessCpuLoad())? – Li357

+0

@AndrewLi SystemCpuLoadはgetSystemLoadAverage/getAvailableProcessorsと同じですか? – kamaci

+0

いいえ 'getSystemCpuLoad'は、システム全体の最近のCPU使用率を返します。重複を参照してください – Li357

答えて

1

あなたはjava.lang.managementパッケージのOperatingSystemMXBeanクラスについて話しています。 com.sun.managementパッケージには同じ名前クラスがあります。 はこのクラスのCPU情報aboutsいくつかの方法があります:

double getProcessCpuLoad() 
long getProcessCpuTime() 
double getSystemCpuLoad() 

はこれがBeanにアクセスし、CPU負荷情報を取得するためのコードです:ので、キャストが必要であること

import java.lang.management.ManagementFactory; 
import com.sun.management.OperatingSystemMXBean; 

OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); 
System.out.println(bean.getProcessCpuLoad()); 

は注意必要なクラスは、java.lang.managementではなくjava.sun.managementパッケージにあります。 eclipseを使用している場合、アクセス制限に関するいくつかの問題が発生する可能性があります。この場合は簡単に修正できますin this way

0

アプリケーションの作業負荷の横に測定の作業負荷があるため、測定結果を正確には使用できないため、測定を使用しないでください。
JconsoleまたはVisualvmが優れていますこの場合、外部ツールを使用して目をとることができます。 springbootだけでなく、すべてのJavaアプリケーションタイプを測定することもできます。

+0

を使用し、私はいくつかのマイクロサービスを持っていると私のアプリケーションの1つは、他人を監視するダッシュボードです。 – kamaci

関連する問題