This is an automated email from the ASF dual-hosted git repository.
dineshkumar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new 30330e871 RANGER-5456: Integrate Pending Metrics into Ranger Admin
Metrics Response (#826)
30330e871 is described below
commit 30330e871f3d84a0e385d89b718b71f9916405db
Author: Rakesh Gupta <[email protected]>
AuthorDate: Wed Mar 18 16:56:22 2026 +0530
RANGER-5456: Integrate Pending Metrics into Ranger Admin Metrics Response
(#826)
---
.../java/org/apache/ranger/db/XXPolicyDao.java | 6 +++
.../org/apache/ranger/db/XXUgsyncAuditInfoDao.java | 9 +++++
.../ranger/metrics/RangerAdminMetricsWrapper.java | 7 ++++
.../ranger/metrics/RangerMetricsFetcher.java | 46 +++++++++++++++++++++-
...Group.java => RangerAdminMetricsSourceGds.java} | 11 +++---
...ngerAdminMetricsSourcePolicyResourceAccess.java | 2 +
.../source/RangerAdminMetricsSourceUserGroup.java | 2 +
.../main/resources/META-INF/jpa_named_queries.xml | 8 ++++
8 files changed, 84 insertions(+), 7 deletions(-)
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
index c9e9dce69..5260f20f6 100755
--- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
@@ -512,4 +512,10 @@ public List<XXPolicy> getProjectPolicies(Long projectId) {
return ret;
}
+
+ public long getSecurityZonePolicyCount(Long zoneId) {
+ return
getEntityManager().createNamedQuery("XXPolicy.getSecurityZonePolicyCount",
Long.class)
+ .setParameter("zoneId", zoneId)
+ .getSingleResult();
+ }
}
diff --git
a/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
b/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
index 175fc7aac..762970c00 100644
---
a/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
+++
b/security-admin/src/main/java/org/apache/ranger/db/XXUgsyncAuditInfoDao.java
@@ -26,6 +26,7 @@
import javax.persistence.NoResultException;
+import java.util.Date;
import java.util.List;
@Service
@@ -69,4 +70,12 @@ public List<XXUgsyncAuditInfo> findBySyncSource(String
syncSource) {
return null;
}
}
+
+ public Date getUGSyncLastUpdatedTime() {
+ try {
+ return
getEntityManager().createNamedQuery("XXUGSyncAuditInfo.getUGSyncLastUpdatedTime",
Date.class).getSingleResult();
+ } catch (NoResultException e) {
+ return null;
+ }
+ }
}
diff --git
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
index 42ad39efd..5709ab3f2 100644
---
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
+++
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerAdminMetricsWrapper.java
@@ -21,6 +21,7 @@
import
org.apache.ranger.metrics.source.RangerAdminMetricsSourceContextEnricher;
import org.apache.ranger.metrics.source.RangerAdminMetricsSourceDenyConditions;
+import org.apache.ranger.metrics.source.RangerAdminMetricsSourceGds;
import org.apache.ranger.metrics.source.RangerAdminMetricsSourcePolicyMasking;
import
org.apache.ranger.metrics.source.RangerAdminMetricsSourcePolicyResourceAccess;
import
org.apache.ranger.metrics.source.RangerAdminMetricsSourcePolicyRowFiltering;
@@ -72,6 +73,9 @@ public class RangerAdminMetricsWrapper {
@Autowired
private RangerAdminMetricsSourceSummary summarySource;
+ @Autowired
+ private RangerAdminMetricsSourceGds gdsSource;
+
@PostConstruct
public void init() {
LOG.info("===>> RangerAdminMetricsWrapper.init()");
@@ -100,6 +104,9 @@ public void init() {
//Source: Summary
sourceWrappers.add(new
RangerMetricsSourceWrapper("RangerAdminMetricsSourceSummary", "Summary in
Ranger Admin", context, summarySource));
+ //Source: Gds
+ sourceWrappers.add(new
RangerMetricsSourceWrapper("RangerAdminMetricsSourceGds", "Gds in Ranger
Admin", context, gdsSource));
+
rangerMetricsSystemWrapper.init(context, sourceWrappers,
Collections.emptyList());
} catch (Exception e) {
LOG.error("RangerAdminMetricsWrapper: Exception occured while
initializing Metric Starter:", e);
diff --git
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
index d8ec1426b..c01de6012 100644
---
a/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
+++
b/security-admin/src/main/java/org/apache/ranger/metrics/RangerMetricsFetcher.java
@@ -23,6 +23,7 @@
import org.apache.ranger.biz.XUserMgr;
import org.apache.ranger.common.RangerConstants;
import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.plugin.model.RangerSecurityZone;
import org.apache.ranger.service.XGroupService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,6 +32,7 @@
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -94,7 +96,6 @@ public Map<String, Long> getUserMetrics() {
ret.put("Total", total);
summaryReusable.put("TotalUsers", total);
- summaryReusable.put("TotalRoles", (ret.size() - 1L));
return ret;
}
@@ -173,6 +174,12 @@ public Map<String, Long> getSummary() {
//policies
ret.put("TotalPolicies",
summaryPolicy.values().stream().mapToLong(Long::longValue).sum());
+ //roles
+ ret.put("TotalRoles", daoMgr.getXXRole().getAllCount());
+
+ //securityzones (exclude the default "Unzoned" zone)
+ ret.put("TotalSecurityZones", Math.max(0,
daoMgr.getXXSecurityZoneDao().getAllCount() - 1));
+
//x_trx_log_v2
ret.put("TotalAdminAudits", daoMgr.getXXTrxLogV2().getAllCount());
@@ -187,4 +194,41 @@ public Map<String, Long> getSummary() {
return ret;
}
+
+ public Map<String, Long> getGdsMetrics() {
+ Map<String, Long> ret = new HashMap<>();
+
+ //x_gds_dataset
+ ret.put("Dataset", daoMgr.getXXGdsDataset().getAllCount());
+
+ //x_gds_data_share
+ ret.put("DataShare", daoMgr.getXXGdsDataShare().getAllCount());
+
+ //x_gds_shared_resource
+ ret.put("SharedResource",
daoMgr.getXXGdsSharedResource().getAllCount());
+
+ //x_gds_project
+ ret.put("Project", daoMgr.getXXGdsProject().getAllCount());
+
+ return ret;
+ }
+
+ public Map<String, Long> getSecurityZonePolicyMetrics() {
+ Map<String, Long> ret = new HashMap<>();
+
+ //securityzonepolicy
+ ret.put("Count",
daoMgr.getXXPolicy().getSecurityZonePolicyCount(RangerSecurityZone.RANGER_UNZONED_SECURITY_ZONE_ID));
+
+ return ret;
+ }
+
+ public Map<String, Long> getUserSyncMetrics() {
+ Map<String, Long> ret = new HashMap<>();
+
+ Date lastUpdated =
daoMgr.getXXUgsyncAuditInfo().getUGSyncLastUpdatedTime();
+
+ ret.put("SyncTime", lastUpdated != null ? lastUpdated.getTime() : 0L);
+
+ return ret;
+ }
}
diff --git
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceGds.java
similarity index 75%
copy from
security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
copy to
security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceGds.java
index d2d3b9831..1fc75d6fc 100644
---
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
+++
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceGds.java
@@ -26,19 +26,18 @@
import java.util.Map;
@Component
-public class RangerAdminMetricsSourceUserGroup extends
RangerAdminMetricsSourceBase {
+public class RangerAdminMetricsSourceGds extends RangerAdminMetricsSourceBase {
@Autowired
private RangerMetricsFetcher rangerMetricsFetcher;
- public RangerAdminMetricsSourceUserGroup() {
- super("admin", "UserGroup");
+ public RangerAdminMetricsSourceGds() {
+ super("admin", "Gds");
}
@Override
protected void refresh() {
- Map<String, Long> userGroupMetrics =
rangerMetricsFetcher.getUserMetrics();
+ Map<String, Long> gdsMetrics = rangerMetricsFetcher.getGdsMetrics();
- addMetricEntries("UserCount", userGroupMetrics);
- addMetricEntry("GroupCount", "", rangerMetricsFetcher.getGroupCount());
+ addMetricEntries("GdsCount", gdsMetrics);
}
}
diff --git
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
index 7d66a0189..b475a4f1c 100644
---
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
+++
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourcePolicyResourceAccess.java
@@ -38,7 +38,9 @@ public RangerAdminMetricsSourcePolicyResourceAccess() {
@Override
protected void refresh() {
Map<String, Long> accessPolicyMetrics =
rangerMetricsFetcher.getPolicyMetrics(RangerPolicy.POLICY_TYPE_ACCESS);
+ Map<String, Long> securityZonePolicyMetrics =
rangerMetricsFetcher.getSecurityZonePolicyMetrics();
addMetricEntries("ResourceAccessCount", accessPolicyMetrics);
+ addMetricEntries("SecurityZonePolicy", securityZonePolicyMetrics);
}
}
diff --git
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
index d2d3b9831..73244cc0c 100644
---
a/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
+++
b/security-admin/src/main/java/org/apache/ranger/metrics/source/RangerAdminMetricsSourceUserGroup.java
@@ -37,8 +37,10 @@ public RangerAdminMetricsSourceUserGroup() {
@Override
protected void refresh() {
Map<String, Long> userGroupMetrics =
rangerMetricsFetcher.getUserMetrics();
+ Map<String, Long> userSyncMetrics =
rangerMetricsFetcher.getUserSyncMetrics();
addMetricEntries("UserCount", userGroupMetrics);
addMetricEntry("GroupCount", "", rangerMetricsFetcher.getGroupCount());
+ addMetricEntries("UserSyncLastUpdated", userSyncMetrics);
}
}
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index 7931bb1ab..7ae05973d 100755
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -1707,6 +1707,10 @@
</query>
</named-query>
+ <named-query name="XXUGSyncAuditInfo.getUGSyncLastUpdatedTime">
+ <query>SELECT MAX(obj.eventTime) from XXUgsyncAuditInfo
obj</query>
+ </named-query>
+
<!-- SecurityZone -->
<named-query name="XXSecurityZone.findByZoneId">
<query>
@@ -2204,6 +2208,10 @@
WHERE xsd.name = :serviceType</query>
</named-query>
+ <named-query name="XXPolicy.getSecurityZonePolicyCount">
+ <query>SELECT count(obj.id) FROM XXPolicy obj where obj.zoneId
IS NOT NULL AND obj.zoneId != :zoneId</query>
+ </named-query>
+
<named-query name="XXGdsDataset.findByGuid">
<query>select obj from XXGdsDataset obj where obj.guid =
:guid</query>
</named-query>