Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collecting different metrics from microservices #322

Closed
dimoibiehg opened this issue May 17, 2024 · 9 comments
Closed

Collecting different metrics from microservices #322

dimoibiehg opened this issue May 17, 2024 · 9 comments

Comments

@dimoibiehg
Copy link

dimoibiehg commented May 17, 2024

Is your feature request related to a problem? Please describe.
Suppose that I am working on the microservices benchmark, called DeathStarBench.
It seems reasonable to have different performance values like CPU usage, Memory usage, and Latency for each microservice in metric logs. However, it seems that the only reported metric is the total latency of the whole application in a specified workload.

Describe the solution you'd like
Having in detail more metrics like CPU usage, Memory usage, and Latency of each microservice besides the total value of the latency can be very helpful in researching on microservices.

Describe alternatives you've considered
Otherwise, I am wondering about the advantage of using VisrtualClient over directly using the application in DeathStarBench.

Additional context
By the way, I am not sure whether what I am saying can be doable in the current version of Virtual Client or not.

Tasks

No tasks being tracked yet.
@yangpanMS
Copy link
Contributor

Hi @dimoibiehg, what you are describing could be acomplished by our default monitor profile
https://github.com/microsoft/VirtualClient/blob/main/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-DEFAULT.json
In your virtualclient commendline, that profile is included by default, unless you overwrite it with another monitor profile. The data should be in your /logs/metrics.csv next to the virtualclient executable. Please let me know if that is suffice

https://microsoft.github.io/VirtualClient/docs/monitors/0001-atop/

@dimoibiehg
Copy link
Author

dimoibiehg commented May 19, 2024

Hi @dimoibiehg, what you are describing could be acomplished by our default monitor profile https://github.com/microsoft/VirtualClient/blob/main/src/VirtualClient/VirtualClient.Main/profiles/MONITORS-DEFAULT.json In your virtualclient commendline, that profile is included by default, unless you overwrite it with another monitor profile. The data should be in your /logs/metrics.csv next to the virtualclient executable. Please let me know if that is suffice

https://microsoft.github.io/VirtualClient/docs/monitors/0001-atop/

Hi @yangpanMS, thanks for mentioning the deafult moirtoring profile. However, when using that profile, I do not get any of those metrics in separation of microservices. For example, when running the default profile for DeathStarBench, I got the attached mterics file.
metrics.csv

What I expected was knowing each of those metrics for each microservice in the social network application. For example, CPU usage, Memory usage, and Latency for Text, User, Media Frontend, Compose Post, Post Storage, Redises, Memcacheds, and so on (see the following microservices in the application, sourced by DeathStarBench Github respository).

image

@dimoibiehg dimoibiehg changed the title Collecting different metrics from Microservices Collecting different metrics from microservices May 19, 2024
@yangpanMS
Copy link
Contributor

Thank you for the response. Sorry that we do not collect the usages for each microservices for this benchmark. For workloads like this, we rely on the workload controller output to get the data, and we parse whatever output that comes out of the workload itself, like this: https://github.com/microsoft/VirtualClient/blob/main/src/VirtualClient/VirtualClient.Actions.UnitTests/Examples/DeathStarBench/DeathStarBenchOutputExample.txt. Do you know if there is a way to include the counters you just mentioned? If so, we will have a way to parse them out.

@dimoibiehg
Copy link
Author

Thanks for your following up. One way that came to my mind was adding more logs to measure extra metrics for each microservice, probably using Jaeger.

@yangpanMS
Copy link
Contributor

I'm sorry again that our team doesn't not have expertise into this domain. This is open-source software, please feel free to modify and test it out. Meanwhile I'd just like to let you know we are still debugging why the deathstarbench only works for socialnetwork scenarios and not others.

@dimoibiehg
Copy link
Author

I'm sorry again that our team doesn't not have expertise into this domain. This is open-source software, please feel free to modify and test it out. Meanwhile I'd just like to let you know we are still debugging why the deathstarbench only works for socialnetwork scenarios and not others.

No worries @yangpanMS. Thanks for fixing the issue.

One more thing I have just found. The details of CPU and memory utilization, which are reported according to the default monitoring profile, are not reported by the original workload of DeathStarBench, i.e., the file that you have linked. So, it seems that extra measurements are in the flow of the data collection other than those achieved by parsing the original output of the application. Right?

@yangpanMS
Copy link
Contributor

Did you mean the atop measurements? They should be reported but might be renamed. We are trying to make the name of the perf counters look the same across windows/linux. https://github.com/microsoft/VirtualClient/blob/main/src/VirtualClient/VirtualClient.Monitors/AtopParser.cs

Is there anything in atop that you are looking at?

BTW I noticed there is a timezone difference between us. Let me know if you'd like to schedule a brief call to help you in our mutal wake time.

@yangpanMS
Copy link
Contributor

Hi @dimoibiehg , do you have more questions about this issue? May we close this issue?

@dimoibiehg
Copy link
Author

Thanks @yangpanMS. In sum, this feature is not directly related to VirtualClient. The primary metrics should have been measured in DeathStarBench and exposed to the output.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants