AOSOMストリーミングガイド
AOSOMストリーミングの概要
AOSOMストリーミングはデモ用ソフトウェアであり、本番環境向けのものではありません。
カウンターデータ(perfmon)、アラート、イベント用のGoogle Protocol Buffer(protobuf)ストリームを生成するようにApstraを設定できます。各データ型は、独自の TCP ソケットを介してストリーミング レシーバに送信されます。3つのデータタイプがすべて同じストリーミングレシーバーに設定されている場合でも、Apstraサーバーとストリーミングレシーバーの間には3つの接続が作成されます。これにより、3つのタイプすべてを3つの異なるストリーミングレシーバーに送信することもできます。多くのオープンソースプロジェクトから選択することも、protobuf データをキャプチャ、保存、および検査するための独自のソリューションを開発することもできます。Apstraは、GitHubで利用可能な AOSOM-Streaming と呼ばれるプロジェクトを開発し、いくつかのオープンソースコンポーネントを使用してこれを実現する方法を示しました。AOSOM-Streaming プロジェクトは、AOS protobuf ストリームの使用方法を理解するのに役立ちます。これは、Apstra Telegraf入力プラグインを除き、デモンストレーションのみを目的としています。Apstraソフトウェアは、ストリーミングテレメトリソリューションの一部として使用できるように、このプラグインを完全にサポートしています。
Aosom Streamingプロジェクトは、Apstraサーバーからのテレメトリストリーミング情報を収集して可視化するためのパッケージ化されたソリューションを提供します。これにより、Webインターフェイスエクスペリエンスと、アラート、カウンター、Apstraイベントを処理するクエリ例が提供されます。このオープンソースプロジェクトは、 https://github.com/Apstra/aosom-streaming 時点で正式にGithubに住んでいます。
パッケージ化されたソリューションには、次のものが含まれます。
- Grafana に基づくグラフィカル インターフェイス (ポート 3000)
- カウンターとアラートのプロメテウス(ポート9090)
- イベント用 Influxdb (ポート 8086)
- 2つのコレクター、Telegrafに基づくデータベースごとに1つ。
グラファナ
Web ブラウザーから、URL http://<aosom-streaming>:3000 を入力し、ユーザー名 admin (デフォルト) とパスワード admin (デフォルト) を入力します。
Grafana GUI には、2 つの主要なセクション (左上) があります。 Apstra AOS Blueprintには 、全体的なテレメトリアラートとトラフィックスループットのほか、インターフェイステレメトリ用の個々のデバイスが表示されます。ブループリントは、Apstraの「telegraf」Dockerコンテナを使用して自動的に学習されます。これ以上の構成は必要ありません。
上のスクリーンショットでは、デモ用のApstra環境でトラフィックを観察し、CPU、トラフィック、エラーを集計しています。
特定のデバイスや個々のデバイスに基づいてテレメトリイベントをフィルタリングするには、上部のダッシュボードを 「Apstra AOSデバイス」に変更します。ここでは、ブループリントに2つのアクティブなルート異常があり、Apstraが2つのリーフスイッチのテレメトリを受信していることがわかります。
下にスクロールして、CPU、メモリなどのデバイス統計を表示します。
プロメテウス
Prometheus は、Aosom ストリーミング アプライアンスのアラートとデバイス テレメトリ カウンター ストレージに使用されます。ウェブブラウザから http://<aosom-streaming>:9090 のURLを入力して、Prometheus GUIにアクセスします。
受信イベントが表示されると、Apstraは各クエリを動的に作成します。クエリ名の例を表示するには、'execute' の下に入力を開始します。「アラート」から始めて、prometheusがApstraから受信した利用可能なアラートをタブ補完します。
BGP ネイバーがオフラインになる例を次に示します。
InfluxDB
InfluxDBは、テレメトリストリーミングからのApstraイベントを保存するために使用されます。ウェブブラウザから URL http://<aosom-streaming>:8083 を入力して InfluxDB にアクセスします。
利用可能なinfluxdbキーを、 フィールドキーの表示 や 測定値の表示などのクエリで表示できます。
測定値がわかったら、 <測定値から*を選択して データとキーを表示できます> -- この場合、LAGインターフェイスのステータスをキャプチャします。
influx-db アプリケーションの開発は、このドキュメントの範囲外です。
Aosom-Streaming を設定する
このプロジェクトの一部としてテレメトリ ストリーミングを構成するには、ファイルを編集variables.env
して実行make start
し、コンテナーを再起動します。Apstraサーバーの設定は必要ありません。データの開始、停止、およびクリアに関するドキュメントは、次の https://github.com/Apstra/aosom-streaming で入手できます。
telegrafプロジェクトは、Apstra APIに接続し、Apstraがリアルタイムテレメトリデータのストリーミングに使用するIP:Portをポストします。
Apstraサーバーのアップグレード後にAosomストリーミングを再設定する
Aosom ストリーミング VM の構築 (オプション)
独自の Aosom ストリーミング VM (Docker コンテナー) を構築できます。この手順では、基本的な Docker サーバーをセットアップする方法を示します。
Ubuntu16.04.2をインストールする
Ubuntu 16.04.2 ISO をダウンロードし、新しい VM をプロビジョニングします。デフォルトのユーザー名は aosom で、パスワードは admin です。
大規模なブループリントの場合は、RAM を少なくとも 8 GB、CPU を少なくとも 2 vCPU に変更することをお勧めします。より多くのディスク領域が必要になる場合もあります。
リソース | 数量 |
---|---|
Ram | 8GB |
Cpu | 2 vCPU |
ネットワーク | 1 vNIC |
パッケージのインストール
Ubuntu 16.04.2に基づく必要なパッケージをインストールします。
apt-get update
システムを更新して、すべてのパッケージが最新であることを確認します。
apt-get install docker docker-compose git make curl openssh-server
aosom@ubuntu:~$ sudo apt-get install docker docker-compose git make curl openssh-server [sudo] password for aosom: Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: bridge-utils cgroupfs-mount containerd dns-root-data dnsmasq-base docker.io git-man liberror-perl libnetfilter-conntrack3 libperl5.22 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libyaml-0-2 patch perl perl-modules-5.22 python python-backports.ssl-match-hostname python-cached-property python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema python-minimal python-mock python-ndg-httpsclient python-openssl python-pbr python-pkg-resources python-pyasn1 python-requests python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal rename runc ubuntu-fan xz-utils Suggested packages: mountall aufs-tools btrfs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make python-doc python-tk python-cryptography-doc python-cryptography-vectors python-enum34-doc python-funcsigs-doc python-mock-doc python-openssl-doc python-openssl-dbg python-setuptools doc-base python-ntlm python2.7-doc binutils binfmt-support make The following NEW packages will be installed: bridge-utils cgroupfs-mount containerd dns-root-data dnsmasq-base docker docker-compose docker.io git git-man liberror-perl libnetfilter-conntrack3 libperl5.22 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libyaml-0-2 patch perl perl-modules-5.22 python python-backports.ssl-match-hostname python-cached-property python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema python-minimal python-mock python-ndg-httpsclient python-openssl python-pbr python-pkg-resources python-pyasn1 python-requests python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal rename runc ubuntu-fan xz-utils make 0 upgraded, 54 newly installed, 0 to remove and 3 not upgraded. Need to get 32.4 MB of archives. After this operation, 174 MB of additional disk space will be used. Do you want to continue? [Y/n] y
aosom ユーザーを Docker グループに追加します。これにより、「aosom」はsudoにエスカレートすることなくDockerの構成を変更できます。
aosom@ubuntu:~/aosom-streaming$ sudo usermod -aG docker aosom Log out and log back in again for ‘aosom’ user to be properly added to the group.
AosomストリーミングDockerコンテナを「gitクローン」でコピーします。
aosom@ubuntu:~$ git clone https://github.com/Apstra/aosom-streaming.git Cloning into 'aosom-streaming'... remote: Counting objects: 303, done. remote: Total 303 (delta 0), reused 0 (delta 0), pack-reused 303 Receiving objects: 100% (303/303), 64.10 KiB | 0 bytes/s, done. Resolving deltas: 100% (176/176), done. Checking connectivity... done. aosom@ubuntu:~$
コンテナ再起動ポリシーの設定
AOSOMストリーミングパッケージでは、Docker再起動ポリシーは設定されません。これは、オーケストレーションツールチェーン次第です。aosom-streaming/docker-compose.ymlを開き、各サービスディレクティブに追加します restart: always
。これにより、サービスの再起動後に Docker コンテナーがオンラインになります。
git diff docker-compose.yml
aosom@ubuntu:~/aosom-streaming$ git diff docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml index 799d4c5..0d0fcc2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,7 @@ services: - prometheus ports: - "3000:3000" + restart: always # ------------------------------------------------------------------------- # Prometheus - @@ -30,6 +31,7 @@ services: - '-config.file=/etc/prometheus/prometheus.yml' ports: - '9090:9090' + restart: always # ------------------------------------------------------------------------- # influxdb @@ -43,6 +45,7 @@ services: ports: - "8083:8083" - "8086:8086" + restart: always # ------------------------------------------------------------------------- # Telegraf - Prom @@ -57,6 +60,7 @@ services: - /etc/localtime:/etc/localtime ports: - '6666:6666' + restart: always # ------------------------------------------------------------------------- # Telegraf - Influx @@ -71,3 +75,4 @@ services: - /etc/localtime:/etc/localtime ports: - '4444:4444' + restart: always
variables.env
Aosom-ストリーミングアプリケーションのセットアップセクションごとにコンテナをセットアップして起動します。
システムホスト名の変更
aosom /etc/hostname
に変更し、ループバック IP を /etc/hosts
ubuntu から aosom に変更します。
トラブルシューティング
ほとんどのトラブルシューティング情報は https://github.com/Apstra/aosom-streaming の Github メイン ページに含まれていますが、いくつかの簡単なコマンドを実行して、環境が正常であることを確認できます。
ApstraからAosomストリーミングへのログを確認する
Docker ログを aosomstreaming_telegraf-influx_1 で実行する
ブループリントIDと、AOSでテレメトリイベントが発生すると、いくつかのinfluxdbの「書き込み」イベント(BGP、活性、構成の逸脱など)が表示されます。
GetBlueprints() - Id 0033cf3f-41ed-4ddc-91f5-ea68318fba9b 2017-07-31T23:59:13Z D! Finished to Refresh Data, will sleep for 20 sec 2017-07-31T23:59:15Z D! Output [influxdb] buffer fullness: 11 / 10000 metrics. 2017-07-31T23:59:15Z D! Output [influxdb] wrote batch of 11 metrics in 5.612057ms 2017-07-31T23:59:20Z D! Output [influxdb] buffer fullness: 4 / 10000 metrics. 2017-07-31T23:59:20Z D! Output [influxdb] wrote batch of 4 metrics in 5.349171ms 2017-07-31T23:59:25Z D! Output [influxdb] buffer fullness: 11 / 10000 metrics. 2017-07-31T23:59:25Z D! Output [influxdb] wrote batch of 11 metrics in 4.68295ms 2017-07-31T23:59:30Z D! Output [influxdb] buffer fullness: 4 / 10000 metrics. 2017-07-31T23:59:30Z D! Output [influxdb] wrote batch of 4 metrics in 5.007029ms GetBlueprints() - Id 0033cf3f-41ed-4ddc-91f5-ea68318fba9b 2017-07-31T23:59:33Z D! Finished to Refresh Data, will sleep for 20 sec
コンテナが実行されていることを確認する
予想されるすべてのコンテナーが実行されていることを確認して確認するには、次のコマンドを実行します docker ps
。
aosom@ubuntu:~/aosom-streaming$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e03d003a2ef9 grafana/grafana:4.1.2 "/run.sh" 3 minutes ago Up 3 minutes 0.0.0.0:3000->3000/tcp aosomstreaming_grafana_1 3042d45f1107 prom/prometheus:v1.5.2 "/bin/prometheus -con" 3 minutes ago Up 3 minutes 0.0.0.0:9090->9090/tcp aosomstreaming_prometheus_1 429328fbb5ac apstra/telegraf:1.2 "telegraf -debug" 3 minutes ago Up 3 minutes 0.0.0.0:6666->6666/tcp aosomstreaming_telegraf-prom_1 0a84241e1366 apstra/telegraf:1.2 "telegraf -debug" 3 minutes ago Up 3 minutes 0.0.0.0:4444->4444/tcp aosomstreaming_telegraf-influx_1 f4d2deb0e428 influxdb:1.1.1-alpine "/entrypoint.sh influ" 3 minutes ago Up 3 minutes 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp aosomstreaming_influxdb_1