私の基本的な問題は、IP アドレスのリストからネットワーク IO の合計を見つけたいということです。多くのサーバーには異なる NIC があり、一部のサーバーにはチーミングされた NIC があります。
ネットワーク インターフェイス インスタンスの正確な名前が必要なように思われるので、インスタンス名の配列を作成しました。
Dim category As New PerformanceCounterCategory("Network Interface")
Dim instancenames As String() = category.GetInstanceNames()
次に、名前を順に調べて、performancecounter オブジェクトのリストに追加します。
For Each instancename In instancenames
network.Add(New PerformanceCounter())
With network(i)
.CategoryName = "Network Interface"
.CounterName = "Bytes Total/sec"
.InstanceName = instancename
.MachineName = ip_address
End With
Try
network_usage = network_usage + network(i).NextValue()
Catch ex As Exception
End Try
i = i + 1
Next
問題は、次の値を取得しようとすると、コードの最初の部分から生成された名前で例外が発生することです。「インスタンス 'Local Area Connection* 12' は指定されたカテゴリに存在しません。
取得された名前は、特定のサーバーで perfmon を見るときに使用された名前とは異なるようですが、これが問題になるかどうかはわかりません