-
Notifications
You must be signed in to change notification settings - Fork 19
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
TelemetryAPIJourney - Retrieving the telemetry payload (cached vs. fresh) #211
Conversation
@afharo the code looks good, I started a job to see it in Jenkins/kibana-stats cluster: https://kibana-ci.elastic.co/view/Kibana/job/elastic+kibana+load-testing/883/ Do you want these simulations to be executed on daily basis and have results in Kibana-stats cluster, like we do for other ones? Of course, you can always run it manually whenever there is a need |
@afharo I got slack alert for your simulation with results showing 692 request failures:
It is possible to get gatling reports from Jenkins, but it looks like without cache 400 users is too much. I also have a general question about your use case: is this end-point triggered by individual Kibana user or just a single call Kibana is doing to stats cluster once in a while? Is there any reason behind 400 users threshold? |
@dmlemeshko thanks for the ping! It's actually good news that it fails with that amount of users. We had the suspicion that this endpoint could cause issues if there were too many users requesting it at once. This load test was built to prove that elastic/kibana#121656 is needed. |
@afharo thank you for explanation. Now my understanding is that there is no need to run these simulations on daily basis, is it correct? We can merge it as is and you can run it anytime on CI. Actually soon there will be a possibility to comment a Kibana PR and it will trigger load simulations based on |
Thank you! Before merging I'd like someone from @elastic/kibana-core to share their thoughts as well 😇 |
I think that we could apply an additional improvement in the telemetry report generation logic to aggregate multiple concurrent requests into the same promise. Then we can run these journeys on the daily performance checks. I'm AFK right now. But I'll create an issue on Monday. |
src/test/scala/org/kibanaLoadTest/simulation/branch/TelemetryAPICachedJourney.scala
Outdated
Show resolved
Hide resolved
src/test/scala/org/kibanaLoadTest/simulation/branch/TelemetryAPICachedJourney.scala
Outdated
Show resolved
Hide resolved
Issue elastic/kibana#122572 created! |
I've updated this PR to include 1 more scenario to check for failed collectors and I did merge the journeys into one with three scenarios. @dmlemeshko what are the next steps here? I think we need:
|
@Bamieh I ran it on CI and I think thresholds are reasonable. Code looks good as well. Though I would not add it to our regular (4x times/ day) run. We are currently working on removing the noise for bare metal worker and limited number of scenarios. You can run it anytime manually and compare results in Kibana stats. Let me know if it makes sense. |
Summary
This PR adds a Telemetry API Journey with 3 scenarios:
Scenario 1: First hit - non-cached encrypted usage
The first scenario is where the users hit the telemetry endpoint for the first time in the past 4 hours or when a new node is added. This grabs the non-cached encrypted usage data:
Scenario 2: Second+ hit - cached encrypted usage
The second scenario is when users hit the endpoint for the second or more times during the past 4 hours. This grabs the cached encrypted usage data:
Scenario 3: Example flyout and stats API - non-cached non-encrypted usage, check collectors status
The third scenario tests grabbing a fresh copy of non-encrypted usage. This happens when Kibana explicitly asks for this data (the stats API, and example flyout). This grabs non-cached unencrypted usage data.
This scenario also fails when we have
failed
,timeed-out
, andnon-ready
collector.Notes
All scenarios run against a freshly installed Kibana instance. This means that the size of the indices is as small as they can get.