Contrail Networking における vRouter セッション分析
ジュニパーネットワークスは®、Kubernetes オーケストレーション環境で Cloud-Native Contrail Networking(CN2)リリース 22.1 以降を使用して、環境における vRouter トラフィックの収集、ストレージ、クエリーをサポートします。
コレクター モジュール
CN2は、ユーザーの可視化エンティティ(UVE)とトラフィック情報(セッション)を収集し、トラフィック分析とトラブルシューティングを行います。モジュールはこれらの collector
オブジェクトを保存し、収集された情報にアクセスするための API を提供します。
CN2 vRouterエージェントは、イベントの作成または削除時にデータレコードをコレクターにエクスポートします。
コレクターの導入
名前空間(NS)のContrailクラスターには、以下のコンポーネントが contrail
インストールされています。
-
コレクターマイクロサービス —受信イベントを収集します。
-
InfluxDB — 時系列データを格納するために特別に構築された時系列データベース。時系列データの視覚化ツールとして Grafana と連携します。
-
Fluentd - ログ収集、解析、およびOpenSearch などの他のサービスへの配信を実行するロギング エージェント。
-
OpenSearch — OpenSearch は、AWS OpenSearch Stack の検索および分析エンジンで、あらゆるタイプのデータをリアルタイムで検索および分析します。
-
OpenSearch ダッシュボード — OpenSearch データを視覚化し、OpenSearch スタックをナビゲートできるユーザー インターフェイスです。
データ収集
図 1 は、データ収集を示しています。

UVEs
UVE は、UVE の名前で指定されたインデックスの OpenSearch に格納されます。
セッション
セッションレコードはInfluxDBに格納されます。これらのレコードは、すべてのエージェントからイベントとしてプッシュされます。このデータは、長時間にわたりダウンサンプリングされます。ライブ、ダウンサンプルテーブル、およびダウンサンプリングウィンドウの保持期間は、設定を使用して設定可能です。
列 | のフィルター可能な | 詳細 |
---|---|---|
vn |
はい | クライアント仮想ネットワーク |
vmi |
はい | インターフェイス |
remote_vn |
はい | サーバー仮想ネットワーク |
vrouter_ip |
はい | エージェントIP |
local_ip |
はい | クライアント IP |
client_port |
はい | クライアント ポート |
remote_ip |
はい | サーバー IP |
server_port |
はい | サーバー ポート |
protocol |
はい | プロトコル |
label.local.<label-name> |
はい | クライアントポッドラベル(例えば、ラベルサイトを持つクライアントポッドは、データベース内のタグに label.local.site マップされます)。 |
label.remote.<label-name> |
はい | サーバーポッドラベル |
forward_sampled_bytes |
いいえ | 送信バイト |
forward_sampled_pkts |
いいえ | 送信されたパケット |
reverse_sampled_bytes |
いいえ | 受信バイト |
reverse_sampled_pkts |
いいえ | 受信したパケット |
total_bytes |
いいえ | 交換した総バイト数 |
データ収集の設定
vRouterエージェントがサービスにメッセージを送信 SessionEndpoint
するように fluentd
設定するには、以下の3つのコマンドを実行します。Contrail-analytics 名前空間のネイティブ サービスのクラスタ IP アドレスに置き換えます <cluster-ip>
。
kubectl -n contrail patch vrouter contrail-vrouter-masters --type=merge -p '{"spec":{"agent":{"default":{"collectors":["<cluster-ip>:24224"]}}}}'
kubectl -n contrail patch vrouter contrail-vrouter-nodes --type=merge -p '{"spec":{"agent":{"default":{"collectors":["<cluster-ip>:24224"]}}}}'
kubectl -n contrail patch gvc default-global-vrouter-config --type=merge -p '{"spec":{"flowExportRate": 10000}}'
3 つの設定コマンドを実行した後、vRouter を再起動して設定を有効にします。vRouter を再起動するには、次のコマンドを実行します。
kubectl -n contrail delete $(kubectl get pods -l 'app in (contrail-vrouter-masters, contrail-vrouter-nodes)' -n contrail -o name)
コレクター クエリ
モジュールは collector
、アクセス用のクエリ インターフェイスを提供します。
クエリの実行
クエリー例
以下のクエリは、名前空間の一意の送信元と宛先のペア(ラベル別)間で交換される総バイト数を contrail-analytics
取得します。
{ "granularity": 3600, "column": [ { "name": "total_bytes", "aggregation": "sum" }, { "name": "/^label.*/", "regex": true } ], "skip_columns": [ "label.remote.pod-template-hash", "label.local.pod-template-hash" ], "range":{ "start_time": -3600 }, "filter": [ { "field": "label.local.namespace", "operator": "==", "value": "contrail-analytics" }, { "field": "label.remote.namespace", "operator": "==", "value": "contrail-analytics" } ] }
クエリ応答の例
{ "status": "success", "total": 5, "data": { "resultType": "matrix", "result": [ { "metric": { "label.local.namespace": "contrail-analytics", "label.remote.app": "collector", "label.remote.namespace": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 31012095 ] ] }, { "metric": { "label.local.namespace": "contrail-analytics", "label.remote.app": "opensearch", "label.remote.chart": "opensearch", "label.remote.controller-revision-hash": "opensearch-7fcc8df678", "label.remote.namespace": "contrail-analytics", "label.remote.release": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 221493 ] ] }, { "metric": { "label.local.controller-revision-hash": "5599999fc7", "label.local.namespace": "contrail-analytics", "label.local.pod-template-generation": "1", "label.remote.namespace": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 23349247 ] ] }, { "metric": { "label.local.app": "collector", "label.local.namespace": "contrail-analytics", "label.remote.controller-revision-hash": "influxdb-7bdd86f8c", "label.remote.namespace": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 10412552 ] ] }, { "metric": { "label.local.app": "opensearch-dashboards", "label.local.namespace": "contrail-analytics", "label.local.release": "contrail-analytics", "label.remote.app": "opensearch", "label.remote.chart": "opensearch", "label.remote.controller-revision-hash": "opensearch-7fcc8df678", "label.remote.namespace": "contrail-analytics", "label.remote.release": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 25152 ] ] } ] } }