It is the top of the page

Link for moving within the page
To text (c)

このウェブサイトではサイトの利便性の向上のためにクッキーを利用します。サイトの閲覧を続行されるには、クッキーの使用にご同意いただきますようお願いします。
お客様のブラウザの設定によりクッキーの機能を無効にすることもできます。詳細はこちら

The main part starts here.

  1. ナレッジセンター
  2. 匠コラム

番外編:OSSツールで作る、Telemetry初めの一歩 - 前編 -

匠コラム
監視/分析
ネットワーク
可視化

ビジネス推進本部 第1応用技術部
コアネットワークチーム
井上 勝晴
ハディ ザケル

これまで3回に渡り、本連載コラムでは次世代SNMPとも呼べる「Telemetry」について、その登場背景や技術要素を説明しました。本コラムでは、この「Telemetry」技術をより身近に触れられるよう、OSS(Open Source Software)を活用した「Telemetry環境の構築方法」をご紹介したいと思います。

連載インデックス

Telemetry環境構築 – ゴールイメージ

Network deviceとCollectorで構成されるStreaming Telemetry環境を構築する際、TelemetryのData構造と通信方式を先ず検討する必要があります。これらは前回のコラムで説明したように、TransportにgRPC、EncodingにGPB または JSON、Data modelにOpenConfig、を使用するのが一般的です。ここで一つ注意点ですが、gRPCは機器に対するSubscribe時にNetwork device各社のRPC(Remote Procedure Call)が使用されるため、各社毎の独自性(proprietary )が残ってしまっています。そのため、図1にあります通り、Telemetry 情報の第1次受付口(以下 Frontend)としてのCollectorは、Cisco Systems、Arista Networksが各々Githubで公開しているCollectorツールを用います。また、MessagingシステムにKafkaを、データの収集・可視化にはElastic Stackを使用します。以下が、これから作成するCollector環境となります。

図1:OSSで作る、Telemetry環境

構築方法

それでは、必要なコンポネントとなる、Network DeviceとCollectorの順に構築方法を記載します。

Network Device
Telemetry 情報の発信側(ルータ製品)として、Cisco Systems、Juniper Networks、Arista Networks 社の仮想ルータが利用可能です。今回の環境では、CiscoとArista社の仮想ルータを利用していますが、後述のデータ加工スクリプトがあれば、Juniper社の仮想ルータからのTelemetry情報も同じ基盤上で収集・可視化は可能です。本コラムの内容では、データ加工スクリプトを利用せず、確認できる内容をベースに記載していますため、Network Deviceとして、Cisco と Arista 社の仮想ルータを用いています。
それでは、それぞれの仮想ルータの概要、入手方法、設定方法について下記に記載します。
Network Device:Cisco IOS XRv
Cisco社の仮想ルータである、IOS XRvのイメージファイルは、購入頂いた上での利用も可能ですが、制限付きのものであれば、https://upload.cisco.com/cgi-bin/swc/fileexg/main.cgi?CONTYPES=Cisco-IOS-XRv&msg=Download+complete こちらのページから入手可能です。※アカウント登録が必要
インストール等々については、本コラムでは割愛させていただき、ネット上の一般的なブログ情報を参考にしていただければと思います。ブログ1, ブログ2
では、Telemetry 情報発信を有効にするために必要な設定ですが、表1の通り、大きくわけて3つのパートから成り立っています。

表1:Cisco IOS XRv の必要な設定

Network Device:Juniper vMX
Juniper社の仮想ルータである、vMX も購入頂いた上での利用も可能ですが、制限付きのもJuniper のページから入手可能です。既知の情報として、コーポレートメールアカウントであれば、メーカのアカウント作成がスムーズで、こちらにあります通り、フリーアカウントだとアカウント作成完了するまで少し時間がかかる可能性があります。
Cisco 社の仮想ルータと同様、Juniper vMX のインストール方法は Web 上でブログの形で公開されている記事が多く、本コラムでは割愛させていただき、Telemetry 機能の有効化の部分について記載させていただきます。vMX(その他物理 MX も同様)の場合、gRPC/OpenConfig を有効化するためには、追加パッケージが必要です。一つは、OpenConfig モデルに対応させるためのパッケージで、もう一つは gRPC セッションの終端のためのパッケージになります。

