I can certainly do it myself, but it means I have to do the load balancer myself.
I can get the follow code (by disassembling Microsoft.Web.Management.Arr.dll)
private static PropertyBag GetServerStateFromElement(ServerElement serverElement, long totalRequests, long totalWeight, ref float totalPercentage, bool isLastElement)
{
ServerState serverState = new ServerState();
serverState.State = (serverElement.ApplicationRequestRouting.Counters.IsValidElement ? serverElement.ApplicationRequestRouting.Counters.State : State.Unknown);
serverState.Address = serverElement.Address;
serverState.IsHealthy = serverElement.ApplicationRequestRouting.Counters.IsHealthy;
serverState.WeightPercentage = (float)serverElement.ApplicationRequestRouting.Weight / (float)totalWeight;
serverState.RequestsPerSecond = serverElement.ApplicationRequestRouting.Counters.RequestPerSecond;
serverState.CurrentRequests = serverElement.ApplicationRequestRouting.Counters.CurrentRequests;
serverState.TotalRequests = serverElement.ApplicationRequestRouting.Counters.TotalRequests;
serverState.FailedRequests = serverElement.ApplicationRequestRouting.Counters.FailedRequests;
serverState.BytesSent = serverElement.ApplicationRequestRouting.Counters.BytesSent;
serverState.BytesReceived = serverElement.ApplicationRequestRouting.Counters.BytesReceived;
serverState.ResponseTime = serverElement.ApplicationRequestRouting.Counters.ResponseTime;
if (isLastElement)
{
serverState.RequestDistributionPercentage = ((totalRequests != 0L) ? (1f - totalPercentage) : 0f);
}
else
{
float num = (float)serverState.TotalRequests / (float)totalRequests;
serverState.RequestDistributionPercentage = ((totalRequests != 0L) ? num : 0f);
totalPercentage += serverState.RequestDistributionPercentage;
}
if (serverElement.ApplicationRequestRouting.Counters.LastResetTickCount > 0L)
{
serverState.LastUpdatedElapsedTicks = new long?((long)(Environment.TickCount & int.MaxValue) - serverElement.ApplicationRequestRouting.Counters.LastResetTickCount);
}
return serverState.InternalState;
}
But ArrModuleService is an internal class, I couldn't figure out how to utilize it.