You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by si...@apache.org on 2022/04/13 19:54:55 UTC
[ozone] branch HDDS-4944 updated: HDDS-6375. [Multi-Tenant] Implement tenant request metrics (#3256)
This is an automated email from the ASF dual-hosted git repository.
siyao pushed a commit to branch HDDS-4944
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-4944 by this push:
new 9280b67553 HDDS-6375. [Multi-Tenant] Implement tenant request metrics (#3256)
9280b67553 is described below
commit 9280b675537cc79ba6caa93636c0cecb988f761d
Author: Siyao Meng <50...@users.noreply.github.com>
AuthorDate: Wed Apr 13 12:54:49 2022 -0700
HDDS-6375. [Multi-Tenant] Implement tenant request metrics (#3256)
---
.../java/org/apache/hadoop/ozone/om/OMMetrics.java | 174 +++++++++++++++++++++
.../org/apache/hadoop/ozone/om/OzoneManager.java | 6 +
.../s3/tenant/OMTenantAssignAdminRequest.java | 7 +-
.../tenant/OMTenantAssignUserAccessIdRequest.java | 7 +-
.../request/s3/tenant/OMTenantCreateRequest.java | 10 +-
.../request/s3/tenant/OMTenantDeleteRequest.java | 8 +-
.../s3/tenant/OMTenantRevokeAdminRequest.java | 7 +-
.../tenant/OMTenantRevokeUserAccessIdRequest.java | 7 +-
8 files changed, 214 insertions(+), 12 deletions(-)
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java
index 827727c2c2..01318a86dc 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMMetrics.java
@@ -114,6 +114,35 @@ public class OMMetrics {
private @Metric MutableCounterLong numListMultipartUploadPartFails;
private @Metric MutableCounterLong numOpenKeyDeleteRequestFails;
+ // Number of tenant operations attempted
+ private @Metric MutableCounterLong numTenantOps;
+ // Metrics for a total number of tenants
+ private @Metric MutableCounterLong numTenants;
+ // Metrics for tenant create operation
+ private @Metric MutableCounterLong numTenantCreates;
+ private @Metric MutableCounterLong numTenantCreateFails;
+ // Metrics for tenant delete operation
+ private @Metric MutableCounterLong numTenantDeletes;
+ private @Metric MutableCounterLong numTenantDeleteFails;
+ // Metrics for tenant assign user operation
+ private @Metric MutableCounterLong numTenantAssignUsers;
+ private @Metric MutableCounterLong numTenantAssignUserFails;
+ // Metrics for tenant revoke user operation
+ private @Metric MutableCounterLong numTenantRevokeUsers;
+ private @Metric MutableCounterLong numTenantRevokeUserFails;
+ // Metrics for tenant assign admin operation
+ private @Metric MutableCounterLong numTenantAssignAdmins;
+ private @Metric MutableCounterLong numTenantAssignAdminFails;
+ // Metrics for tenant revoke admin operation
+ private @Metric MutableCounterLong numTenantRevokeAdmins;
+ private @Metric MutableCounterLong numTenantRevokeAdminFails;
+ // Metric for tenant list operation
+ private @Metric MutableCounterLong numTenantLists;
+ // Metric for tenant get user info
+ private @Metric MutableCounterLong numTenantGetUserInfos;
+ // Metric for list users in tenant operation
+ private @Metric MutableCounterLong numTenantTenantUserLists;
+
private @Metric MutableCounterLong numGetFileStatusFails;
private @Metric MutableCounterLong numCreateDirectoryFails;
private @Metric MutableCounterLong numCreateFileFails;
@@ -400,6 +429,83 @@ public class OMMetrics {
numListMultipartUploadParts.incr();
}
+ public void incNumTenants() {
+ numTenants.incr();
+ }
+
+ public void decNumTenants() {
+ numTenants.incr(-1);
+ }
+
+ public void incNumTenantCreates() {
+ numTenantOps.incr();
+ numTenantCreates.incr();
+ }
+
+ public void incNumTenantCreateFails() {
+ numTenantCreateFails.incr();
+ }
+
+ public void incNumTenantDeletes() {
+ numTenantOps.incr();
+ numTenantDeletes.incr();
+ }
+
+ public void incNumTenantDeleteFails() {
+ numTenantDeleteFails.incr();
+ }
+
+ public void incNumTenantAssignUsers() {
+ numTenantOps.incr();
+ numTenantAssignUsers.incr();
+ }
+
+ public void incNumTenantAssignUserFails() {
+ numTenantAssignUserFails.incr();
+ }
+
+ public void incNumTenantRevokeUsers() {
+ numTenantOps.incr();
+ numTenantRevokeUsers.incr();
+ }
+
+ public void incNumTenantRevokeUserFails() {
+ numTenantRevokeUserFails.incr();
+ }
+
+ public void incNumTenantAssignAdmins() {
+ numTenantOps.incr();
+ numTenantAssignAdmins.incr();
+ }
+
+ public void incNumTenantAssignAdminFails() {
+ numTenantAssignAdminFails.incr();
+ }
+
+ public void incNumTenantRevokeAdmins() {
+ numTenantOps.incr();
+ numTenantRevokeAdmins.incr();
+ }
+
+ public void incNumTenantRevokeAdminFails() {
+ numTenantRevokeAdminFails.incr();
+ }
+
+ public void incNumTenantLists() {
+ numTenantOps.incr();
+ numTenantLists.incr();
+ }
+
+ public void incNumTenantGetUserInfos() {
+ numTenantOps.incr();
+ numTenantGetUserInfos.incr();
+ }
+
+ public void incNumTenantUserLists() {
+ numTenantOps.incr();
+ numTenantTenantUserLists.incr();
+ }
+
public void incNumGetFileStatus() {
numKeyOps.incr();
numFSOps.incr();
@@ -872,6 +978,74 @@ public class OMMetrics {
return numRemoveAcl.value();
}
+ public long getNumTenantOps() {
+ return numTenantOps.value();
+ }
+
+ public long getNumTenants() {
+ return numTenants.value();
+ }
+
+ public long getNumTenantCreates() {
+ return numTenantCreates.value();
+ }
+
+ public long getNumTenantCreateFails() {
+ return numTenantCreateFails.value();
+ }
+
+ public long getNumTenantDeletes() {
+ return numTenantDeletes.value();
+ }
+
+ public long getNumTenantDeleteFails() {
+ return numTenantDeleteFails.value();
+ }
+
+ public long getNumTenantAssignUsers() {
+ return numTenantAssignUsers.value();
+ }
+
+ public long getNumTenantAssignUserFails() {
+ return numTenantAssignUserFails.value();
+ }
+
+ public long getNumTenantRevokeUsers() {
+ return numTenantRevokeUsers.value();
+ }
+
+ public long getNumTenantRevokeUserFails() {
+ return numTenantRevokeUserFails.value();
+ }
+
+ public long getNumTenantAssignAdmins() {
+ return numTenantAssignAdmins.value();
+ }
+
+ public long getNumTenantAssignAdminFails() {
+ return numTenantAssignAdminFails.value();
+ }
+
+ public long getNumTenantRevokeAdmins() {
+ return numTenantRevokeAdmins.value();
+ }
+
+ public long getNumTenantRevokeAdminFails() {
+ return numTenantRevokeAdminFails.value();
+ }
+
+ public long getNumTenantLists() {
+ return numTenantLists.value();
+ }
+
+ public long getNumTenantGetUserInfos() {
+ return numTenantGetUserInfos.value();
+ }
+
+ public long getNumTenantTenantUserLists() {
+ return numTenantTenantUserLists.value();
+ }
+
public void incNumTrashRenames() {
numTrashRenames.incr();
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index 0dc4825fcb..83708c20d0 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -2952,6 +2952,8 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl
*/
public TenantStateList listTenant() throws IOException {
+ metrics.incNumTenantLists();
+
final UserGroupInformation ugi = getRemoteUser();
if (!isAdmin(ugi)) {
final OMException omEx = new OMException(
@@ -3004,6 +3006,8 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl
public TenantUserInfoValue tenantGetUserInfo(String userPrincipal)
throws IOException {
+ metrics.incNumTenantGetUserInfos();
+
if (StringUtils.isEmpty(userPrincipal)) {
return null;
}
@@ -3066,6 +3070,8 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl
public TenantUserList listUsersInTenant(String tenantId, String prefix)
throws IOException {
+ metrics.incNumTenantUserLists();
+
if (StringUtils.isEmpty(tenantId)) {
return null;
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignAdminRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignAdminRequest.java
index da90f5fd95..8a3cd7e108 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignAdminRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignAdminRequest.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.OMAction;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OMMultiTenantManager;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -160,6 +161,9 @@ public class OMTenantAssignAdminRequest extends OMClientRequest {
OzoneManager ozoneManager, long transactionLogIndex,
OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper) {
+ final OMMetrics omMetrics = ozoneManager.getMetrics();
+ omMetrics.incNumTenantAssignAdmins();
+
OMClientResponse omClientResponse = null;
final OMResponse.Builder omResponse =
OmResponseUtil.getOMResponseBuilder(getOmRequest());
@@ -242,12 +246,11 @@ public class OMTenantAssignAdminRequest extends OMClientRequest {
if (exception == null) {
LOG.info("Assigned admin to accessId '{}' in tenant '{}', "
+ "delegated: {}", accessId, tenantId, delegated);
- // TODO: HDDS-6375: omMetrics.incNumTenantAssignAdmin()
} else {
LOG.error("Failed to assign admin to accessId '{}' in tenant '{}', "
+ "delegated: {}: {}",
accessId, tenantId, delegated, exception.getMessage());
- // TODO: HDDS-6375: omMetrics.incNumTenantAssignAdminFails()
+ omMetrics.incNumTenantAssignAdminFails();
}
return omClientResponse;
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignUserAccessIdRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignUserAccessIdRequest.java
index 473259b6b1..e30913620a 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignUserAccessIdRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantAssignUserAccessIdRequest.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.ozone.OmUtils;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.OMAction;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.OmDBAccessIdInfo;
@@ -206,6 +207,9 @@ public class OMTenantAssignUserAccessIdRequest extends OMClientRequest {
OzoneManager ozoneManager, long transactionLogIndex,
OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper) {
+ final OMMetrics omMetrics = ozoneManager.getMetrics();
+ omMetrics.incNumTenantAssignUsers();
+
OMClientResponse omClientResponse = null;
final OMResponse.Builder omResponse =
OmResponseUtil.getOMResponseBuilder(getOmRequest());
@@ -363,11 +367,10 @@ public class OMTenantAssignUserAccessIdRequest extends OMClientRequest {
if (exception == null) {
LOG.info("Assigned user '{}' to tenant '{}' with accessId '{}'",
userPrincipal, tenantId, accessId);
- // TODO: HDDS-6375: omMetrics.incNumTenantAssignUser()
} else {
LOG.error("Failed to assign '{}' to tenant '{}' with accessId '{}': {}",
userPrincipal, tenantId, accessId, exception.getMessage());
- // TODO: HDDS-6375: omMetrics.incNumTenantAssignUserFails()
+ omMetrics.incNumTenantAssignUserFails();
}
return omClientResponse;
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
index fa4bb48941..27e25be6fa 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantCreateRequest.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.ozone.OmUtils;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.OMAction;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OMMultiTenantManager;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -208,6 +209,10 @@ public class OMTenantCreateRequest extends OMVolumeRequest {
OzoneManager ozoneManager, long transactionLogIndex,
OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper) {
+ final OMMetrics omMetrics = ozoneManager.getMetrics();
+ omMetrics.incNumTenantCreates();
+ omMetrics.incNumVolumeCreates();
+
OMClientResponse omClientResponse = null;
final OMResponse.Builder omResponse =
OmResponseUtil.getOMResponseBuilder(getOmRequest());
@@ -349,10 +354,11 @@ public class OMTenantCreateRequest extends OMVolumeRequest {
if (exception == null) {
LOG.info("Created tenant '{}' and volume '{}'", tenantId, volumeName);
- // TODO: HDDS-6375: omMetrics.incNumTenants()
+ omMetrics.incNumTenants();
+ omMetrics.incNumVolumes();
} else {
LOG.error("Failed to create tenant '{}'", tenantId, exception);
- // TODO: HDDS-6375: omMetrics.incNumTenantCreateFails()
+ omMetrics.incNumTenantCreateFails();
}
return omClientResponse;
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantDeleteRequest.java
index 3987224179..9e6b146cb0 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantDeleteRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantDeleteRequest.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.OMAction;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.OmDBTenantState;
@@ -82,6 +83,9 @@ public class OMTenantDeleteRequest extends OMVolumeRequest {
OzoneManager ozoneManager, long transactionLogIndex,
OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper) {
+ final OMMetrics omMetrics = ozoneManager.getMetrics();
+ omMetrics.incNumTenantDeletes();
+
OMClientResponse omClientResponse = null;
final OMResponse.Builder omResponse =
OmResponseUtil.getOMResponseBuilder(getOmRequest());
@@ -202,10 +206,10 @@ public class OMTenantDeleteRequest extends OMVolumeRequest {
if (exception == null) {
LOG.info("Deleted tenant '{}' and volume '{}'", tenantId, volumeName);
- // TODO: HDDS-6375: omMetrics.decNumTenants()
+ omMetrics.decNumTenants();
} else {
LOG.error("Failed to delete tenant '{}'", tenantId, exception);
- // TODO: HDDS-6375: omMetrics.incNumTenantDeleteFails()
+ omMetrics.incNumTenantDeleteFails();
}
return omClientResponse;
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeAdminRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeAdminRequest.java
index d03b948f33..eb74972b74 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeAdminRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeAdminRequest.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.OMAction;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OMMultiTenantManager;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -143,6 +144,9 @@ public class OMTenantRevokeAdminRequest extends OMClientRequest {
OzoneManager ozoneManager, long transactionLogIndex,
OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper) {
+ final OMMetrics omMetrics = ozoneManager.getMetrics();
+ omMetrics.incNumTenantRevokeAdmins();
+
OMClientResponse omClientResponse = null;
final OMResponse.Builder omResponse =
OmResponseUtil.getOMResponseBuilder(getOmRequest());
@@ -222,11 +226,10 @@ public class OMTenantRevokeAdminRequest extends OMClientRequest {
if (exception == null) {
LOG.info("Revoked admin of accessId '{}' from tenant '{}'",
accessId, tenantId);
- // TODO: HDDS-6375: omMetrics.incNumTenantRevokeAdmin()
} else {
LOG.error("Failed to revoke admin of accessId '{}' from tenant '{}': {}",
accessId, tenantId, exception.getMessage());
- // TODO: HDDS-6375: omMetrics.incNumTenantRevokeAdminFails()
+ omMetrics.incNumTenantRevokeAdminFails();
}
return omClientResponse;
}
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeUserAccessIdRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeUserAccessIdRequest.java
index 24ee6d5022..f83d301a09 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeUserAccessIdRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/tenant/OMTenantRevokeUserAccessIdRequest.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.OMAction;
import org.apache.hadoop.ozone.om.OMMetadataManager;
+import org.apache.hadoop.ozone.om.OMMetrics;
import org.apache.hadoop.ozone.om.OMMultiTenantManager;
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -150,6 +151,9 @@ public class OMTenantRevokeUserAccessIdRequest extends OMClientRequest {
OzoneManager ozoneManager, long transactionLogIndex,
OzoneManagerDoubleBufferHelper ozoneManagerDoubleBufferHelper) {
+ final OMMetrics omMetrics = ozoneManager.getMetrics();
+ omMetrics.incNumTenantRevokeUsers();
+
OMClientResponse omClientResponse = null;
final OzoneManagerProtocolProtos.OMResponse.Builder omResponse =
OmResponseUtil.getOMResponseBuilder(getOmRequest());
@@ -244,11 +248,10 @@ public class OMTenantRevokeUserAccessIdRequest extends OMClientRequest {
if (exception == null) {
LOG.info("Revoked user '{}' accessId '{}' to tenant '{}'",
userPrincipal, accessId, tenantId);
- // TODO: HDDS-6375: omMetrics.incNumTenantRevokeUser()
} else {
LOG.error("Failed to revoke user '{}' accessId '{}' to tenant '{}': {}",
userPrincipal, accessId, tenantId, exception.getMessage());
- // TODO: HDDS-6375: omMetrics.incNumTenantRevokeUserFails()
+ omMetrics.incNumTenantRevokeUserFails();
}
return omClientResponse;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org