-
Notifications
You must be signed in to change notification settings - Fork 158
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
re-enable otel subcommand on Windows #6068
Conversation
This pull request does not have a backport label. Could you fix it @leehinman? 🙏
|
|
Pinging @elastic/elastic-agent-control-plane (Team:Elastic-Agent-Control-Plane) |
5b13070
to
e6091b9
Compare
This pull request is now in conflicts. Could you fix it? 🙏
|
a922b9f
to
42ed9c8
Compare
This reverts commit 43bbd46.
42ed9c8
to
d006214
Compare
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Codewise looks good, tests are passing so I assume the changes did fix the issue. I guess worst case scenario is that this starts flakying on CI.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice optimisation, thanks for that @leehinman
@@ -154,6 +142,18 @@ func run(override cfgOverrider, testingMode bool, fleetInitTimeout time.Duration | |||
defer cancel() | |||
go service.ProcessWindowsControlEvents(stopBeat) | |||
|
|||
if err := handleUpgrade(); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
* move processing windows events earlier in the boot process * add Windows to otel integration tests (cherry picked from commit 8e83ce0)
* move processing windows events earlier in the boot process * add Windows to otel integration tests (cherry picked from commit 8e83ce0) Co-authored-by: Lee E Hinman <57081003+leehinman@users.noreply.github.com> Co-authored-by: Pierre HILBERT <pierre.hilbert@elastic.co>
@leehinman do you recall a reason why it was not backported to 8.17? |
* move processing windows events earlier in the boot process * add Windows to otel integration tests (cherry picked from commit 8e83ce0)
@jlind23 can we get a code snippet for the Windows onboarding flow? |
this works on powershell # Download and extract
$distroPath = "elastic-distro-8.17.2-windows-x86_64";$zipFile = "$distroPath.zip"
# Disable progress bar, it slows down the download
$ProgressPreference = 'SilentlyContinue';Invoke-WebRequest -Uri "https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.17.2-windows-x86_64.zip" -OutFile $zipFile;
New-Item -ItemType Directory -Force -Path $distroPath | Out-Null
Expand-Archive -Path $zipFile -DestinationPath $distroPath
Move-Item -Path "$distroPath\elastic-agent-8.17.2-windows-x86_64\*" -Destination $distroPath
Remove-Item -Path "$distroPath\elastic-agent-8.17.2-windows-x86_64" -Recurse
Remove-Item -Path $zipFile
Set-Location $distroPath
# Configure otel
Remove-Item -Path .\otel.yml -ErrorAction SilentlyContinue
Copy-Item .\otel_samples\platformlogs_hostmetrics.yml .\otel.yml
New-Item -ItemType Directory -Force -Path .\data\otelcol | Out-Null
# Replace environment variables in otel.yml
$content = Get-Content .\otel.yml
$content = $content -replace '\${env:STORAGE_DIR}', "$PWD\data\otelcol"
$content = $content -replace '\${env:ELASTIC_ENDPOINT}', "https://sample.eu-west-1.aws.qa.cld.elstc.co:443"
$content = $content -replace '\${env:ELASTIC_API_KEY}', "sampleApiKey=="
$content | Set-Content .\otel.yml notes:
cc @mlunadia |
Amazing! @gbamparop here's the script for running EDOT on windows hosts so we can update the hosts OTel flow. @michalpristas do we have one for Elastic Agent, so we can also add it as an option? |
what do you have in mind for agent? |
This is the current flow for Agent, is it just a matter of adding the icon or do we need a windows specific auto-detect script? @flash1293 maybe you can help? ![]() ![]() |
@mlunadia The auto-detect script is doing a bunch of stuff that relies on bash, so it's not a trivial change, that's why we didn't add it yet. Maybe it's possible to run it via the WSL, but I don't know enough about Windows to give a good opinion here. I'm not sure whether it's worth translating it into powershell or something like this, this is a product question. We could think about a simplified flow based on powershell for windows, but the big question is whether we want it or not. cc @gbamparop @akhileshpok how can we make this decision? |
Adding @michalpristas s script to the otel flow shouldn't be a problem |
i was looking into autodetect and porting this to powershell is not that trivial. i think it should be possible but it means it is a normal small task for .net/powershell experienced person that needs to be planned. not something i can generate in one morning |
@mlunadia - We can and should enhance the OTel Host onboarding workflow in order to incorporate Windows support. In terms of the the Elastic Agent based onboarding workflow for Hosts, we will need functionality similar to our current auto-detect script for Linux before we can consider merging it. |
Created https://github.com/elastic/observability-dev/issues/4317 so we can continue the discussion there. |
What does this PR do?
Why is it important?
Previously when Windows was added,
elastic-agent
did not respond to the Windows Service manager quickly enough that it was starting and was deemed "unresponsive". Moving the go routine that responds to the Windows Service Manager earlier in the boot process should make this less likely. Given go's design of DLL loading and init code we can't eliminate this completely.Checklist
./changelog/fragments
using the changelog toolDisruptive User Impact
None.
How to test this PR locally
Related issues
Questions to ask yourself