SolarWinds Orion NPM (ネットワーク パフォーマンス監視) を使用してノードを監視しています。また、SWIS (SolarWinds informationalion Service) から vb.net コンソール アプリケーションにアラート情報を取得するために Orion SDK を使用しています。
私はいくつかのvb.netコードを使用しています:
Function GetOneAlert(ByVal swis As InformationServiceClient) As AlertInfo
Dim query As String, result As XElement
query = "SELECT TOP 1 A.AlertDefID, A.ActiveObject, A.ObjectType FROM Orion.AlertStatus A WHERE A.Acknowledged=0 ORDER BY A.TriggerTimeStamp DESC"
result = swis.QueryXml(query)
問題は、 (SolarWinds Information Service)でとalertinforamtion
という名前の 3 つのテーブルから取得したいのですが、これらの 3 つのテーブルを結合する必要がありますが、以下に示す (SolarWinds クエリ言語) クエリを使用して、そのうちの 2 つ ( 、) を結合できます。Orion.AlertDefinitions
Orion.AlertStatus
Orion.Nodes
swis
Orion.AlertDefinitions
Orion.AlertStatus
swql
query = "SELECT AlertStatus.AlertDefID, AlertDefinitions.AlertDefID, AlertDefinitions.Name, AlertStatus.State, AlertStatus.ObjectName,
AlertStatus.TriggerTimeStamp, AlertDefinitions.Description FROM Orion.AlertStatus INNER JOIN Orion.AlertDefinitions
ON AlertStatus.AlertDefID=AlertDefinitions.AlertDefID WHERE AlertStatus.Acknowledged=0"
アラートの詳細はわかっていますが、アラートがどのノードに属しているかわかりません。この目的のために、「orion.node」テーブルを残りのテーブルと結合する必要があります。しかし、3 番目のテーブル ( Orion.Nodes
) には、結合する他の 2 つのテーブルのいずれにも共通のフィールドがありません。テーブルからDNS
、、、という名前IPAddress
の3 つのフィールド値を取得する必要があります。NodeDescription
Orion.Nodes