Private/Send-Logs.ps1
|
function Send-Logs { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$vSphereEnvironment, [Parameter(Mandatory = $true)] [string]$Version, [Parameter(Mandatory = $true)] [string]$LogsApiHost, [Parameter(Mandatory = $true)] [string]$LoginHost, [Parameter(Mandatory = $true)] [string]$NexthinkTarget ) if ($script:IN_MEMORY_LOGS.Count -eq 0) { return } $logsUrl = "https://$LogsApiHost/vdi/vdi-log-ingestion-api/api/v1/logs/entries" $traceId = [Guid]::NewGuid().ToString() try { $jwt = Get-Jwt -LoginHost $LoginHost -Target $NexthinkTarget $logsPayload = @{ source = "vsphere-hypervisor-on-prem-connector" customerEnvironment = $vSphereEnvironment version = $Version logs = $script:IN_MEMORY_LOGS } $logsJsonPayload = $logsPayload | ConvertTo-Json -Depth 10 -Compress $headers = @{ 'Content-Type' = 'application/json' 'Authorization' = "Bearer $jwt" 'x-nexthink-vdi-logs-trace-id' = $traceId } $response = Invoke-WebRequestWithLogging -Uri $logsUrl -Method 'POST' -Headers $headers -Body $logsJsonPayload -UseBasicParsing Write-CustomLog -Message "[$traceId] Successfully sent $($script:IN_MEMORY_LOGS.Count) log entries to Logs API. Response code: $($response.StatusCode)" -Severity 'INFO' -NoCache } catch { Write-CustomLog -Message "[$traceId] Error sending logs to Logs API. Details: $($_.Exception.Message)" -Severity 'ERROR' -NoCache } } |