docker 采集数据索引适配
This commit is contained in:
+18
-5
@@ -81,7 +81,8 @@ public class DockerServiceImpl implements DockerService {
|
||||
try {
|
||||
// 执行 docker stats 命令(--no-stream 表示只输出一次)
|
||||
Process process = new ProcessBuilder(
|
||||
"docker", "stats", "--no-stream", dockerVO.getId()
|
||||
"docker", "stats", "--no-stream", dockerVO.getId(),
|
||||
"--format", "'table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemPerc}}\t{{.NetIO}}'"
|
||||
).start();
|
||||
|
||||
// 读取命令输出
|
||||
@@ -95,12 +96,24 @@ public class DockerServiceImpl implements DockerService {
|
||||
// "your_container_id 0.00% 0.000 CPU % 0 B / 0 B 0 packets / 0 packets"
|
||||
// 实际输出可能因 Docker 版本不同而变化,需根据实际情况调整正则表达式
|
||||
if (line.contains(dockerVO.getId())) {
|
||||
// AssertLog.info("docker:{}",line);
|
||||
String[] parts = line.trim().split("\\s+");
|
||||
String cpuUtil = parts[2]; // cpu使用率
|
||||
String memUtil = parts[6]; // 内存使用率
|
||||
String cpuUtil = parts[3]; // cpu使用率
|
||||
String memUtil = parts[4]; // 内存使用率
|
||||
// 网络流量通常在第 4 列(接收)和第 5 列(发送),格式为 "B/s" 或 "B"
|
||||
dockerVO.setCpuUtil(cpuUtil);
|
||||
String rxRate = "0B";// 接收速率(如 "1.23kB/s")
|
||||
String txRate = "0B";// 发送速率(如 "4.56kB/s")
|
||||
//数据间有空格
|
||||
if(parts.length > 9){
|
||||
rxRate = parts[5]+parts[6];
|
||||
txRate = parts[8]+parts[9];
|
||||
}else{
|
||||
rxRate = parts[5];
|
||||
txRate = parts[7];
|
||||
|
||||
}
|
||||
// 网络流量通常在第 4 列(接收)和第 5 列(发送),格式为 "B/s" 或 "B"
|
||||
String rxRate = parts[7]; // 接收速率(如 "1.23kB/s")
|
||||
String txRate = parts[9]; // 发送速率(如 "4.56kB/s")
|
||||
dockerVO.setCpuUtil(cpuUtil);
|
||||
dockerVO.setMemUtil(memUtil);
|
||||
dockerVO.setNetInSpeed(rxRate);
|
||||
|
||||
Reference in New Issue
Block a user