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

[Fleet] Create Synthetics migration for 8.8.0 #154952

Conversation

dominiqueclarke
Copy link
Contributor

@dominiqueclarke dominiqueclarke commented Apr 13, 2023

Summary

Resolves #155215
Resolves #142653

Handles two primary migrations for Synthetics integration policies.

  1. Rounds deprecated schedules to supported schedules
  2. Transforms old deprecated throttling schema 5u/3u/20l to support JSON schema { download: 5, upload: 3, latency: 20 }

Schedule migration

Before 16m schedule
Screen Shot 2023-04-19 at 6 17 35 PM
After
Screen Shot 2023-04-19 at 6 44 08 PM

Before 4m schedule
Screen Shot 2023-04-19 at 6 17 29 PM
After
Screen Shot 2023-04-19 at 6 44 30 PM

Before 8m schedule
Screen Shot 2023-04-19 at 6 17 23 PM
After
Screen Shot 2023-04-19 at 6 44 22 PM

Before 2m schedule
Screen Shot 2023-04-19 at 6 17 16 PM
After
Screen Shot 2023-04-19 at 6 43 55 PM

Throttling migration

Before throttling: false
Screen Shot 2023-04-19 at 6 17 00 PM
After
Screen Shot 2023-04-19 at 6 49 50 PM

Before custom throttling
Screen Shot 2023-04-19 at 6 16 54 PM
After
Screen Shot 2023-04-19 at 6 49 44 PM

Before default throttling
Screen Shot 2023-04-19 at 6 16 48 PM
After
Screen Shot 2023-04-19 at 6 49 35 PM

Testing

  1. Check out the 8.7.0 branch
  2. Create a Synthetics private location at app/synthetics/settings/private-locations.
  3. Create a monitor, configured at that private location, with invalid schedules, ideally 1 or each type (http, icmp, browser, tcp) with an invalid schedule (for example, 2, 8, 11, 16, 333, etc) at app/uptime/add-monitor. Note: you must use Uptime to create monitors with arbitrary schedules. The Synthetics app will not let you.
  4. Create a browser monitor, configured with your private location, with throttling turned off.
  5. Create a browser monitor, configured for your private location, with a custom throttling profile.
  6. Check out this PR and wait for saved object migration to run
  7. Navigate to the agent policy for your monitor. Confirm the schedules were updated to supported schedules. Confirm the throttling configs now appear in yaml. Confirm that throttling: false remains for the throttling config that was turned off.

@dominiqueclarke dominiqueclarke requested a review from a team as a code owner April 13, 2023 20:01
@botelastic botelastic bot added the Team:Fleet Team label for Observability Data Collection Fleet team label Apr 13, 2023
@elasticmachine
Copy link
Contributor

Pinging @elastic/fleet (Team:Fleet)

@apmmachine
Copy link
Contributor

🤖 GitHub comments

Expand to view the GitHub comments

Just comment with:

  • /oblt-deploy : Deploy a Kibana instance using the Observability test environments.
  • run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)

@dominiqueclarke dominiqueclarke marked this pull request as draft April 13, 2023 20:01
@dominiqueclarke
Copy link
Contributor Author

Sorry for pinging folks. Meant to put this in draft.

@dominiqueclarke dominiqueclarke added Team:Uptime - DEPRECATED Synthetics & RUM sub-team of Application Observability v8.8.0 release_note:deprecation enhancement New value added to drive a business result labels Apr 20, 2023
@dominiqueclarke dominiqueclarke changed the title fleet - create generic migration for 8.8.0 [Fleet] Create Synthetics migration for 8.8.0 Apr 20, 2023
@dominiqueclarke dominiqueclarke marked this pull request as ready for review April 20, 2023 01:43
@dominiqueclarke dominiqueclarke requested a review from a team as a code owner April 20, 2023 01:43
@elasticmachine
Copy link
Contributor

Pinging @elastic/uptime (Team:uptime)

