Private/InfluxDB/Write-InfluxLog.ps1
function Write-InfluxLog() { Param( [Parameter(Mandatory=$true)] [ValidateSet("DEBUG", "INFO", "WARN", "ERROR", "CRIT")] [string]$Level, [Parameter(Mandatory=$true)] [string]$Message ) $url = "$($InfluxLogConfig.URL)/api/v2/write?org=$($InfluxLogConfig.Org)&bucket=$($InfluxLogConfig.Bucket)&precision=ms" $headers = @{ "Authorization" = "Token $($InfluxLogConfig.Token)"; "Content-Type" = "text/plain; charset=utf-8"; "Accept" = "application/json" } $timestamp = Get-InfluxTimestamp $hostname = Get-Hostname $body = "$($InfluxLogConfig.Source),level=$($Level.ToLower()),pid=$PID,$host=$hostname message=`"$($Message -replace('"', '\"'))`" $timestamp" $scriptblock = { param( [string]$url, [hashtable]$headers, [string]$body ) Try { Invoke-RestMethod -Method POST -Uri $url -Headers $headers -Body $body | Out-Null } Catch { Write-Error "Failed to write to InfluxDB: $($_.Exception.Message)" Write-Information "URL: $url" Write-Information "Body: $($body | ConvertTo-Json)" } } $jobid = [guid]::NewGuid().ToString() Start-Job -ScriptBlock $scriptblock -Name $jobid -ArgumentList @( $url, $headers, $body) | Out-Null } |