Paragon Insightsの概念
Paragon Insights(旧HealthBot)は、高度にプログラム可能なテレメトリベースの分析アプリケーションです。そうすれば、ネットワークの問題を診断して根本原因を特定し、ネットワークの異常を検出し、潜在的なネットワークの問題を予測し、発生した問題に対するリアルタイムの救済策を作成できます。
これを実現するには、ネットワークデバイスとParagon Insightsで、それぞれ大量のデータを送受信するように設定する必要があります。デバイス構成については、このガイドのこのセクションとその他のセクションで説明します。
Paragon Insightsやアプリケーションが、受信テレメトリデータを読み取って反応するように設定するには、分析対象のシステムとデータに固有のいくつかの要素を記述した言語が必要です。この種類の言語は、ドメイン固有言語 (DSL) と呼ばれ、1 つのドメインに固有の言語です。すべての DSL は、質問に答えるのに役立つように構築されています。Paragon Insightsの場合、次のような質問があります。
Q: データを送信するシステムを構成するコンポーネントは何ですか?
A: ネットワーク デバイスは、メモリ、CPU、インターフェイス、プロトコルなどで構成されています。Paragon Insightsでは、これらを Paragon Insightsトピックと呼びます。
Q: このすべての受信テレメトリ データを収集、フィルター処理、処理、および分析するにはどうすればよいですか?
A: Paragon Insightsでは、センサー、フィールド、変数、トリガーなどと呼ばれる情報ブロックで構成される Paragon Insightsルール - 基本 を使用します。
Q:何を探すべきかをどのように決定しますか?
A:解決したい問題や答えたい質問によって異なります。Paragon Insightsは、 Paragon Insightsプレイブック を使用して特定のルールのコレクションを作成し、特定の目標を達成するために特定のデバイスグループに適用します。例えば、の一部
system-kpis-playbook
は、システムメモリ使用量がユーザー定義のしきい値を超えた場合に、ユーザーに警告することができます。
このセクションでは、Paragon Insightを使用する前に理解しておく必要のあるこれらの重要な概念について説明します。
Paragon Insightsのデータ収集方法
ネットワークデバイスの状態を可視化するために、Paragon Insightsはまずテレメトリデータやその他のステータス情報を収集する必要があります。これはセンサーを使用して行われます。
Paragon Insightsは、デバイスからParagon Insightsにデータを「プッシュ」するセンサーと、Paragon Insightsが定期的なポーリングを使用してデバイスからデータを「プル」する必要があるセンサーをサポートしています。
データ収集 - 「プッシュ」モデル
ネットワーク内のオブジェクト数とそれらが生成するメトリックが増えるにつれ、ネットワークの状態を監視するための運用統計を収集することがますます困難になっています。SNMPやCLIなどの従来の「プル」データ収集モデルは、ネットワーク要素を定期的にポーリングするために追加の処理を必要とし、スケーリングを直接制限する可能性があります。
「プッシュ」モデルは、データを非同期的に配信することでこれらの制限を克服し、ポーリングを排除します。このモデルでは、Paragon Insightsサーバーは、定期的なアップデートをストリーミングするために、ネットワークデバイスに単一のリクエストを行うことができます。その結果、「プッシュ」モデルは拡張性が高く、ネットワーク内の数千のオブジェクトの監視をサポートできます。Junosデバイスは、 Junos Telemetry Interface (JTI)という形でこのモデルをサポートしています。
Paragon Insightsは現在、5つの「プッシュ」インジェストタイプをサポートしています。
ネイティブGPB
Netflow
Sflow
OpenConfig
Syslog
これらのプッシュモデルのデータ収集( インジェスト)方法については、 Paragon Insightsデータインジェストガイドで詳しく説明しています。
データ収集 - 「プル」モデル
「プッシュ」モデルは、その効率とスケーラビリティのために推奨されるアプローチですが、「プル」データ収集モデルが適切な場合もあります。「プル」モデルでは、Paragon Insightsは定期的にネットワークデバイスからデータを要求します。
Paragon Insightsは現在、2つの「プル」インジェストタイプをサポートしています。
iAgent (CLI/NETCONF)
Snmp
これらのプルモデルデータ収集( インジェスト)方法については、 Paragon Insightsデータインジェストガイドで詳しく説明しています。
Paragon Insightsのトピック
ネットワークデバイスは、CPUやメモリからインターフェイスやプロトコルスタックなど、数多くのコンポーネントやシステムで構成されています。Paragon Insightでは、トピックとは、これらのさまざまなデバイスコンポーネントに対処するために使用される構成体です。Topic ブロックは、モデル化する必要があるものを定義する名前空間を作成するために使用されます。各トピックブロックは1つ以上のルールブロックで構成され、ルールブロックはフィールドブロック、関数ブロック、トリガーブロックなどで構成されます。 詳細については、Paragon Insightsルール - 詳細を参照してください。Paragon Insightsで作成された各ルールは、トピックの一部である必要があります。ジュニパーは、これらのシステムコンポーネントを多数、次のようなトピックのリストにまとめています。
シャーシ
サービスクラス
外部
ファイアウォール
インターフェイス
カーネル
ラインカード
論理システム
プロトコル
ルーティングオプション
セキュリティ
サービス
システム
トピック名にサブトピックを追加することで、ジュニパーのトピック名の下にサブ .<sub-topic> トピックを作成できます。たとえば、kernel.tcpip や system.cpu などです。
ジュニパーが提供する事前定義されたルールは、外部トピックを除き、ジュニパーのトピックの1つに収まります。外部トピックは、ユーザーが作成したルール用に予約されています。Paragon Insights ウェブGUIでは、新しいルールを作成すると、[トピック]フィールドに外部トピック名が自動的に入力されます。
Paragon Insightsのルール - 基本
Paragon Insightsの主な機能は、ネットワークデバイスからのテレメトリデータの収集と対応です。データの収集方法とそれに対応する方法を定義することは、 ルールの役割です。
Paragon Insightsには一連のデフォルトルールが同梱されており、Paragon Insights GUIの 「構成>ルール 」ページや、 GitHubのhealthbot-rules リポジトリで確認できます。独自のルールを作成することもできます。
Paragon Insightsルールの構造は次のようになります。
ルールを整理するために、Paragon Insightはルールを トピックに整理します。トピックは、 system のように非常に一般的なものでも、 protocol.bgp のように細かくすることもできます。各トピックには、1 つ以上のルールが含まれています。
前述のように、 ルール には、データの収集方法と処理方法を定義するためのすべての詳細と指示が含まれています。各ルールには、次の必須要素が含まれています。
センサーは、データを収集するためのパラメーターを定義します。これには通常、使用するデータ収集方法(前述のParagon Insightsのデータ収集方法を参照)、どのデータを取り込むかに関するガイダンス、データをプッシュまたはプルする頻度が含まれます。任意のルールで、センサーはルール内で直接定義することも、別のルールから参照することもできます。
例:SNMP センサーを使用して、60 秒ごとにネットワーク デバイスをポーリングし、Juniper SNMP MIB テーブル jnxOperatingTable 内のすべてのデバイス データを収集します。
通常、センサーは大量のデータを取り込むため、 フィールド はそのデータをフィルター処理または操作する方法を提供し、関心のある特定の情報を識別して分離できます。フィールドは、静的なしきい値などのプレースホルダー値としても機能し、システムがデータ分析を実行するのに役立ちます。
例: センサーで上記で指定した SNMP テーブルから jnxOperating15MinLoadAvg (CPU 15 分間平均使用率) の値を抽出、分離、保存します。
トリガーは 定期的にフィールドを他の要素と結合してデータを比較し、現在のデバイスの状態を判断します。トリガーには、正常性ページでデバイスの状態を視覚化する方法を定義するパラメーターを含む 1 つ以上の 'when-then' ステートメントが含まれます。
例: 90 秒ごとに CPU 15 分の平均使用率を確認し、定義されたしきい値を超えた場合は、デバイスの正常性ページでデバイスの状態を赤に設定し、現在の値を示すメッセージを表示します。
ルールには、次のオプション要素を含めることもできます。
ベクターを使用すると 、既存の要素を活用して、複数のルールで同じ要素を繰り返し設定する必要がなくなります。
例: センサーが構成されたルールと、別のルールから 2 番目のセンサーへのベクトル。センサーのないルールと、他のルールからフィールドへのベクトル
変数 を使用して、上記の必須要素に必要な追加のサポート パラメーターを提供できます。
例: 文字列 "ge-0/0/0" は、すべてのインターフェイスのステータスを収集するフィールド内で使用され、データを 1 つのインターフェイスのみに絞り込むために使用されます。静的しきい値として使用するフィールドで参照される整数 ("80" など)
関数 を使用すると、データをさらに操作する方法や、特定のイベントに反応する方法に関する指示を(Python スクリプトの形式で)提供できます。
例: カウント値を比較する関数を使用して、入出力パケット数を監視するルール。システムストレージを監視し、ストレージ使用率が定義されたしきい値を超えた場合に一時ファイルとログファイルをクリーンアップする関数を呼び出すルール
ルール自体は、実際には何もしません。ルールを利用するには、そのルールを Paragon Insightsプレイブックに追加する必要があります。
Paragon Insightsのルール - 詳細
ルールとは、ネットワークまたはJunosデバイスから特定の情報を抽出するために必要なコンポーネントまたはブロックのパッケージです。 ルール は、分析アプリケーション用に特別に調整されたドメイン固有言語 (DSL) に準拠しています。DSL は、ルールで次のものをキャプチャできるように設計されています。
ルールが操作できるようにする必要がある入力データの最小セット
デバイスで構成する必要があるテレメトリ センサーの最小セット
構成されたセンサーから関心のあるフィールド
レポートまたはポーリングの頻度
収集されたデータを操作するトリガーのセット
トリガーの起動に必要な条件または評価
トリガーが開始されたときに実行する必要があるアクションまたは通知
ルール、トピック、プレイブックの詳細については、次のセクションで説明します。
ルール
ルール は、ハードコーディングがないことを意図しています。しきい値を考えてください。しきい値がハードコードされている場合、要件が異なる別の顧客またはデバイスに合わせてしきい値をカスタマイズする簡単な方法はありません。そのため、ルールはパラメーター化を使用して定義され、既定値が設定されます。これにより、パラメーターをデフォルトのままにすることも、展開時にオペレーターがカスタマイズすることもできます。カスタマイズは、個々のルールが含まれている Paragon Insightsプレイブック を適用しながら、デバイスグループまたは個々のデバイスレベルで行うことができます。
デバイス中心のルールは、デバイスルールと呼ばれます。シャーシ、システム、ラインカード、インターフェイスなどのデバイスコンポーネントは、すべてルール定義で Paragon Insightsトピック として扱われます。一般に、デバイス ルールはデバイス上のセンサーを使用します。
複数のデバイスにまたがるルールは、ネットワーク ルールと呼ばれます。ネットワークルール:
ルールの頻度が設定されている必要があります
センサーを含めることはできません
プレイブック内のデバイスルールと混在させることはできません
いずれかの種類のルールをデプロイするには、プレイブックにルールを含め、そのプレイブックをデバイス グループまたはネットワーク グループに適用します。
Paragon Insightsには、事前に定義されたルールセットが付属しています。
ルールを構成するすべてのブロックがすべてのルールに必要なわけではありません。ルール定義で特定のブロックが必要かどうかは、取得しようとしている情報の種類によって異なります。また、一部のルール コンポーネントはネットワーク ルールに対して無効です。 表 1 に、ルールのコンポーネントと各コンポーネントの概要を示します。
ブロック |
機能 |
デバイスルールで必要ですか? |
ネットワークルールに有効ですか? |
---|---|---|---|
センサー ブロックは、データを取得するためのアクセス方法に似ています。Paragon Insightsで使用できるセンサーには、OpenConfig、Native GPB、iAgent、SNMP、syslogの複数のタイプがあります。 トリガーが最終的に動作するデータフィールドに到達するために、デバイス上でアクティブにする必要があるセンサーを定義します。センサー名は フィールドによって参照されます。 OpenConfig センサーと iAgent センサーでは、プッシュ間隔またはポーリング間隔にそれぞれ頻度を設定する必要があります。SNMPセンサーでは、周波数も設定する必要があります。 |
No - 別のルールからのフィールド参照、または別のルールからの参照を持つベクトルのみを使用するルールを作成できます。このような場合は、ルール頻度を明示的に定義する必要があります。 |
いいえ |
|
フィールド ブロックのソースには、センサーへのポインター、別のルールで定義された フィールド への参照、定数、または数式を指定できます。フィールドには、文字列、整数、または浮動小数点を指定できます。既定のフィールド タイプは文字列です。 |
はい - フィールドに は、トリガーが動作するデータが格納されます。HealthBot リリース 3.1.0 以降、条件付きタグプロファイルに基づいて、通常の項目とキー項目をルールに追加できるようになりました。以下の「 タグ付け 」セクションを参照してください。 |
はい |
|
Vectorsブロックを使用すると、リストの処理、セットの作成、および異なるセット間での要素の比較が可能になります。ベクトルは、1 つ以上のフィールドから複数の値を保持するために使用されます。 |
いいえ |
はい |
|
変数ブロックを使用すると、ルールに値を渡すことができます。インバリアント ルールの定義は、{{<placeholder-variable> }} のような口ひげスタイルのテンプレートによって実現されます。プレースホルダー変数の値は、既定でルールで設定されるか、デプロイ時にユーザー定義できます。 |
いいえ |
いいえ |
|
Functions ブロックを使用すると、Python などの言語で記述された外部ファイルにプロトタイプメソッドを作成することで、フィールド、トリガー、およびアクションを拡張できます。functions ブロックには、ファイル パス、アクセスするメソッド、および引数の説明や必須かどうかなどの引数に関する詳細が含まれます。 |
いいえ |
いいえ |
|
トリガー ブロックはフィールドに対して機能し、1 つ以上の用語によって定義されます。条件が満たされると、条件に定義されたアクションが実行されます。 既定では、トリガーは、別の頻度で明示的に構成されていない限り、10 秒ごとに評価されます。 既定では、ルールで定義されているすべてのトリガーが並列で評価されます。 |
Yes - トリガーにより、ルールがアクションを実行できるようになります。 |
はい |
|
ルールのプロパティブロックでは、ハードウェアの依存関係、ソフトウェアの依存関係、バージョン履歴など、Paragon Insightsルールのメタデータを指定できます。 |
いいえ |
はい |
|
事前/事後アクションブロックを使用すると、ルール設定に追加するときにアクションエンジンワークフローを自動化できます。Paragon Insightsは、プレイブックのインスタンス化の開始時にアクション前タスクを実行し、プレイブックインスタンスを停止した後にアクション後のタスクを実行します。 |
いいえ |
はい |
センサー
センサーを定義するときは、センサー名、センサーの種類、データ収集頻度などの情報を指定する必要があります。 表 1 で説明したように、センサーは次のいずれかになります。
-
OpenConfig OpenConfig JTIセンサーの詳細については、を参照してください 。/../../../../../。
-
Native GPB ネイティブGPB JTIセンサーの詳細については、を参照してください 。/../../../../../。
-
iAgent iAgentセンサーは、NETCONFおよびYAMLベースのPyEZテーブルとビューを使用して、必要なデータを取得します。構造化(XML)データと非構造化データ(VTY コマンドおよび CLI 出力)の両方がサポートされています。Junos PyEZの詳細については、 Junos PyEzのマニュアルを参照してください。
-
SNMP 簡易ネットワーク管理プロトコル。
-
syslog システムログ
-
BYOI 独自のインジェストを持ち込む – 独自のインジェストタイプを定義できます。
-
Flow NetFlow トラフィック フロー分析プロトコル
-
sFlow sFlowパケットサンプリングプロトコル
異なるルールに同じセンサーが定義されている場合、センサーごとに 1 つのサブスクリプションのみが作成されます。OpenConfig センサーとネイティブ GPB センサーのセンサーパス、iAgent センサーのファイルとテーブルのタプルで構成されるキーは、関連付けられたルールを識別するために使用されます。
同じセンサーパスキーを持つ複数の センサー に異なる周波数が定義されている場合、センサーサブスクリプションには最低周波数が選択されます。
フィールド
フィールド・ソースには、 表 1 にリストされている 4 つのタイプがあります。 表 2 に、4 つのフィールド取り込みタイプの詳細を示します。
フィールド タイプ |
詳細 |
---|---|
センサー |
センサーをサブスクライブすると、通常、複数のデータ列にアクセスできます。たとえば、OpenConfig インターフェイス センサーをサブスクライブすると、次のようなカウンター関連情報を含む一連の情報にアクセスできます。 /interfaces/counters/tx-bytes, /interfaces/counters/rx-bytes, /interfaces/counters/tx-packets, /interfaces/counters/rx-packets, /interfaces/counters/oper-stateなど OpenConfig センサーのパス名がかなり長いため、フィールド内のセンサー定義ではエイリアシングとフィルター処理が可能です。単一センサー ルールの場合、フィールド テーブルに必要なセンサーのセットは、ルールで定義されているトリガーに基づいて、生のテーブルからプログラムによって自動インポートされます。 |
参照 |
トリガーは、そのルール内で定義されたフィールドに対してのみ操作できます。場合によっては、フィールドが別のルールで定義された別のフィールドまたはトリガー出力を参照する必要があります。これは、他のフィールドまたはトリガーを参照し、追加のフィルターを適用することによって実現されます。参照されるフィールドまたはトリガーは、参照元フィールドへのストリーム通知として扱われます。同じルール内で参照はサポートされていません。 参照は、指定された時間範囲から値 (使用可能な場合) を選択する時間範囲オプションを取ることもできます。フィールド参照は常に明確である必要があるため、結果をフィルター処理して 1 つの値のみを取得することに適切な注意を払う必要があります。参照が複数のデータ ポイントまたは値を受け取る場合は、最新のもののみが使用されます。たとえば、過去 3 分間にフィールドに含まれる値を参照している場合、その時間範囲でそのフィールドに 6 つの値が含まれる可能性があります。Paragon Insightsは、このような状況でのみ最新の値を使用します。 |
定数 |
定数として定義されるフィールドは、実行中に変更できない固定値です。Paragon Insights 定数 型には、文字列、整数、および倍精度浮動小数点数を指定できます。 |
式 |
未加工のセンサー フィールドは、トリガーを定義するための開始点です。ただし、トリガーは、数式によって定義された派生フィールドに対して、数学的な変換を適用して機能することがよくあります。 数式は、事前定義またはユーザー定義 (UDF) にすることができます。事前定義された式には、最小、最大、平均、合計、カウント、変化率、経過時間、評価、標準偏差、マイクロバースト、動的しきい値、異常検出、外れ値検出、予測が含まれます。 変化率とは、ある時点における現在の値と以前の値の差を指します。パケット転送は、変化率の式を使用できるユースケースの例です。[保留時間] フィールドは、時間間隔のしきい値を取ります。現在の値と以前の値の間の時間間隔は、指定されたホールドタイム値を超えることはできません。[乗算係数] フィールドは、フィールド値の単位を変換するために使用されます。フィールド値がバイト単位で計算される場合、[乗算係数] として 1024 を指定すると、結果がキロバイトに変換されます。ホールドタイムと乗算係数は、変化率の式を適用する際の必須フィールドではありません。 Paragon Insights 4.0.0では、を使用して経過時間の式 $timeで現在のポイント時間を取得できます。 一部の定義済み数式は、履歴データを操作するために時間範囲で操作できます。時間範囲が指定されていない場合、数式は now として指定された現在のデータに対して機能します 。 |
ベクトル
ベクトルは 、複数の要素を 1 つのルールにまとめるのに役立ちます。たとえば、ベクトルを使用して、すべてのインターフェイスエラーフィールドを収集できます。ベクターの構文は次のとおりです。
vector <vector-name>{ path [$field-1 $field-2 .. $field-n]; filter <list of specific element(s) to filter out from vector>; append <list of specific element(s) to be added to vector>; }
$field-n は、参照型のフィールドにすることができます。
ベクトルの定義に使用されるフィールドは、他のルールで定義されたフィールドへの直接参照にすることができます。
vector <vector-name>{ path [/device-group[device-group-name=<device-group>]\ /device[device-name=<device>]/topic[topic-name=<topic>]\ /rule[rule-name=<rule>]/field[<field-name>=<field-value>\ AND|OR ...]/<field-name> ...]; filter <list of specific element(s) to filter out from vector>; append <list of specific element(s) to be added to vector>; }
この構文では、コンストラクトの <field-name>=<field-value> 部分を使用したオプションのフィルター処理が可能になります。ベクトルは、指定された時間範囲から値を選択する時間範囲オプションを取ることもできます。指定された時間範囲で複数の値が返される場合、それらはすべて配列として選択されます。
ベクトルでは、次の定義済み式がサポートされています。
unique @vector1
–vector1から一意の要素のセットを返します。@vector1 and @vector2
–vector1 と vector2 の一意の要素の共通部分を返します。@vector1 or @vector2
–2 つのベクトル内の一意の要素の合計セットを返します。@vector1 unless @vector2
–vector-1 では一意の要素セットを返しますが、vector-2 では返しません
変数
変数は、ルールの作成時に [変数] ページで定義されます。変数定義のこの部分では、デプロイ中にデバイス グループまたはデバイスに特定の値が設定されていない場合に使用される既定値を作成します。たとえば、ルールに check-interface-status
という interface_name
変数が 1 つあるとします。 [変数] ページで設定する値は、すべてのインターフェイスを意味する正規表現 (regex) .*
です。
ルールを check-interface-status
そのまま適用した場合、デバイス グループ内のすべてのデバイス上のすべてのインターフェイスに関するインターフェイス ステータス情報が提供されます。このルールを含むプレイブックを適用するときに、デバイス グループまたはデバイス レベルで既定値をオーバーライドできます。これにより、ルールを適用する際の柔軟性が得られます。優先順位は、デバイス値がデバイスグループ値を上書きし、デバイスグループ値がルールに設定されたデフォルト値を上書きすることです。
デバイスルールで定義された変数のデフォルト値を指定することを強くお勧めします。ジュニパーが提供するすべてのルールは、この推奨事項に従います。ネットワークルールで定義された変数にデフォルト値を設定することはできません。
関数
関数は、ルールの作成時に [関数] タブで定義されます。ここで関数を定義すると、フィールドに関連付けられた数式や、トリガーの [時刻] セクションと [その後] セクションで使用できます。トリガーの when 句で使用される関数は、ユーザー定義関数と呼ばれます。これらは true または false を返す必要があります。トリガの then 句で使用される関数は、ユーザー定義アクションと呼ばれます。
トリガー
トリガーは、Paragon Insightsのルール定義において極めて重要な役割を果たします。これらは、使用可能なセンサー データの変更に基づいてアクションを実行するかどうか、およびいつ実行するかを決定するルールの一部です。トリガーは、このとき、次にその方法で構築されます。前述のように、トリガーアクションは用語に基づいています。Term は、フィールド値の更新を監視する when 句と、変更内容に基づいてアクションを開始する when 句で構成されます。1 つのトリガー内で複数の用語を作成できます。
本規約の when 条項の評価は、用語のリストの一番上から始まり、一番下に進みます。項が評価され、一致しない場合は、次の項が評価されます。既定では、評価は、一致が確立されるか、一致せずにリストの一番下に到達するまで、この方法で続行されます。
when 句で使用できる定義済みの演算子には、次のものがあります。
評価された式の場合、このドキュメントでは、方程式の左辺と右辺をそれぞれLHSとRHSに短縮します。
より大きい - ある値が別の値より大きいかどうかを確認するために使用されます。
戻り値: 真または偽
構文: より大きい <LHS> <RHS> [時間範囲<範囲>]
例:
//Memory > 3000 MB in the last 5 minutes
when greater-than $memory 3000 time-range 5m;
より大きいか等しい - より大きいか等しい - より大きい か等しいが、より大きいか等しいかをチェックする(>=)
より小さい
戻り値: 真または偽
構文: より小さい <LHS> <RHS> [時間範囲<範囲>]
例:
//Memory < 6000 MB in the last 5 minutes
when less-than $memory 6000 time-range 5m;
より小さいまたは等しい - より小さい と同じですが、以下をチェックします(<=)
等しい - ある値が別の値と等しいことを確認するために使用されます。
戻り値: 真または偽
構文: 等しい <LHS> <RHS> [時間範囲 <範囲>]
例:
//Queue’s buffer utilization % == 0
when equal-to $buffer-utilization 0;
等しくない - 等しいと同じです が、負の条件(!=)をチェックします。
exists–値自体を気にせずに、値が存在するかどうかを確認するために使用されます。デバイスから何らかの値が送信されている必要があることを意味します。
戻り値: 真または偽
構文: [時間範囲 <範囲>] <$var>存在します。
例:
//Has the device configuration changed?
when exists $netconf-data-change
matches-with (文字列と正規表現の場合)- Python 正規表現操作を使用して文字列の一致をチェックするために使用されます。詳しくは 、構文 を参照してください。
メモ:LHS、または左側は、検索している文字列です。RHS、または右側は、一致式です。正規表現は RHS でのみ使用できます。
戻り値: 真または偽
構文: <LHS> <RHS> [時間範囲<範囲>]
例:
//Checks that ospf-neighbor-state has been UP for the past 10 minutes
when matches-with $ospf-neighbor-state “^UP$” time-range 10m;
例 1: 円記号 '\' をもう 1 つの円記号 '\' でエスケープする
escape \ with one more \
Expression: ^\\S+-\\d+/\\d+/\\d+$ Values that will match: xe-1/0/0 et-1/0/1 fe-2/0/0 Values that will not match: xe-1/0/0.1 fxp0
例 2:
escape \ with one more \
Expression: \\(\\S+\\)\\s\\(\\S+\\) Values that will match: (root) (mgd) (user1) (ssh) Values that will not match: root mgd (root) mgd
does-not-match-with(文字列と正規表現の場合)- matches-with と同じですが、負の条件をチェックします
range - 値 X が、最小値や最大値(min <= X <= max)などの特定の範囲内にあるかどうかを確認します。
戻り値: 真または偽
構文: 範囲 <$var> 最小 <最小値> 最大 <最大値> [時間範囲 <範囲>]
例:
//Checks whether memory usage has been between 3000 MB and 6000 MB in the last 5 minutes
when range $mem min 3000 max 6000 time-range 5m;
少なくとも値による増加 - 値が前の値と比較して少なくとも最小許容率だけ増加しているかどうかを確認するために使用されます。最小許容増加率を定義するオプションのパラメーターを指定できます。指定しない場合、最小許容増加率はデフォルトで 1 に設定されます。
戻り値: 真または偽
構文:
[増分<連続するポイント間の増加する最小値<$var>>]
<$var>[増分<連続するポイント間の増加の最小値>]時間範囲<範囲>
例:
Checks that the ospf-tx-hello has been increasing steadily over the past 5 minutes.
when increasing-at-least-by-value $ospf-tx-hello increment 10 time-range 5m;
[値による増加] - 値の増加が前の値と比較して最大許容率を超えないかどうかを確認するために使用されます。最大許容増加率を定義する省略可能なパラメーターを指定できます。指定しない場合、許容可能な最大増加率はデフォルトで 1 です。
戻り値: 真または偽
構文:
最大値による増加 <$var> [増分<連続するポイント間の増加の最大値>]
[連続するポイント間の増加の増分<最大値<$var>>]時間範囲<範囲>
例:
Checks that the error rate has not increased by more than 5 in the past 5 minutes.
when increasing-at-most-by-value $error-count increment 5 time-range 5m;
少なくともレートによる増加 - 連続する値間の増加率が少なくとも指定されたレートであることを確認するために使用されます。必須パラメーターには、値と時間単位が含まれ、これらは一緒になって最小許容増加率を示します。
戻り値: 真または偽
構文:
この構文は、現在の値を以前の値と比較し、少なくとも値の割合で増加するようにします。
<秒あたりの<$var>値<連続するポイント間の増加の最小値> [時間範囲<範囲>>]
この構文は、現在の値を以前の値と比較し、少なくともパーセンテージで増加するようにします
<$var><秒あたりの割合<パーセンテージ>割合割合>日|週|月|年 [時間範囲<範囲>]
例:
Checks that the ospf-tx-hello has been increasing strictly over the past five minutes.
when increasing-at-least-by-rate $ospf-tx-hello value 1 per second time-range 5m;
増加率 - 増加率と似ていますが、率の低下をチェックする点が異なります。
when 句でこれらの演算子を使用すると、ユーザー定義条件と呼ばれる関数が作成されます。これらの関数は、常に true または false を返す必要があります。
項の評価の結果が一致した場合は、Then 句で指定されたアクションが実行されます。デフォルトでは、用語の処理はこの時点で停止します。このフローを変更するには、Then 句の下部にある [次の用語の評価] ボタンを有効にします。これにより、Paragon Insightsは用語処理を継続して、when-thisとthis、そしてそれといったより複雑な意思決定機能を作成します。
Then セクションで使用できる定義済みのアクションの一覧を次に示します。
次に
ステータス
タグ 付け
リリース3.1.0以降、HealthBotはタグ付けをサポートしています。タグ付けにより、特定の条件が満たされたときに、フィールド、値、キーをParagon Insightsルールに挿入できます。詳細については、 Paragon Insightsのタグ付け を参照してください。
ルールのプロパティ
ルールのプロパティブロックでは、ハードウェアの依存関係、ソフトウェアの依存関係、バージョン履歴など、Paragon Insightsルールのメタデータを指定できます。このデータは、情報提供や、デバイスがParagon Insightsルールと互換性があるかどうかを確認するために使用できます。
事前/事後のアクション
(オプション)Paragon Insightsリリース4.3.0以降、ルールで[アクション前]タブと[アクション後]タブを使用して、アクションエンジンワークフローで事前設定されたタスクを自動化できるようになりました。アクション エンジン ワークフローは、コマンド ライン コマンド、NETCONF コマンド、または実行可能ファイル内のコマンドとして実行できるタスクを実行するために使用されます。詳細については 、「アクションエンジンのワークフローについて 」を参照してください。
デバイスグループでプレイブックインスタンスを実行すると、Paragon Insightsはプレイブックのインスタンス化の開始時にプレアクションタスクを実行します。事前アクション タスクは、デバイス グループ内のデバイス構成を実行したり、デバイスの状態に関する通知を別のアプリケーションに発行したりする場合に便利です。複数のアクション前タスク間、およびアクション前タスクとルールの実行の間に依存関係はありません。ルールに複数のプレアクションタスクを設定すると、Paragon Insightはすべてのプレアクションタスクを同時に実行します。
Paragon Insightは、プレイブックインスタンスを停止したときにアクション後のタスクを実行します。オプションの設定であっても、アクション後タスクは、アクション前タスクを通じてデバイスに追加された追加の設定を削除するのに役立ちます。
アクション前タスクとアクション後タスクの両方に、一度だけ実行オプションがあります。デフォルトでは、一度だけ実行は無効になっています。一度だけ実行を有効にした場合、Paragon Insightはデバイスグループ内のデバイス上でタスクを1回だけ実行します。一度だけ実行は、以下の場合に適用されます。
同じデバイス グループでプレイブックの複数のインスタンスを実行する場合。
異なるプレイブックに一連のアクション前またはアクション後のタスクを含むルールを含め、同じデバイス グループでプレイブック インスタンスを実行する場合。
Paragon Insightは、アクション前タスクとアクション後タスクをデバイスグループ内のデバイスで実行する前に、重複タスクをチェックして解決します。重複は、プレイブックに含まれる多くのルールで特定のアクション前またはアクション後のタスクを構成するときに発生します。
Paragon Insightsをアップグレードする際、アプリケーションはアップグレード前に展開されたプレアクションタスクとポストアクションタスクを実行しません。
ルールでアクション前タスクとアクション後タスクを設定するには、 Paragon Insightsのルールとプレイブックを参照してください。
デバイスごとに複数のセンサー
Paragon Insightsリリース4.0.0では、デバイスグループ内のすべてのデバイスに適用できる複数のセンサーをルールごとに追加できます。以前のリリースでは、ルールごとに 1 つのセンサーしか追加できませんでした。ルールごとの各センサーは、フィールド テーブルにデータを生成します。複数のルールに異なるセンサーを追加すると、ルールの数と同じ数のフィールド テーブルが作成されます。Paragon Insightsの1つのルールに複数のタイプのセンサー(OpenConfigやネイティブGPBなど)を追加すると、センサーからのデータは、エクスポートや視覚化が簡単な単一のフィールドテーブルに統合されます。複数のセンサー構成の GUI サポートは、今後のリリースで実装される予定です。
ガイドライン
SP 管理者または作成アクセス権を持つユーザーは、複数のセンサーを構成するときに次のガイドラインに注意する必要があります。
ルールに複数のセンサーを追加する場合は、デバイスに適用されたセンサーから受信したデータやキーセットが重複していないことを確認する必要があります。キーセットが重複すると、データポイントが重複したり、データポイントが上書きされたり、データが不正確に評価されたりする可能性があります。これを回避するには、Fields のステートメントなどの
where
フィルター式を使用します。Paragon Insights GUIのルールに複数のセンサーを追加する場合、次のフィールドですべてのセンサーに共通の値を設定する必要があります。
[センサー] タブの [周波数] フィールド (センサーの周波数)
[ルール] ページのフィールド集計時間範囲フィールド。
[トリガー] タブの [頻度] フィールド。
トリガー、数式、および参照で使用される時間範囲フィールド。
たとえば、ルールに複数のセンサーを追加する場合、デバイスに適用されるすべてのセンサーは、センサーの種類に関係なく、センサー周波数の値が同じである必要があります。ルールに iAgent センサーと OpenConfig センサーがある場合、両方のセンサーの [周波数] の値は同じである必要があります。これは、上記のすべてのフィールドに当てはまります。
メモ:異なるセンサーの時間範囲値を一致させることができない場合は、オフセット値を使用することをお勧めします。詳細については、 周波数プロファイルとオフセット時間を参照してください。
ただし、周波数プロファイルで設定した周波数は、ルール内の複数のセンサーで設定された周波数値を上書きします。
複数のセンサーを含むルールは、特定のデバイス グループに追加されたすべてのデバイスに適用されます。デバイスグループ内のデバイスは、Paragon Insightsルールで使用されるセンサーのタイプをサポートしていることを前提としています。
場合によっては、デバイス グループ内のすべてのデバイスが同じ種類のセンサーをサポートできるとは限りません。たとえば、デバイスグループDG1には、OpenConfigパッケージがインストールされたMX2020ルーターと、OpenConfigパッケージなしで構成された別のMX2020ルーターがあります。1台目のMX2020ルーターはOpenConfigセンサーをサポートしますが、2台目のMX2020ルーターは同じセンサーをサポートしません。
このようなシナリオを回避するには、同じデバイス グループ内のすべてのデバイスが、情報の収集に使用されるセンサーの種類を満場一致でサポートしていることを確認する必要があります。
Paragon Insights GUIでの複数センサーの設定
ルールに複数のセンサーを追加するには:
[構成] > [ルール] > [ルールの追加] に移動します。
ルール ページが表示されます。
Paragon Insightsのトピックとルール名、ルールの説明、概要、およびオプションでフィールド集計の時間範囲とルールの頻度を入力します。ルールページのこれらのフィールドの詳細については、 Paragon Insightsのルールとプレイブックを参照してください。
[センサー]タブの[センサー の追加] ボタンをクリックし、選択した センサー のタイプに基づいて必要な詳細を入力します。
手順 3 を繰り返して、ユース ケースに必要な数のセンサーを追加します。
[フィールド] タブでセンサーのフィールドを構成します。
[ルールのプロパティ] タブでセンサーを構成して、複数のセンサーをアクティブに設定します。
ルールのプロパティのサポート対象デバイス階層の下に、ルールで以前に設定したすべてのセンサーを入力する必要があります。たとえば、ルールでセンサー s1、s2、および s3 を構成した場合、ルールのプロパティ構成にも同じセンサーを含める必要があります。
rule-properties { version 1; contributor juniper; supported-healthbot-version 4.0.0; supported-devices { sensors [s1 s2 s3];
また、Paragon InsightsGUIで新しいルールを記述してアップロードすることもできます。
ルールは、中括弧の形式 ({ ) と階層構造のインデントに従う必要があります。構成階層内の終端ステートメントまたはリーフステートメントは、サポートされるバージョン、センサー、およびその他の構成ステートメントなどの構成の詳細を定義するために、末尾にセミコロン(;)を付けて表示されます。
[Save & Deploy] をクリックして新しいセンサーをネットワークに適用するか、[保存] をクリックして新しいセンサーの構成を保存し、後で展開します。
ユースケース
次のシナリオは、ルール内の複数のセンサーのユース ケースを示しています。
Pathfinder Controllerには、セグメントルーティング(SR)とリソース予約プロトコル(RSVP)ラベルスイッチパス(LSP)の重複しないカウンターの詳細を提供するさまざまなネイティブセンサーがある場合があります。LSP から収集したデータのためにフィールド テーブルを組み合わせる必要がある場合は、同じルール内のデバイスに対して複数のセンサーをアクティブにすることができます。
iAgentセンサーを使用したインターフェイスとfeネイティブGPBセンサーを使用したインターフェイスのデータを取得するge場合は、デバイスに複数のアクティブセンサーを使用できます。この場合、フィールドフィルタリング式を使用してインターフェイス名でフィルタリングすることにより、データが重複しないようにする必要があります。インターフェイスの代わりに、sp-admin または作成アクセス権を持つユーザーは、他の主要業績評価指標も考慮できます。
センサーの優先順位
センサーからのデータ収集を効果的にするには、デバイス グループ内のデバイスが特定のセンサーを取り込み方法としてサポートする必要があります。古いバージョンのオペレーティング システムを実行しているデバイス グループ内の選択したデバイス、デバイス グループ内のさまざまなベンダーのデバイス、または同じベンダーのさまざまな製品 (ジュニパーの EX、MX、PTX ルーターなど) はすべて、デバイス グループにセンサーを適用する際の課題を引き起こす可能性があるシナリオです。このような場合は、デバイス グループ内の特定のデバイスと互換性のある別のセンサーを設定する必要があります。
Paragon Insightsリリース4.0.0では、センサーの優先順位を設定することができ、ベンダー名、オペレーティングシステム、製品名、プラットフォーム、リリースバージョンなど、ルールプロパティの各階層で異なるセンサーを設定できます。これにより、異種デバイスグループ内のマルチベンダーデバイスに適切なセンサを適用することが可能になります。リリース4.0.0では、Paragon Insights CLIを介してのみセンサーの優先順位を設定できます。Paragon Insightsリリース4.2.0以降、1つのルールに複数のセンサーを設定できます。詳細については、 Paragon Insightsのルールとプレイブックを参照してください。
図 1 は、それぞれ複数のセンサーを使用した 2 つのルールを示しています。ルールのプロパティがセンサーの優先順位に対して構成されていることを前提としています。
ルール1のセンサー1がOpenConfigで、ルール2のセンサー4がiAgentで、デバイス1がJunosオペレーティングシステム(OS)を実行しているとします。ルールのプロパティでOpenConfigとiAgentがJunos OS階層のデフォルトセンサーとして設定されていた場合、デバイスグループに対してプレイブックが導入されると、デバイス1はセンサー1とセンサー4からデータを受信します。
始める前に
Paragon Insightsのスタンドアロン展開では、センサーの優先順位を設定する前に、デバイスグループ内のデバイスを次のフィールドで設定する必要があります。
Vendor name: Paragon Insightsリリース4.0.0は、ジュニパーネットワークス、シスコシステムズ、アリスタネットワークス、PaloAlto Networksを含む複数のベンダーをサポートしています。
Operating system:Junos、IOS XRなどのベンダーでサポートされているオペレーティングシステムの名前。
Product: ベンダーが提供する製品 (デバイス) ファミリの名前。たとえば、ジュニパーネットワークスのMXルーター、ACXルーター、PTXルーターなどです。
Platform:一連の製品内の特定のメンバーデバイス。たとえば、MX2020、ACX5400などです。
Release or version: 選択されたプラットフォームのリリースバージョン。
デバイス階層内の上記のフィールドの構成は、[ルールのプロパティ] で指定されたセンサーの優先順位と一致する必要があります。たとえば、デバイス構成にプラットフォーム MX2020 を含める場合、センサーの優先順位階層にも MX2020 を含める必要があります。
センサーの優先順位の設定
次に、[ルールのプロパティ] でセンサーの優先順位を設定する構成例を示します。
rule-properties { version 1; contributor juniper; supported-healthbot-version 4.0.0; supported-devices { sensors interfaces-iagent; juniper { sensors interfaces-iagent; operating-system junos { products EX { sensors interfaces-iagent; platforms EX9200 { sensors interfaces-iagent; releases 17.3R1 { sensors interfaces-iagent; release-support min-supported-release; } } platforms EX9100 { sensors interfaces-oc; } } products MX { sensors interfaces-oc; } products PTX { sensors interfaces-oc; } products QFX { sensors interfaces-oc; } } } other-vendor cisco { vendor-name cisco; sensors interfaces-oc; } } }
センサーの優先順位は、[ルールのプロパティ] の構成の現在の階層への変更を必須にします。Paragon Insightsリリース4.0.0では、以下の要素の階層が変更されています。ルールのプロパティにリストされている要素の古い階層は非推奨です。
Releases: で
Product
定義されReleases
、Platform
リリースの下にリストされていた古いステートメント階層。この階層は非推奨です。products MX { releases 15.2R1 { ### Deprecated release-support min-supported-release; ### Deprecated platform All; ### Deprecated } }
オペレーティングシステム:古い統計階層では、オペレーティングシステムを他のベンダーのリーフ要素として定義していました。この順序は非推奨です。
other-vendor cisco { vendor-name cisco; operating-system nexus; ### Deprecated sensors [ s1 s2 ]; // Default sensors for cisco vendor operating-systems nxos { sensors [ s1 s2 ]; // Default sensors for cisco vendor with NX OS products NEXUS { sensors [ s1 s2 ]; // Default sensors for cisco vendor with NX OS and for the specified product platforms 7000 { sensors [ s1 s2 ]; // Default sensors for cisco vendor with NX OS and for the specified product and platform releases 15.8 { release-support only-on-this-release; sensors [ s1 s2 ]; // Sensors for cisco vendor with NX OS and for the product, platform and version } } }
Paragon Insightsプレイブック
ネットワーク上の特定の問題や状況を完全に理解するためには、多くの場合、さまざまなシステムコンポーネント、トピック、または主要業績評価指標(KPI)を調べる必要があります。Paragon Insightは、特定のユースケースに対処するためのルールのコレクションであるプレイブックで動作します。 プレイブック は、デバイスグループまたはネットワークグループに適用または実行されるParagon Insightsの要素です。
Paragon Insightsには、事前に定義された プレイブックセットが付属しています。たとえば、システム KPI プレイブックは、システム CPU 負荷平均、ストレージ、システム メモリ、プロセス メモリなどのシステム パラメーターの正常性を監視します。その後、KPIのいずれかが事前に設定されたしきい値を超えた場合に、オペレーターに通知するか、是正措置を講じます。以下は、ジュニパーが提供するプレイブックの一覧です。
BGP セッション統計
ルートサマリープレイブック
LLDPプレイブック
interface-kpis-playbook
システム-kpis-playbook
ラインカード-KPIS-プレイブック
シャーシ-KPI-プレイブック
プレイブックを作成し、必要なルールを含めることができます。これらのプレイブックをデバイス グループに適用します。既定では、プレイブックに含まれるすべてのルールは、デバイス グループ内のすべてのデバイスに適用されます。現在、この動作を変更する方法はありません。
プレイブック定義にネットワーク ルールが含まれている場合、プレイブックはネットワーク プレイブックになり、ネットワーク グループにのみ適用できます。