Contrail Networking における vRouter セッション分析
ジュニパーネットワークスは、Kubernetes オーケストレーション環境でクラウドネイティブの Contrail® Networking リリース 22.1 以降を™使用して、環境における vRouter トラフィックの収集、ストレージ、クエリーをサポートします。
コレクター モジュール
Contrail Networking は、ユーザーに表示されるエンティティ(UVE)とトラフィック情報(セッション)を収集し、トラフィックの分析とトラブルシューティングを行います。モジュールは collector 、これらのオブジェクトを格納する機能を提供し、収集された情報にアクセスするための API を提供します。
Contrail Networking 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つのコマンドを実行します。クラスタの 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
]
]
}
]
}
}