Public/ConvertTo-StatsDString.ps1
Function ConvertTo-StatsDString { <# .SYNOPSIS Converts a metric object to a StatsD format string which could be used with Write-StatsD. .DESCRIPTION This is the format a StatsD listener expects for writing metrics. .PARAMETER InputObject The metric object to be converted. .PARAMETER Type The type of StatsD metric. Default: g (gauge: will record whatever exact value is included with each metric provided). See Statsd documentation for explanations of the different metric types accepted. .EXAMPLE Get-HostMetric -Hosts somehost1 -Tags Name,PowerState | ConvertTo-StatsDString Result ------------------- CpuUsageMhz,Name=somehost1,PowerState=PoweredOn:305|g MemoryUsageGB,Name=somehost1,PowerState=PoweredOn:17.0029296875|g #> [cmdletbinding()] [OutputType([String])] Param( [Parameter(ValueFromPipeline = $True, Position = 0)] [PSTypeName('Metric')] $InputObject, [string] $Type = 'g' ) Process { $InputObject | ForEach-Object { $Tags = @() ForEach ($Tag in $_.Tags.GetEnumerator() | Sort-Object Key) { $Tags += "$($Tag.Key)=$($Tag.Value)" } $TagData = ',' + ($Tags -Join ',') ForEach ($Metric in $_.Metrics.GetEnumerator() | Sort-Object Key) { "$($_.Measure).$($Metric.Key)$TagData`:$($Metric.Value)|$Type" } } } } |