Run promtool windows_exporter on non-default port
Prevents conflicts when promtool & test jobs are run concurrently in CI. Signed-off-by: Ben Reedy <breed808@breed808.com>
This commit is contained in:
parent
5a9711dc90
commit
6941ee7ab2
|
@ -24,19 +24,19 @@ $skip_re = "^(go_|windows_exporter_build_info|windows_exporter_collector_duratio
|
||||||
# Use default collectors, port and address: http://localhost:9182/metrics
|
# Use default collectors, port and address: http://localhost:9182/metrics
|
||||||
$exporter_proc = Start-Process `
|
$exporter_proc = Start-Process `
|
||||||
-PassThru `
|
-PassThru `
|
||||||
-FilePath .\windows_exporter.exe `
|
-FilePath ..\windows_exporter.exe `
|
||||||
-ArgumentList "--log.level=debug --collector.textfile.directory=$($textfile_dir)" `
|
-ArgumentList "--log.level=debug --collector.textfile.directory=$($textfile_dir)" `
|
||||||
-WindowStyle Hidden `
|
-WindowStyle Hidden `
|
||||||
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
|
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
|
||||||
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
|
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
|
||||||
|
|
||||||
# Give exporter some time to start
|
# Give exporter some time to start
|
||||||
Start-Sleep 3
|
Start-Sleep 15
|
||||||
|
|
||||||
$response = Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9182/metrics
|
$response = Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9182/metrics
|
||||||
# Response output must be split and saved as UTF-8.
|
# Response output must be split and saved as UTF-8.
|
||||||
$response.content -split "[`r`n]"| Select-String -NotMatch $skip_re | Set-Content -Encoding utf8 "$($temp_dir)/e2e-output.txt"
|
$response.content -split "[`r`n]"| Select-String -NotMatch $skip_re | Set-Content -Encoding utf8 "$($temp_dir)/e2e-output.txt"
|
||||||
Stop-Process $exporter_proc
|
Stop-Process -Id $exporter_proc.Id
|
||||||
$output_diff = Compare-Object (Get-Content 'e2e-output.txt') (Get-Content "$($temp_dir)/e2e-output.txt")
|
$output_diff = Compare-Object (Get-Content 'e2e-output.txt') (Get-Content "$($temp_dir)/e2e-output.txt")
|
||||||
|
|
||||||
# Fail if differences in output are detected
|
# Fail if differences in output are detected
|
||||||
|
|
|
@ -88,23 +88,24 @@ Push-Location $working_dir
|
||||||
$temp_dir = Join-Path $env:TEMP $(New-Guid) | ForEach-Object { mkdir $_ }
|
$temp_dir = Join-Path $env:TEMP $(New-Guid) | ForEach-Object { mkdir $_ }
|
||||||
|
|
||||||
# Start process in background, awaiting HTTP requests.
|
# Start process in background, awaiting HTTP requests.
|
||||||
# Use default collectors, port and address: http://localhost:9182/metrics
|
# Listen on 9183/TCP, preventing conflicts with 9182/TCP used by end-to-end-test.ps1
|
||||||
|
# Not an issue when run individually, but will cause failures when run concurrently in CI.
|
||||||
$exporter_proc = Start-Process `
|
$exporter_proc = Start-Process `
|
||||||
-PassThru `
|
-PassThru `
|
||||||
-FilePath .\windows_exporter.exe `
|
-FilePath ..\windows_exporter.exe `
|
||||||
-ArgumentList "--log.level=debug" `
|
-ArgumentList '--telemetry.addr="127.0.0.1:9183" --log.level=debug' `
|
||||||
-WindowStyle Hidden `
|
-WindowStyle Hidden `
|
||||||
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
|
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
|
||||||
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
|
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
|
||||||
|
|
||||||
# Give exporter some time to start
|
# Give exporter some time to start
|
||||||
Start-Sleep 3
|
Start-Sleep 15
|
||||||
|
|
||||||
# Omit metrics from client_golang library; we're not responsible for these
|
# Omit metrics from client_golang library; we're not responsible for these
|
||||||
$skip_re = "^[#]?\s*(HELP|TYPE)?\s*go_"
|
$skip_re = "^[#]?\s*(HELP|TYPE)?\s*go_"
|
||||||
|
|
||||||
# Need to remove carriage returns, as promtool expects LF line endings
|
# Need to remove carriage returns, as promtool expects LF line endings
|
||||||
$output = ((Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9182/metrics).Content) -Split "`r?`n" | Select-String -NotMatch $skip_re | Join-String -Separator "`n"
|
$output = ((Invoke-WebRequest -UseBasicParsing -URI http://127.0.0.1:9183/metrics).Content) -Split "`r?`n" | Select-String -NotMatch $skip_re | Join-String -Separator "`n"
|
||||||
# Join the split lines back to a single String (with LF line endings!)
|
# Join the split lines back to a single String (with LF line endings!)
|
||||||
$output = $output -Join "`n"
|
$output = $output -Join "`n"
|
||||||
Stop-Process -Id $exporter_proc.Id
|
Stop-Process -Id $exporter_proc.Id
|
||||||
|
|
Loading…
Reference in New Issue