JTIテレメトリデータとRPM統計をデータコレクターに送信するためのルーターの設定
Junos Telemetry Interface(JTI)センサーは、PFEからデータ(LSPトラフィックデータ、論理および物理インターフェイストラフィックデータ)を生成し、データプレーンを介してのみプローブを送信します。そのため、ルーティングエンジンを管理ネットワークに接続するだけでなく、いずれかのデバイスのコレクターにデータポートを接続する必要があります。ネットワーク内の残りのデバイスは、そのインターフェイスを使用してコレクターに到達できます。
NorthStarの分析には、Junos OSリリース15.1F6以降を使用する必要があります。
ルーターを設定するには、以下の手順に従います。
- テレメトリデータ用のデバイス(Junos OSとJunos OS Evolvedを実行する両方のデバイス)を設定します。各デバイスでは、次の構成が必要です。デバイスを拡張 IP モードに設定する必要があり、完全な再起動が必要になる場合があります。
手記:
NorthStarがJunos OSを実行しているルーター上のMPC10ラインカードからのJTIテレメトリパケットを正しく処理するには、以下を確認してください。
リモートポートをin
[services analytics streaming-server server]
as 3000に設定足す
set services analytics export-profile profile-name payload-size 1400
NorthStar と HealthBot との統合を設定している場合は、デフォルトのリモートポート 4000 を使用し、リモート アドレスを HealthBot サーバの IP アドレスに設定します。
set chassis network-services enhanced-ip set services analytics streaming-server ns remote-address 192.168.10.100 set services analytics streaming-server ns remote-port 3000 set services analytics export-profile ns local-address 10.10.0.10 set services analytics export-profile ns reporting-rate 2 set services analytics export-profile ns format gpb set services analytics export-profile ns transport udp set services analytics sensor ifd server-name ns set services analytics sensor ifd export-name ns set services analytics sensor ifd resource /junos/system/linecard/interface/ set services analytics sensor ifl server-name ns set services analytics sensor ifl export-name ns set services analytics sensor ifl resource /junos/system/linecard/interface/logical/usage/ set services analytics sensor lsp server-name ns set services analytics sensor lsp export-name ns set services analytics sensor lsp resource /junos/services/label-switched-path/usage/ set services analytics sensor sr-te-color server-name ns set services analytics sensor sr-te-color export-name ns set services analytics sensor sr-te-color resource /junos/services/segment-routing/traffic-engineering/ingress/usage/ set services analytics sensor sid server-name ns set services analytics sensor sid export-name ns set services analytics sensor sid resource /junos/services/segment-routing/sid/usage/ set services analytics sensor sr-te-tunnels server-name ns set services analytics sensor sr-te-tunnels export-name ns set services analytics sensor sr-te-tunnels resource /junos/services/segment-routing/traffic-engineering/tunnel/ingress/usage/ set protocols mpls sensor-based-stats set protocols source-packet-routing telemetry statistics
この設定では、リモートアドレスはコレクターのIPアドレスです(データポートを介して到達可能)。ローカルアドレスは、ループバックまたはルーターIDのいずれか、デバイスを識別するためにデバイスプロファイルで設定されているものでなければなりません。
- NorthStarは、SR-TE LSPの帯域幅サイジングとコンテナLSPをサポートしています。この機能には、Junos OSリリース19.2R1以降が必要です。セグメントルーティングデータの収集を有効にするには、ルーターに追加の設定が必要です。例えば:
set groups jvision services analytics sensor sr-te-tunnels server-name ns set groups jvision services analytics sensor sr-te-tunnels export-name ns set groups jvision services analytics sensor sr-te-tunnels resource /junos/services/segment-routing/traffic-engineering/tunnel/ingress/usage/
- RPM(リアルタイム パフォーマンス監視)を使用すると、ネットワーク パフォーマンスをリアルタイムで監視し、ネットワーク効率を評価および分析できます。これを実現するために、RPMは監視とネットワーク追跡の目的で、ネットワーク内の他のIPホストとプローブのセットを交換します。
インターフェイスの遅延を測定するようにRPMプローブを設定します。次の例は、インターフェイス ge-0/1/1.0 からリモート アドレス 10.101.105.2(Junos OS を実行しているデバイス上)と、et-0/0/3:0.0 からリモート アドレス 10.10.10.1(Junos OS Evolved を実行しているデバイス上)へのプローブの設定を示しています。このリモートアドレスは、リンクのもう一方の端にあるノードのIPアドレスである必要があります。
手記:テスト名は、測定対象のインターフェイスと一致する必要があります(次の例では、テストge-0/1/1.0およびテストet-0/0/3:0.0)。
以下は、Junos OS を実行しているデバイスで RPM プローブを構成するサンプルです。
set services rpm probe northstar-ifl test ge-0/1/1.0 target address 10.101.105.2 set services rpm probe northstar-ifl test ge-0/1/1.0 probe-count 11 set services rpm probe northstar-ifl test ge-0/1/1.0 probe-interval 5 set services rpm probe northstar-ifl test ge-0/1/1.0 test-interval 60 set services rpm probe northstar-ifl test ge-0/1/1.0 source-address 10.101.105.1 set services rpm probe northstar-ifl test ge-0/1/1.0 moving-average-size 12 set services rpm probe northstar-ifl test ge-0/1/1.0 traps test-completion set services rpm probe northstar-ifl test ge-0/1/1.0 hardware-timestamp
以下は、Junos OS Evolvedを実行しているデバイスでRPMプローブを設定するためのサンプルです。
set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 target 10.10.10.1 set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 source-address 10.10.10.2 set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 probe-count 15 set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 probe-interval 1 set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 test-interval 20 set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 history-size 512 set services monitoring rpm owner northstar-ifl test et-0/0/3:0.0 moving-average-size 60
- Junos OSとJunos OS Evolvedを実行している両方のデバイスに対して、次のコマンドを使用してsyslogホストを設定します。 :
手記:
重要: PCS への重複した遅延データの作成を防ぐために、HealthBot との統合を構成する場合は、この手順を実行しないでください。
set system syslog host 192.168.18.1 daemon info set system syslog host 192.168.18.1 port 1514 set system syslog host 192.168.18.1 match-strings RPM_TEST_RESULTS
- RPMプローブはまだテレメトリデータを生成しませんが、 rpm-log.slax スクリプト(Junos OSを実行しているデバイスの場合)または evo-rpm-log.slax (Junos OS Evolvedを実行しているデバイスの場合)を使用して結果をプッシュできます。スクリプトは /opt/northstar/data/logstash/utils/junoscripts にあります。ルーターの /var/db/scripts/event にスクリプトをインストールします。
vi などのテキストエディタを使用して、次のように rpm-log.slax スクリプトに 1 つ追加します (バンドルされたスクリプトは将来のリリースで更新される予定です)。
/* Add embedded event policy to trigger the script */ var $event-definition = { <event-options> { <policy> { <name> “rpm-log”; <events> “ping_test_completed”; <events> “ping_test_failed”; <– Add this line <then> { <event-script> { <name> “rpm-log.slax”; <output-format> “xml”;
スクリプトをイベント/スクリプト構成に追加して有効にします。
手記:重要: PCS への重複した遅延データの作成を防ぐために、HealthBot との統合を構成する場合は、この手順を実行しないでください。
rpm-log.slax スクリプトを有効にするには、次のようにします。
router> start shell csh command "chmod 770 /var/db/scripts/event/rpm-log" router# set event-options event-script file rpm-log.slax
evo-rpm-log.slax スクリプトを有効にするには:
router> start shell csh command "chmod 770 /var/db/scripts/event/evo-rpm-log.slax" router# set event-options event-script file evo-rpm-log.slax
evo-rpm-log.slax スクリプトに次の行を追加して、60 秒ごとにデバイスに ping を実行するスクリプトをトリガーします。
router> set event-options generate-event ns-evo-rpm-log time-interval 60 router> set event-options policy ns-evo-rpm-log-policy events ns-evo-rpm-log then event-script evo-rpm-log.slax
rpm-log.slax スクリプトのテキストは次のとおりです。コメントは /* */ で囲まれています。
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import /junos.xsl"; param $test-owner = event-script-input/trigger-event/attribute-list/attribute [name=="test-owner"]/value; param $test-name = event-script-input/trigger-event/attribute-list/attribute [name=="test-name"]/value; param $delay-value; var $arguments = { <argument> { <name> “test-name”; <description> “Name of the RPM test”; } <argument> { <name> “test-owner”; <description> “ Name of the RPM probe owner”; } <argument> { <name> “delay-value”; <description> “Delay value to send out, used to generate fake data”; } } /* Add embedded event policy to trigger the script */ var $event-definition = { <event-options> { <policy> { <name> “rpm-log”; <events> “ping_test_completed”; <then> { <event-script> { <name> “rpm-log.slax”; <output-format> “xml”; } } } } } match / { <op-script-results> { /* Load Probe results */ var $get-probe-resultsrpc = <get-probe-results> { <owner> $test- owner; <test> $test-name;} var $probe-results = jcs:invoke($get-probe-resultsrpc); /* Extract data of interest */ var $target-address = $probe-results/probe-test-results/target-address; var $probe-type = $probe-results/probe-test-results/probe-type; var $loss-percentage = format-number(number($probe-results/probe-test- results/probe-test-moving-results/probe-test-generic-results/loss-percentage), '#.##'); var $jitter = format-number(number($probe-results/probe-test-results/probe- test-moving-results/probe-test-generic-results/probe-test-rtt/probe-summary-results/ jitter-delay) div 1000, '#.###'); var $avg-delay = { if ($delay-value) { number($delay-value); } else { expr format-number(number($probe-results/probe-test-results/probe-test- moving-results/probe-test-generic-results/probe-test-egress/probe-summary-results/avg- delay) div 1000, '#.##'); } } var $min-delay = { if ($delay-value) { number($delay-value); } else { expr format-number(number($probe-results/probe-test-results/probe-test- moving-results/probe-test-generic-results/probe-test-egress/probe-summary-results/min- delay) div 1000, '#.##'); } } var $max-delay = { if ($delay-value) { number($delay-value); } else { expr format-number(number($probe-results/probe-test-results/probe-test- moving-results/probe-test-generic-results/probe-test-egress/probe-summary-results/max- delay) div 1000, '#.##'); } } expr jcs:syslog("daemon.info","RPM_TEST_RESULTS: ","test-owner=",$test-owner," test-name=",$test-name," loss=",$loss-percentage," min-rtt=",$min-delay," max-rtt=", $max-delay," avgerage-rtt=",$avg-delay," jitter=",$jitter); } }
evo-rpm-log.slax スクリプトのテキストは以下の通りです。コメントは /* */ で囲まれています。
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; var $connection = jcs:open(); /* Create the RPC to get the probe results */ var $get-rpm-rpc = <rpc> { <get-rpm-probe-results> ; } /* Get the probe results */ var $probe-results = jcs:execute($connection, $get-rpm-rpc); match / { /* Load Probe results */ for-each($probe-results//probe-test-results) { /* Extract data of interest */ var $target-address = target-address; var $test-type = test-type; var $test-owner = owner-name; var $test-name = test-name; var $generic-aggregate-results = generic-aggregate-results; var $one-way = 'false'; mvar $min-delay = 0; mvar $max-delay = 0; mvar $avg-delay = 0; mvar $jitter = 0; mvar $loss-percentage = 0; for-each(generic-aggregate-results) { if (aggregate-type == 'moving average') { set $loss-percentage = format-number(number(loss-percentage), '#.##'); set $min-delay = -1; set $max-delay = -1; set $avg-delay = -1; set $jitter = -1; if (generic-aggregate-measurement) { for-each(generic-aggregate-measurement) { var $rtt_measurement = measurement-type[starts-with(normalize-space(), "Round trip time")]; var $jitter_measurement = measurement-type[starts-with(normalize-space(), "Round trip jitter")]; if ($rtt_measurement) { set $min-delay = format-number(number(measurement-min) div 1000, '#.##'); set $max-delay = format-number(number(measurement-max) div 1000, '#.##'); set $avg-delay = format-number(number(measurement-avg) div 1000, '#.##'); } else if ($jitter_measurement){ set $jitter = format-number(number(measurement-avg) div 1000, '#.##'); } } } expr jcs:syslog("daemon.info","RPM_TEST_RESULTS: ","test-owner=",$test-owner," test-name=",$test-name," loss=",$loss-percentage," min-rtt=",$min-delay," max-rtt=",$max-delay," avgerage-rtt=",$avg-delay," jitter=",$jitter," one-way=",$one-way); } } } }