Uh oh!
There was an error while loading. Please reload this page.
HDDS-7517. Register OM-S3G gRPC performance metrics - #4044
Conversation
kerneltime
commented
Dec 5, 2022
@GeorgeJahad@duongkame Please take a look at this PR |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
xBis7
commented
Dec 20, 2022
@duongkame Could you take another look at this? |
kerneltime
commented
Jan 9, 2023
@duongkame can you take a look again? |
duongkame
left a comment
There was a problem hiding this comment.
LGTM, just put a few minor comments.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
xBis7
commented
Jan 11, 2023
@duongkame I made the changes you suggested and some more improvements to make everything simpler. Could you take another look? @neils-dev Could you take a look as well and see if we can close this if there are no more comments? |
neils-dev
commented
Feb 17, 2023
@kerneltime can you take a look at this PR as well. Thanks. |
Uh oh!
There was an error while loading. Please reload this page.
| grpcMetrics.addGrpcQueueTime(queueTime); | ||
| // set metrics processing time | ||
| grpcMetrics.addGrpcProcessingTime(processingTime); |
There was a problem hiding this comment.
Can you attach a label for which request was received?
There was a problem hiding this comment.
@kerneltime I added the tag. That's how it looks, "tag.LatestRequestType" : "CommitKey".
{
"name" : "Hadoop:service=OzoneManager,name=GrpcMetrics",
"modelerType" : "GrpcMetrics",
"tag.LatestRequestType" : "CommitKey",
"tag.Hostname" : "27fbfa05d584",
"SentBytes" : 1093,
"ReceivedBytes" : 2173,
"UnknownMessagesSent" : 0,
"UnknownMessagesReceived" : 0,
"GrpcQueueTimeNumOps" : 8,
"GrpcQueueTimeAvgTime" : 969339.5,
"GrpcProcessingTimeNumOps" : 8,
"GrpcProcessingTimeAvgTime" : 2.98469375E7,
"NumOpenClientConnections" : 1
},
Let me know what you think.
tanvipenumudy
left a comment
There was a problem hiding this comment.
The changes look good to me @xBis7, thanks.
xBis7
commented
Apr 14, 2023
@tanvipenumudy Thanks for reviewing this PR. |
xBis7
commented
Apr 21, 2023
@kerneltime Can you take another look on this PR and help get it merged? |
adoroszlai
commented
May 19, 2023
@kerneltime@neils-dev can you please check if all your comments are addressed, so we can merge this? |
xBis7
commented
May 23, 2023
@adoroszlai All comments have been addressed. |
adoroszlai
commented
May 23, 2023
Thanks @xBis7 for continued efforts on this. Thanks @duongkame, @kerneltime, @neils-dev, @tanvipenumudy for the reviews. |
xBis7
commented
May 23, 2023
Thanks @adoroszlai for merging it. |
What changes were proposed in this pull request?
In this patch we are exposing performance metrics in the
/jmxand/promendpoints, for using gRPC between OM and S3G clients. The metrics are similar to the ones gathered by hadoop RPC. Hadoop RPC uses a proxy server that monitors the socket and gathers the metrics based on it's traffic. We can achieve similar results using gRPC interceptors to get all the messages sent and received by the server and monitor the number of active client connections using gRPC transport filter.What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7517
How was this patch tested?
We can't have unit tests without adding a pom dependency to OzoneManager or S3Gateway. Furthermore, we can't have an integration test with Grpc enabled because Mini Ozone Cluster tries to configure Grpc server ports on multiple OMs with the same port causing binding errors.
In order to test this patch, a new acceptance test was added. This acceptance test gets executed only if grpc is enabled.
This patch can also be tested manually in a docker environment after setting the configuration for grpc. We can also enable the new percentiles flag
ozone.grpc.metrics.percentiles.intervals. Add indocker-configunder/hadoop-ozone/dist/target/ozone-1.3.0-SNAPSHOT/compose/ozoneAnd then check
/jmxand/promendpoints for the om. For example in/jmxwe have something like