Skip to content

Commit 230d3d7

Browse files
author
Sina Kashipazha
committed
Show count of Active domains on grafana.
1 parent ab04936 commit 230d3d7

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

engine/schema/src/main/java/com/cloud/user/dao/AccountDao.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,5 @@ public interface AccountDao extends GenericDao<AccountVO, Long> {
7878
*/
7979
long getDomainIdForGivenAccountId(long id);
8080

81+
int getActiveDomains();
8182
}

engine/schema/src/main/java/com/cloud/user/dao/AccountDaoImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.cloud.utils.db.GenericSearchBuilder;
2929
import com.cloud.utils.db.SearchBuilder;
3030
import com.cloud.utils.db.SearchCriteria;
31+
import com.cloud.utils.db.SearchCriteria.Func;
3132
import com.cloud.utils.db.SearchCriteria.Op;
3233
import org.apache.commons.lang3.StringUtils;
3334
import com.cloud.utils.db.TransactionLegacy;
@@ -54,6 +55,7 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
5455
protected final SearchBuilder<AccountVO> NonProjectAccountSearch;
5556
protected final SearchBuilder<AccountVO> AccountByRoleSearch;
5657
protected final GenericSearchBuilder<AccountVO, Long> AccountIdsSearch;
58+
protected final GenericSearchBuilder<AccountVO, Long> ActiveDomainCount;
5759

5860
public AccountDaoImpl() {
5961
AllFieldsSearch = createSearchBuilder();
@@ -101,6 +103,13 @@ public AccountDaoImpl() {
101103
AccountByRoleSearch = createSearchBuilder();
102104
AccountByRoleSearch.and("roleId", AccountByRoleSearch.entity().getRoleId(), SearchCriteria.Op.EQ);
103105
AccountByRoleSearch.done();
106+
107+
ActiveDomainCount = createSearchBuilder(Long.class);
108+
ActiveDomainCount.select(null, Func.COUNT, null);
109+
ActiveDomainCount.and("domain", ActiveDomainCount.entity().getDomainId(), SearchCriteria.Op.EQ);
110+
ActiveDomainCount.and("state", ActiveDomainCount.entity().getState(), SearchCriteria.Op.EQ);
111+
ActiveDomainCount.groupBy(ActiveDomainCount.entity().getDomainId());
112+
ActiveDomainCount.done();
104113
}
105114

106115
@Override
@@ -318,5 +327,10 @@ public long getDomainIdForGivenAccountId(long id) {
318327
}
319328
}
320329

321-
330+
@Override
331+
public int getActiveDomains() {
332+
SearchCriteria<Long> sc = ActiveDomainCount.create();
333+
sc.setParameters("state", "enabled");
334+
return customSearch(sc, null).size();
335+
}
322336
}

plugins/integrations/prometheus/src/main/java/org/apache/cloudstack/metrics/PrometheusExporterImpl.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import com.cloud.host.HostVO;
5555
import com.cloud.host.Status;
5656
import com.cloud.host.dao.HostDao;
57-
import com.cloud.host.dao.HostTagsDao;
5857
import com.cloud.network.dao.IPAddressDao;
5958
import com.cloud.storage.ImageStore;
6059
import com.cloud.storage.StorageStats;
@@ -66,6 +65,7 @@
6665
import com.cloud.utils.component.Manager;
6766
import com.cloud.utils.component.ManagerBase;
6867
import com.cloud.vm.VirtualMachine.State;
68+
import com.cloud.vm.dao.UserVmDao;
6969
import com.cloud.vm.dao.VMInstanceDao;
7070

7171
public class PrometheusExporterImpl extends ManagerBase implements PrometheusExporter, Manager {
@@ -89,6 +89,8 @@ public class PrometheusExporterImpl extends ManagerBase implements PrometheusExp
8989
@Inject
9090
private VMInstanceDao vmDao;
9191
@Inject
92+
private UserVmDao uservmDao;
93+
@Inject
9294
private VolumeDao volumeDao;
9395
@Inject
9496
private IPAddressDao publicIpAddressDao;
@@ -395,6 +397,10 @@ private void addDomainResourceCount(final List<Item> metricsList) {
395397
}
396398
}
397399

400+
private void addDomainMetrics(final List<Item> metricsList, final String zoneName, final String zoneUuid) {
401+
metricsList.add(new ItemActiveDomains(zoneName, zoneUuid, _accountDao.getActiveDomains()));
402+
}
403+
398404
@Override
399405
public void updateMetrics() {
400406
final List<Item> latestMetricsItems = new ArrayList<Item>();
@@ -409,6 +415,7 @@ public void updateMetrics() {
409415
addStorageMetrics(latestMetricsItems, dc.getId(), zoneName, zoneUuid);
410416
addIpAddressMetrics(latestMetricsItems, dc.getId(), zoneName, zoneUuid);
411417
addVlanMetrics(latestMetricsItems, dc.getId(), zoneName, zoneUuid);
418+
addDomainMetrics(latestMetricsItems, zoneName, zoneUuid);
412419
}
413420
addDomainLimits(latestMetricsItems);
414421
addDomainResourceCount(latestMetricsItems);
@@ -834,6 +841,24 @@ public String toMetricsString() {
834841

835842
}
836843

844+
class ItemActiveDomains extends Item {
845+
String zoneName;
846+
String zoneUuid;
847+
int total;
848+
849+
public ItemActiveDomains(final String zn, final String zu, final int cnt) {
850+
super("cloudstack_active_domains_total");
851+
zoneName = zn;
852+
zoneUuid = zu;
853+
total = cnt;
854+
}
855+
856+
@Override
857+
public String toMetricsString() {
858+
return String.format("%s{zone=\"%s\"} %d", name, zoneName, total);
859+
}
860+
}
861+
837862
class ItemHostDedicatedToAccount extends Item {
838863
String zoneName;
839864
String hostName;

0 commit comments

Comments
 (0)