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

Create a "universal" load generator #1030

Open
minherz opened this issue Apr 21, 2023 · 5 comments
Open

Create a "universal" load generator #1030

minherz opened this issue Apr 21, 2023 · 5 comments
Labels
priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Milestone

Comments

@minherz
Copy link
Collaborator

minherz commented Apr 21, 2023

Description

Demo applications that Cloud Ops Sandbox uses (Online Boutique in version 0.9 and 0.10) provide their own load generators. It is not always useful because these generators can lack certain features that are useful for observability use cases. For example, customization of the load or an ability to program dynamic load.

To have a load generator that can be configured vs. multiple endpoints of the application can prove useful for Cloud Ops Sandbox users.

Technical requirements

Implement a stand-alone load generator using one of the existing solutions. While the language is not limited, it is preferred to keep all code in Golang. The following load generator implementations can be checked as references:

@minherz minherz added type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design. priority: p3 Desirable enhancement or fix. May not be included in next release. labels Apr 21, 2023
@minherz minherz added this to the backlog milestone Apr 21, 2023
@archyufa
Copy link

@minherz During the POC we created the universal log generator for logs using Python, will be happy to share source code in case you need it.

@lvaylet
Copy link

lvaylet commented Sep 26, 2023

Hi @minherz, I can work on this. Just wondering: what is wrong with the load generator included with the Online Boutique? It is able to send GET and POST requests to multiple points with complex scenarios, as configured in https://github.com/GoogleCloudPlatform/microservices-demo/blob/main/src/loadgenerator/locustfile.py:

image

Could you provide a specific example of a feature that is currently missing?

@minherz
Copy link
Collaborator Author

minherz commented Sep 27, 2023

There is nothing wrong with LG in OB. the goal of this issue is to provide an alternative LG as a part of COS.
When I tried to use LG that comes with OB I found out that it does not expose UI interface. According to what I see in the code it runs a preset configuration of the load that cannot be changed. While it is good enough to show o11y data, it is not sufficient for simulating scenarios that are exposed under heavy load.

@lvaylet
Copy link

lvaylet commented Sep 28, 2023

Got it. I agree the LG in OB does not seem to support custom load shapes for example. But then I wonder how to make a "universal" load generator with a large (infinite?) number of scenarios with a reasonable amount of time and energy on our side. Would it make more sense to let users spawn their own Locust container on their local machines, with their custom tasks? And document the whole thing with an example on our side.

@minherz
Copy link
Collaborator Author

minherz commented Jan 29, 2024

Would it make more sense to let users spawn their own Locust container on their local machines, with their custom tasks? And document the whole thing with an example on our side.

This sounds like a great idea! I am unsure if we want to document the Locust load generator but we certainly can provide guidelines and to use Online Boutique as an example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Projects
None yet
Development

No branches or pull requests

4 participants