表2:Juniper vMX で必要な追加パッケージ

上記のパッケージインストールに合わせて、デバイスに対しては下記の設定追記が必要です。※ gRPCサービスの有効化
set system services extension-service request-response grpc clear-text

Network Device:Arista vEOS
Arista社の仮想スイッチである、vEOS の場合、利用するのはラボ利用限定版の vEOS-lab になります。入手からインストールまでは、Cisco、Juniper 社と同様、各種ブログの情報が参考になるため、本コラムでは割愛とさせていただきます。ブログ1
vEOS の場合もデバイス側に、エージェントソフトのインストールが必要です。

表3:Arista vEOS で必要な追加パッケージ

機器側の設定情報として、TerminAttr デーモンの起動設定とデバイス側で待ち受けるポート番号の指定が必要です。
daemon TerminAttr
exec /mnt/flash/TerminAttr -disableaaa -grpcaddr 10.44.101.81:6042
no shutdown

以上で、Cisco、Juniper、Arista 社のTelemetry 情報収集環境が構築完了です。Juniper 社の Frontend tool として現在調査中のものがあるため(本コラムの後編でご紹介)、本コラムでは Cisco 社、Arista 社からの Telemetry 情報を統一基盤上で可視化するところまで目指しています。

Collector:Docker準備
本コラムではContainerを用いてCollectorを構築します。そのため、以下のように先ずDocker環境の準備を行います。※筆者の環境では、OSにCentOS Linux release 7.5.1804 (Core) を使用しています。

    systemctl stop firewalld.service
    yum install -y python-pip python-devel git epel-release
    yum install -y docker
    systemctl mask firewalld.service
    systemctl enable docker.service
    setenforce 0 (vi /etc/selinux/config -> SELINUX=disabled)
    <再起動>
    systemctl start docker.service
    pip install docker-compose
    yum install - y unzip wget curl jq coreutils
    

Collector:Kafka
ContainerにてMessagingシステムのKafkaをInstallします。

図2:Kafka 構築手順
1. KafkaをGitより取得する
git clone https://github.com/wurstmeister/kafka-docker.git
2. docker-compose.ymlの編集
cd kafka-docker/
vi docker-compose.yml
===============================================
version: '2'
services:
    zookeeper:
    image: wurstmeister/zookeeper
    ports:
        - "2181:2181"
    kafka:
    build: .
    ports:
        - " 32768:9092"
    environment:
        KAFKA_ADVERTISED_HOST_NAME: 10.44.160.97
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
===============================================
※ KAFKA_ADVERTISED_HOST_NAME には環境に応じたIPを設定します。
3. 起動
docker-compose up もしくは docker-compose up -d
※初回Build時は時間が掛かります

まとめ

今回の番外編では、OSSツールや仮想アプライアンスを使った環境構築手順をご紹介しています。前編の本コラムでは、Kafka までの構築手順を記載しており、後編にはその他コンポネントの構築手順を記載していきます。

関連記事

執筆者プロフィール

井上 勝晴
ネットワンシステムズ株式会社 ビジネス推進本部 応用技術部 コアネットワークチーム所属
エンタープライズ・サービスプロバイダのネットワーク提案・導入を支援する業務に、10年以上にわたり従事
現在はSDN・クラウドのエンジニアになるべく格闘中

  • MCPC1級

ハディ ザケル
ネットワンシステムズ株式会社 ビジネス推進本部 応用技術部 コアネットワークチーム所属
主にハイエンドルータ製品の担当として、評価・検証および様々な案件サポートに従事
現在は、SP-SDN分野、コントローラ関連、標準化動向について調査及び連携検証を実施中

Webからのお問い合わせはこちらから

ナレッジセンターを検索する

カテゴリーで検索

タグで検索