我正在使用SolarWinds Orion NPM(网络性能监控)监控我的节点。我正在使用Orion SDK从SWIS(SolarWinds informarion Service)获取警报信息到vb.net控制台应用程序。
我正在使用一些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)
问题是,我想从alertinforamtion
(SolarWinds信息服务)中的三个名为Orion.AlertDefinitions
,Orion.AlertStatus
和Orion.Nodes
的表中获取swis
需要加入这3个表,但我可以使用下面显示的Orion.AlertDefinitions
(SolarWinds查询语言)查询加入其中2个表(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
)在其他两个表中的任何一个表中都没有要加入的公共字段。
我需要从DNS
表中获取名为IPAddress
,NodeDescription
,Orion.Nodes
的三个字段值。
答案 0 :(得分:2)
如果您对与节点相关的警报感兴趣并且想要加入节点详细信息,那么您应该只选择AlertStatus.ObjectType='Node'
的警报,并使用节点AlertStatus.ActiveObject
NodeID
加入相关。所以查询(提到节点属性)看起来像:
SELECT AlertStatus.AlertDefID, AlertDefinitions.AlertDefID, AlertDefinitions.Name, AlertStatus.State, AlertStatus.ObjectName, AlertStatus.TriggerTimeStamp, AlertDefinitions.Description, Nodes.IPAddress, Nodes.Dns, Nodes.NodeDescription
FROM Orion.AlertStatus
INNER JOIN Orion.AlertDefinitions
ON AlertStatus.AlertDefID=AlertDefinitions.AlertDefID
INNER JOIN Orion.Nodes
ON AlertStatus.ActiveObject=Nodes.NodeID
WHERE AlertStatus.Acknowledged=0 AND AlertStatus.ObjectType='Node'
无论如何,有关Orion SDK和SWIS的更具体的问题和答案,您可能需要查看Orion SDK Thwack Forum。
答案 1 :(得分:0)
在SWQL中的表之间也存在自动关联,例如下面的SWQL不使用JOINs
,而是从几个表调用:
SELECT E0.[Node].Caption, E0.AssignmentName, E0.CustomPollerName,
E0.DetailsUrl, E0.DisplayName, E0.NodeID, E0.Status, E0.StatusDescription,
E0.StatusIconHint, E0.StatusLED, E0.UnManaged, E0.UnManageFrom, E0.UnManageUntil, E0.Uri,
E0.[Node].Description, E0.[CustomPoller].[OID] = '1.3.6.1.2.1.1.3',
E0.[CustomPollerStatusScalar].[Status]
FROM Orion.NPM.CustomPollerAssignmentOnNode AS E0
WHERE E0.[Node].[SysObjectID] IS NOT NULL
AND E0.StatusDescription NOT LIKE 'Unmanaged'