文:ジュピターテクノロジー 山端
前回の 【SolarWinds Hybrid Cloud Observability 完全セットアップマニュアル】その9. カスタムアラート設定① はご覧いただけたでしょうか?本記事は、前回からの続きとなりますので、まだ読んでいない方は必ずご覧ください。
本記事では、カスタムSQLクエリとユニバーサルデバイスポーラー機能を使用したアラートの設定方法をご紹介します。
さらに、今回は弊社で実際に開発したCisco機器向けカスタムアラート例をご紹介します。
- HSRPステータスがActiveから変化した場合に検知
- Cisco機器のインターフェイスのErrDisableを検知
- Cisco機器の温度が閾値を超えた場合、または特定のステータスに変化した場合に検知
※本記事に記載の手順および画像はSolarWinds HCO 2024.2.0に準拠します。 お使いのバージョンによっては一部表記が異なる場合がございます。
ユニバーサルデバイスポーラー設定
まず、アラートで使用するユニバーサルデバイスポーラー (UnDP) を設定します。
UnDPとは、特定のOIDを指定してポーリングを実行することができる機能です。この機能を使用することで、HCOのデフォルトの監視を更に拡張することができます。
本記事でご紹介するカスタムアラートでは、下記OIDから情報を取得するUnDPを使用します。
アラート | OID |
HSRPステータスがActiveから変化した場合に検知 | 1.3.6.1.4.1.9.9.106.1.2.1.1.15 (cHsrpGrpStandbyState) |
Cisco機器のインターフェイスのErrDisableを検知 | 1.3.6.1.4.1.9.9.548.1.3.1.1.2 (cErrDisableIfStatusCause) |
Cisco機器の温度が閾値を超えた場合、 または特定のステータスに変化した場合に検知 | 1.3.6.1.4.1.9.9.13.1.3.1.3 (ciscoEnvMonTemperatureStatusValue) 1.3.6.1.4.1.9.9.13.1.3.1.6 (ciscoEnvMonTemperatureState) |
UnDP設定はWebコンソールではなくSolarWinds Platformサーバーから行います。
PlatformサーバーにRDP接続し、スタートメニューから
「SolarWinds Platform」>「Universal Device Poller」をクリック。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-171624.png?resize=316%2C626&ssl=1)
UnDPの設定アプリケーションが起動します。「新規のユニバーサルデバイスポーラー」をクリック。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-171812-1024x514.png?resize=1024%2C514&ssl=1)
ポーリング対象のOIDを入力します。「名前」はOID入力時に自動で入力されます。「説明」「詳細オプション」も同様に自動で設定される場合があります。任意で設定変更し「次へ」をクリック。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-173316.png?resize=798%2C692&ssl=1)
次に、ポーラーにポーリングの実行対象を割り当てます。「すべてのノード」フォルダの「+」ボタンをクリックして展開し、対象ノードにチェックを入れます。
デフォルトではベンダーでグループ分けされていますが、上部の「グループ化基準」のメニューから変更できます。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-173351.png?resize=795%2C532&ssl=1)
画面左下の「テスト」をクリックすると、チェックを入れたノードに対してポーリングテストを実行し、結果を表示します。図1-5のように、正常に取得できる場合は値を表示し、できない場合はメッセージを表示します。
ノードのテスト結果を確認して「次へ」をクリック。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-173528.png?resize=792%2C530&ssl=1)
次に、データテーブルの各行に付けるラベル名を設定します (データをテーブルで取得する場合のみ) 。今回はデフォルトの「SolarWinds Platformのインターフェイス名を使用」のまま「次へ」をクリックします。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-173536.png?resize=789%2C529&ssl=1)
次にWebコンソールでのデータ表示を設定します。
Webコンソール上にポーリングデータのグラフやテーブルを表示する場合には、任意の「SolarWinds Platformビュー名」の「チャート」「テーブル」にチェックを入れます。
「終了」をクリックするとポーラーが作成されます。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-01-173605.png?resize=793%2C533&ssl=1)
これでUnDP設定は終了です。
カスタムSQLアラート設定
続いて、アラート条件を設定していきます。
本記事では、トリガー条件とリセット条件の設定に絞りご紹介します。
これ以外のアラート設定手順は前回の記事 【SolarWinds Hybrid Cloud Observability 完全セットアップマニュアル】その9. カスタムアラート設定① をご参照ください。
まず「トリガー条件」画面で「アラート作成対象」のプルダウンメニューから「カスタムSQLアラート (高度)」を選択します。
「SQL条件を設定」のプルダウンメニューから任意の項目を選択します。条件に対応するSELECT, FROM文が自動で設定されます。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/2-5.png?resize=860%2C268&ssl=1)
FROM以下のフィールドにWHEREで始まる条件文を入力します。
入力後にフィールド下部の「検証」をクリックしてクエリが有効であることを確認し「次へ」をクリック。同様の手順を「リセット条件」画面でも行います。
![](https://i0.wp.com/blog.jtc-i.co.jp/wp-content/uploads/2024/07/2-6.png?resize=778%2C467&ssl=1)
今回ご紹介するカスタムアラートで設定するSQLクエリは下記です。
カスタムSQLアラートではアラート範囲指定もクエリで行います。クエリ中の<カスタムプロパティ名>に各アラートに対応するカスタムプロパティ名を入力してください。
① HSRPステータスがActiveから変化した場合に検知
■トリガー条件 (HSRPステータスがActiveから変化した場合にトリガー)
SQL条件を設定:Interface
WHERE Interfaces.InterfaceID IN (
SELECT hsrp.InterfaceID
FROM Interfaces AS hsrp
JOIN CustomPollerAssignmentView hsrpstate
ON hsrpstate.CustomPollerOid = '1.3.6.1.4.1.9.9.106.1.2.1.1.15'
AND hsrp.NodeID = hsrpstate.NodeID
JOIN (
SELECT *
FROM (
SELECT
[CustomPollerAssignmentID],
[RowID],
[Timestamp],
[Status],
ROW_NUMBER() OVER (PARTITION BY s.[CustomPollerAssignmentID], s.RowID ORDER BY Timestamp DESC) AS rn
FROM [SolarWindsOrion].[dbo].[CustomPollerStatistics_CS_cur] s
) AS hsrps1
WHERE rn = 1
) AS hsrpStatus1
ON hsrpstate.CustomPollerAssignmentID = hsrpStatus1.CustomPollerAssignmentID
JOIN (
SELECT *
FROM (
SELECT
[CustomPollerAssignmentID],
[RowID],
[Timestamp],
[Status],
ROW_NUMBER() OVER (PARTITION BY s.[CustomPollerAssignmentID], s.RowID ORDER BY Timestamp DESC) AS rn
FROM [SolarWindsOrion].[dbo].[CustomPollerStatistics_CS_cur] s
) AS hsrps2
WHERE rn = 2
) hsrpStatus2
ON hsrpStatus1.CustomPollerAssignmentID = hsrpStatus2.CustomPollerAssignmentID
AND hsrpStatus1.RowID = hsrpStatus2.RowID
WHERE hsrp. <カスタムプロパティ名> = 'True'
AND hsrpstatus1.status != '6'
AND hsrpstatus2.status = '6'
);
■リセット条件 (HSRPステータスがActiveである場合にリセット)
SQL条件を設定:Interface
WHERE Interfaces.InterfaceID IN (
SELECT hsrp.InterfaceID
FROM Interfaces AS hsrp
JOIN CustomPollerAssignmentView hsrpstate
ON hsrpstate.CustomPollerOid = '1.3.6.1.4.1.9.9.106.1.2.1.1.15'
AND hsrp.NodeID = hsrpstate.NodeID
JOIN Custompollerstatus AS hsrpstatus
ON hsrpstate.CustomPollerAssignmentID = hsrpstatus.CustomPollerAssignmentID
WHERE hsrpstatus.status = '6'
AND hsrp. <カスタムプロパティ名> = 'True'
);
② Cisco機器のインターフェイスのErrDisable検知
■トリガー条件 (Cisco機器のインターフェイスがErrDisableである場合にトリガー)
SQL条件を設定:Interface
WHERE Interfaces.InterfaceID IN (
SELECT err.InterfaceID
FROM Interfaces AS err
JOIN CustomPollerAssignmentView errstate
ON errstate.CustomPollerOid = '1.3.6.1.4.1.9.9.548.1.3.1.1.2'
AND err.NodeID = errstate.NodeID
JOIN Custompollerstatus AS errstatus
ON errstate.CustomPollerAssignmentID = errstatus.CustomPollerAssignmentID
WHERE errstatus.status > '0'
AND err. <カスタムプロパティ名> = 'True'
);
■リセット条件 (Cisco機器のインターフェイスがErrDisableではなくなった場合にリセット)
「トリガー条件が真でなくなったときにこのアラートをリセット(推奨)」を選択
③ Cisco機器の温度が閾値を超えた場合、または特定のステータスに変化した場合に検知
■トリガー条件 (機器の温度が75℃を超えた場合、またはステータスがcriticalもしくは shutdownである場合にトリガー)
SQL条件を設定:Node
WHERE Nodes.NodeID IN (
SELECT TempValue.NodeID
FROM CustomPollerAssignmentView TempValue
JOIN CustomPollerStatus TempValue_Status
ON TempValue.CustomPollerOid = '1.3.6.1.4.1.9.9.13.1.3.1.3'
AND TempValue.CustomPollerAssignmentID = TempValue_Status.CustomPollerAssignmentID
LEFT JOIN CustomPollerAssignmentView TempState
ON TempState.CustomPollerOid = '1.3.6.1.4.1.9.9.13.1.3.1.6'
AND TempValue.NodeID = TempState.NodeID
LEFT JOIN CustomPollerStatus TempState_Status
ON TempState.CustomPollerAssignmentID = TempState_Status.CustomPollerAssignmentID
AND TempValue_Status.RowID = TempState_Status.RowID
WHERE TempValue_Status.Status > '75'
OR (TempState_Status.Status = '3' OR TempState_Status.Status = '4')
);
■リセット条件 (機器の温度が72℃を下回った場合にリセット)
SQL条件を設定:Node
WHERE Nodes.NodeID IN (
SELECT TempValue.NodeID
FROM CustomPollerAssignmentView TempValue
JOIN CustomPollerStatus TempValue_Status
ON TempValue.CustomPollerOid = '1.3.6.1.4.1.9.9.13.1.3.1.3'
AND TempValue.CustomPollerAssignmentID = TempValue_Status.CustomPollerAssignmentID
WHERE TempValue_Status.Status < 72
);
前回の記事と同様の手順で「7. アラート設定のサマリー」画面まで設定します。
設定内容を確認して「送信」をクリック。
これで、カスタムSQLクエリを使用したカスタムアラートの設定は終了です。
HCOではこのように、UnDPの活用やSQLクエリの開発によって更に監視条件を拡張することができます。本記事でご紹介したもの以外にも多彩な監視条件を実現できますので、ご使用の環境でぜひお試しください。
最後に
今回はHCOのカスタムアラートの設定方法をご紹介しました。
SolarWinds 製品にご興味のある方は、以下のリンクから弊社までお問い合わせください。