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

[Heartbeat] Limit jobs by type via Env Vars #34307

Merged
merged 15 commits into from Feb 5, 2023

Conversation

andrewvc
Copy link
Contributor

@andrewvc andrewvc commented Jan 18, 2023

Fixes #34290 by allowing users to control job limits via environment vars like SYNTHETICS_LIMIT_{TYPE}, so, to limit the max number of browser jobs one would use: SYNTHETICS_LIMIT_BROWSER=90 ./heartbeat

This is primarily here to allow users to change the default browser limit in the elastic agent, which is impossible to change otherwise, since there's no way to set a good global config via Fleet.

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

How to test this PR locally

mage build && env SYNTHETICS_LIMIT_BROWSER=4 SYNTHETICS_LIMIT_HTTP=200 ./heartbeat -e -E cloud.id=$CLOUD_ID -E cloud.auth=$CLOUD_AUTH

Should yield the following logs:

{"log.level":"info","@timestamp":"2023-01-18T16:33:44.124-0600","log.origin":{"file.name":"scheduler/scheduler.go","file.line":79},"message":"limiting to 4 concurrent jobs for 'browser' type","service.name":"heartbeat","ecs.version":"1.6.0"}
{"log.level":"info","@timestamp":"2023-01-18T16:33:44.124-0600","log.origin":{"file.name":"scheduler/scheduler.go","file.line":79},"message":"limiting to 200 concurrent jobs for 'http' type","service.name":"heartbeat","ecs.version":"1.6.0"}

Fixes elastic#34290 by allowing users to control job limits via environment
vars like `SYNTHETICS_LIMIT_{TYPE}`, so, to limit the max number of
browser jobs one would use: `SYNTHETICS_LIMIT_BROWSER=90 ./heartbeat`

This is primarily here to allow users to change the default browser
limit in the elastic agent, which is impossible to change otherwise,
since there's no way to set a good global config via Fleet.
@andrewvc andrewvc added enhancement Heartbeat Team:obs-ds-hosted-services Label for the Observability Hosted Services team v8.7.0 labels Jan 18, 2023
@andrewvc andrewvc requested a review from a team as a code owner January 18, 2023 22:35
@andrewvc andrewvc self-assigned this Jan 18, 2023
@botelastic botelastic bot added the needs_team Indicates that the issue/PR needs a Team:* label label Jan 18, 2023
@elasticmachine
Copy link
Collaborator

Pinging @elastic/uptime (Team:Uptime)

@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Jan 18, 2023
@mergify
Copy link
Contributor

mergify bot commented Jan 18, 2023

This pull request does not have a backport label.
If this is a bug or security fix, could you label this PR @andrewvc? 🙏.
For such, you'll need to label your PR with:

  • The upcoming major version of the Elastic Stack
  • The upcoming minor version of the Elastic Stack (if you're not pushing a breaking change)

To fixup this pull request, you need to add the backport labels for the needed
branches, such as:

  • backport-v8./d.0 is the label to automatically backport to the 8./d branch. /d is the digit

@elasticmachine
Copy link
Collaborator

elasticmachine commented Jan 18, 2023

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2023-02-05T20:32:29.384+0000

  • Duration: 49 min 47 sec

Test stats 🧪

Test Results
Failed 0
Passed 1921
Skipped 25
Total 1946

💚 Flaky test report

Tests succeeded.

🤖 GitHub comments

Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

  • /package : Generate the packages and run the E2E tests.

  • /beats-tester : Run the installation tests with beats-tester.

  • run elasticsearch-ci/docs : Re-trigger the docs validation. (use unformatted text in the comment!)

Copy link
Collaborator

@emilioalvap emilioalvap left a comment

Choose a reason for hiding this comment

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

LGTM

@paulb-elastic
Copy link
Contributor

Post FF Testing, setting to 3 (browser) and 150 (HTTP), can see these:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Heartbeat Team:obs-ds-hosted-services Label for the Observability Hosted Services team v8.7.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Heartbeat] Control the number of concurrent browser runs a Private Location can run
4 participants