This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.18
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.18 by this push:
new 9df23f951b7 Prometheus exporter fix cpu/memory usage labels (#7629)
9df23f951b7 is described below
commit 9df23f951b78982b069e2891e87d7a09bd5fb57f
Author: Sina Kashipazha <[email protected]>
AuthorDate: Mon Aug 7 20:47:03 2023 +0200
Prometheus exporter fix cpu/memory usage labels (#7629)
---
.../cloudstack/metrics/PrometheusExporterImpl.java | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git
a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
index 7d6ed876323..171df354616 100644
---
a/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
+++
b/plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java
@@ -28,6 +28,7 @@ import javax.inject.Inject;
import com.cloud.configuration.dao.ResourceCountDao;
import com.cloud.dc.DedicatedResourceVO;
import com.cloud.dc.dao.DedicatedResourceDao;
+import com.cloud.host.HostStats;
import com.cloud.user.Account;
import com.cloud.user.dao.AccountDao;
import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;
@@ -127,6 +128,8 @@ public class PrometheusExporterImpl extends ManagerBase
implements PrometheusExp
Map<String, Integer> upHosts = new HashMap<>();
Map<String, Integer> downHosts = new HashMap<>();
+ HostStats hostStats;
+
for (final HostVO host : hostDao.listAll()) {
if (host == null || host.getType() != Host.Type.Routing ||
host.getDataCenterId() != dcId) {
continue;
@@ -144,6 +147,7 @@ public class PrometheusExporterImpl extends ManagerBase
implements PrometheusExp
metricsList.add(new ItemHostIsDedicated(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), isDedicated));
String hostTags = markTagMaps(host, totalHosts, upHosts,
downHosts);
+ hostStats = ApiDBUtils.getHostStatistics(host.getId());
// Get account, domain details for dedicated hosts
if (isDedicated == 1) {
@@ -157,10 +161,14 @@ public class PrometheusExporterImpl extends ManagerBase
implements PrometheusExp
final String cpuFactor =
String.valueOf(CapacityManager.CpuOverprovisioningFactor.valueIn(host.getClusterId()));
final CapacityVO cpuCapacity =
capacityDao.findByHostIdType(host.getId(), Capacity.CAPACITY_TYPE_CPU);
+ final double cpuUsedMhz = hostStats.getCpuUtilization() *
host.getCpus() * host.getSpeed() / 100.0 ;
+
if (cpuCapacity != null && cpuCapacity.getCapacityState() ==
CapacityState.Enabled) {
- metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor, USED,
cpuCapacity.getUsedCapacity(), isDedicated, hostTags));
+ metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor,
ALLOCATED, cpuCapacity.getUsedCapacity(), isDedicated, hostTags));
+ metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor, USED,
cpuUsedMhz, isDedicated, hostTags));
metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor, TOTAL,
cpuCapacity.getTotalCapacity(), isDedicated, hostTags));
} else {
+ metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor,
ALLOCATED, 0L, isDedicated, hostTags));
metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor, USED,
0L, isDedicated, hostTags));
metricsList.add(new ItemHostCpu(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), cpuFactor, TOTAL,
0L, isDedicated, hostTags));
}
@@ -168,10 +176,12 @@ public class PrometheusExporterImpl extends ManagerBase
implements PrometheusExp
final String memoryFactor =
String.valueOf(CapacityManager.MemOverprovisioningFactor.valueIn(host.getClusterId()));
final CapacityVO memCapacity =
capacityDao.findByHostIdType(host.getId(), Capacity.CAPACITY_TYPE_MEMORY);
if (memCapacity != null && memCapacity.getCapacityState() ==
CapacityState.Enabled) {
- metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor, USED,
memCapacity.getUsedCapacity(), isDedicated, hostTags));
+ metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor,
ALLOCATED, memCapacity.getUsedCapacity(), isDedicated, hostTags));
+ metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor, USED,
hostStats.getUsedMemory(), isDedicated, hostTags));
metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor,
TOTAL, memCapacity.getTotalCapacity(), isDedicated, hostTags));
} else {
- metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor, USED,
0L, isDedicated, hostTags));
+ metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor,
ALLOCATED, 0L, isDedicated, hostTags));
+ metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor, USED,
0, isDedicated, hostTags));
metricsList.add(new ItemHostMemory(zoneName, zoneUuid,
host.getName(), host.getUuid(), host.getPrivateIpAddress(), memoryFactor,
TOTAL, 0L, isDedicated, hostTags));
}