This commit is contained in:
meiwei
2022-10-11 10:21:27 +08:00
5 changed files with 159 additions and 1 deletions
-1
View File
@@ -23,7 +23,6 @@
<zfoo.protocol.version>3.0</zfoo.protocol.version>
<zfoo.util.version>3.0</zfoo.util.version>
<!-- 核心spring框架 -->
<spring.version>5.3.4</spring.version>
<spring.boot.version>2.4.3</spring.boot.version>
@@ -0,0 +1,68 @@
package com.zfoo.monitor.model;
import java.lang.management.MemoryUsage;
/**
* @author yh
* @date 2022/10/10 下午6:44
*/
public class JvmMemoryVo {
private String name;
private double total;
private double max;
private double used;
@Override
public String toString() {
return "JvmMemoryVo{" +
"name='" + name + '\'' +
", total=" + total +
", max=" + max +
", used=" + used +
'}';
}
public JvmMemoryVo(String name, MemoryUsage usage) {
this.name=name;
this.total=bitTomb(usage.getCommitted());
this.max=bitTomb(usage.getMax());
this.used=bitTomb(usage.getUsed());
}
private static double bitTomb(long val){
return (double) (val/1024/1024);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public double getMax() {
return max;
}
public void setMax(double max) {
this.max = max;
}
public double getUsed() {
return used;
}
public void setUsed(double used) {
this.used = used;
}
}
@@ -0,0 +1,37 @@
package com.zfoo.monitor.util;
import com.zfoo.monitor.model.JvmMemoryVo;
import java.lang.management.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author yh
* @date 2022/10/10 下午6:42
*/
public class JvmUtils {
public static List<JvmMemoryVo> getJvmInfo() {
List<JvmMemoryVo> list = new ArrayList<>();
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
//堆内存
MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
list.add(new JvmMemoryVo("heap", heapMemoryUsage));
List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean mxBean : memoryPoolMXBeans) {
//获取堆内存明细
if (MemoryType.HEAP.equals(mxBean.getType())) {
MemoryUsage usage = mxBean.getUsage();
list.add(new JvmMemoryVo(mxBean.getName(), usage));
}
}
return list;
}
}
@@ -13,6 +13,7 @@
package com.zfoo.monitor;
import com.zfoo.monitor.util.JvmUtils;
import com.zfoo.monitor.util.OSUtils;
import com.zfoo.protocol.util.JsonUtils;
import com.zfoo.util.ThreadUtils;
@@ -118,4 +119,13 @@ public class ApplicationTest {
System.out.println(monitor);
}
@Test
public void JvmTest(){
JvmUtils.getJvmInfo().forEach(a->{
System.out.println(a.toString());
});
}
}
@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" debug="false">
<contextName>com.zfoo.monitor</contextName>
<property name="LOG_HOME" value="log/net"/>
<property name="PATTERN_FILE"
value="%d{yyyy-MM-dd HH:mm:ss} [%5level] [%thread] %logger.%M\\(%F:%line\\) - %msg%n"/>
<property name="PATTERN_CONSOLE"
value="%d{yyyy-MM-dd HH:mm:ss} [%highlight(%5level)] [%thread] %logger.%M\\(%F:%line\\) - %msg%n"/>
<!-- 负责写日志,控制台日志,会打印所有的包的所有级别日志 -->
<appender name="zfoo_console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${PATTERN_CONSOLE}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 根logger -->
<root level="info">
<appender-ref ref="zfoo_console"/>
</root>
<!--
- 1.name:包名或类名,用来指定受此logger约束的某一个包或者具体的某一个类
- 2.未设置打印级别,所以继承他的上级<root>的日志级别“DEBUG”
- 3.未设置additivity,默认为true,将此logger的打印信息向上级传递;
- 4.未设置appender,此logger本身不打印任何信息,级别为“DEBUG”及大于“DEBUG”的日志信息传递给root,
- root接到下级传递的信息,交给已经配置好的名为“STDOUT”的appender处理,“STDOUT”appender将信息打印到控制台;
-->
<logger name="ch.qos.logback" level="info"/>
<!--*******************************************Spring********************************************************-->
<!--logger中的name是指代码的包名或类名,路径要写全,可以配置不同包中的日志输出到不同的文件中。level是日志输出级别 -->
<!--过滤掉spring的一些无用的DEBUG信息-->
<logger name="org.springframework" level="info"/>
<!-- additivity="false"表示不继承父logger的配置和父类没有关系-->
<logger name="org.springframework.core" level="info"/>
<!--*******************************************Netty*********************************************************-->
<logger name="io.netty" level="info"/>
</configuration>