throttling: string
): { download: number; upload: number; latency: number } => {
try {
const [download = 5, upload = 3, latency = 20] = throttling.match(/\d+\.?\d*/g) || [];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TIL . Looks like fancy string split :)

Comment on lines 23 to 25
if (!throttling || throttling?.id === 'no-throttling' || !throttling?.value) {
return 'false';
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think we need to keep this when throttling is disabled.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

YOu are absolutely right. Thanks for the catch. I think I got rid of this in a bad merge conflict resolution. I'll write a unit test to make sure this doesn't happen again.

Copy link
Contributor

@shahzad31 shahzad31 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM !!

Tested schedule and throttling migration !!

@kibana-ci
Copy link
Collaborator

💛 Build succeeded, but was flaky

Failed CI Steps

Metrics [docs]

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
synthetics 1.2MB 1.2MB +38.0B
Unknown metric groups

ESLint disabled line counts

id before after diff
securitySolution 394 397 +3

Total ESLint disabled count

id before after diff
securitySolution 474 477 +3

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

Copy link
Member

@kpollich kpollich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fleet changes 🚀

@dominiqueclarke dominiqueclarke merged commit b494716 into elastic:main Apr 21, 2023
@kibanamachine kibanamachine added the backport:skip This commit does not require backporting label Apr 21, 2023
@dominiqueclarke dominiqueclarke deleted the feat/synthetics-package-policy-migration branch April 21, 2023 13:55
nikitaindik pushed a commit to nikitaindik/kibana that referenced this pull request Apr 25, 2023
## Summary

Resolves elastic#155215
Resolves elastic#142653

Handles two primary migrations for Synthetics integration policies.

1. Rounds deprecated schedules to supported schedules
2. Transforms old deprecated throttling schema `5u/3u/20l` to support
JSON schema `{ download: 5, upload: 3, latency: 20 }`

Schedule migration
---

Before 16m schedule
<img width="200" alt="Screen Shot 2023-04-19 at 6 17 35 PM"
src="https://user-images.githubusercontent.com/11356435/233211993-086ce51e-a056-407f-900b-15638238a243.png">
After
<img width="214" alt="Screen Shot 2023-04-19 at 6 44 08 PM"
src="https://user-images.githubusercontent.com/11356435/233215688-e049e2b7-6958-4376-9362-a192aa8e94db.png">

Before 4m schedule
<img width="190" alt="Screen Shot 2023-04-19 at 6 17 29 PM"
src="https://user-images.githubusercontent.com/11356435/233211995-6b7b2927-6851-4947-ab8c-7fb041da03e1.png">
After
<img width="208" alt="Screen Shot 2023-04-19 at 6 44 30 PM"
src="https://user-images.githubusercontent.com/11356435/233215685-89f093e6-3308-4103-9b98-5acb7a9b5a0a.png">

Before 8m schedule
<img width="202" alt="Screen Shot 2023-04-19 at 6 17 23 PM"
src="https://user-images.githubusercontent.com/11356435/233211997-9a60c54c-4867-4ccd-a8eb-5b62d59060bf.png">
After
<img width="201" alt="Screen Shot 2023-04-19 at 6 44 22 PM"
src="https://user-images.githubusercontent.com/11356435/233215687-f3a900cf-b3ec-44f5-b84b-d292dbad623d.png">

Before 2m schedule
<img width="193" alt="Screen Shot 2023-04-19 at 6 17 16 PM"
src="https://user-images.githubusercontent.com/11356435/233211999-3d42ad71-b72b-4876-911e-5d79564f2351.png">
After 
<img width="194" alt="Screen Shot 2023-04-19 at 6 43 55 PM"
src="https://user-images.githubusercontent.com/11356435/233215690-fd3f13dc-5e32-4904-b804-cbcfcabf0760.png">

Throttling migration
---
Before throttling: false
<img width="163" alt="Screen Shot 2023-04-19 at 6 17 00 PM"
src="https://user-images.githubusercontent.com/11356435/233212002-3a891b25-fc2e-4cce-a730-abf8695d5423.png">
After
<img width="185" alt="Screen Shot 2023-04-19 at 6 49 50 PM"
src="https://user-images.githubusercontent.com/11356435/233216370-eed97645-26e8-44f2-8f72-8d1e19f39c35.png">

Before custom throttling
<img width="274" alt="Screen Shot 2023-04-19 at 6 16 54 PM"
src="https://user-images.githubusercontent.com/11356435/233212004-a9fe82fc-d23a-4d54-a5ad-20971c3df211.png">
After
<img width="169" alt="Screen Shot 2023-04-19 at 6 49 44 PM"
src="https://user-images.githubusercontent.com/11356435/233216389-f2803ca9-3429-4f85-b1ee-0f5a8e02db92.png">

Before default throttling
<img width="212" alt="Screen Shot 2023-04-19 at 6 16 48 PM"
src="https://user-images.githubusercontent.com/11356435/233212007-d9fbcae7-6f6e-4cd0-b909-629cfc72b7dc.png">
After
<img width="181" alt="Screen Shot 2023-04-19 at 6 49 35 PM"
src="https://user-images.githubusercontent.com/11356435/233216412-70336d0e-1e45-4809-bd92-c4524a144b99.png">


### Testing

1. Check out the 8.7.0 branch
2. Create a Synthetics private location at
`app/synthetics/settings/private-locations`.
3. Create a monitor, configured at that private location, with invalid
schedules, ideally 1 or each type (http, icmp, browser, tcp) with an
invalid schedule (for example, 2, 8, 11, 16, 333, etc) at
`app/uptime/add-monitor`. Note: you must use Uptime to create monitors
with arbitrary schedules. The Synthetics app will not let you.
4. Create a browser monitor, configured with your private location, with
throttling turned off.
5. Create a browser monitor, configured for your private location, with
a custom throttling profile.
6. Check out this PR and wait for saved object migration to run
7. Navigate to the agent policy for your monitor. Confirm the schedules
were updated to supported schedules. Confirm the throttling configs now
appear in yaml. Confirm that `throttling: false` remains for the
throttling config that was turned off.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport:skip This commit does not require backporting enhancement New value added to drive a business result release_note:deprecation Team:Fleet Team label for Observability Data Collection Fleet team Team:Uptime - DEPRECATED Synthetics & RUM sub-team of Application Observability v8.8.0
Projects
None yet
7 participants