34.5. Network Observability Operator の設定
Flow Collector API リソースを更新して、Network Observability Operator とそのマネージドコンポーネントを設定できます。Flow Collector は、インストール中に明示的に作成されます。このリソースはクラスター全体で動作するため、単一の FlowCollector
のみが許可され、cluster
という名前を付ける必要があります。
34.5.1. FlowCollector リソースを表示する
OpenShift Container Platform Web コンソールで YAML を直接表示および編集できます。
手順
- Web コンソールで、Operators → Installed Operators に移動します。
- NetObserv Operator の Provided APIs 見出しの下で、Flow Collector を選択します。
-
cluster を選択し、YAML タブを選択します。そこで、
FlowCollector
リソースを変更して Network Observability Operator を設定できます。
以下の例は、OpenShift Container Platform Network Observability Operator のサンプル FlowCollector
リソースを示しています。
FlowCollector
リソースのサンプル
apiVersion: flows.netobserv.io/v1beta1 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: DIRECT agent: type: EBPF 1 ebpf: sampling: 50 2 logLevel: info privileged: false resources: requests: memory: 50Mi cpu: 100m limits: memory: 800Mi processor: logLevel: info resources: requests: memory: 100Mi cpu: 100m limits: memory: 800Mi conversationEndTimeout: 10s logTypes: FLOW 3 conversationHeartbeatInterval: 30s loki: 4 url: 'http://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network' statusUrl: 'https://loki-query-frontend-http.netobserv.svc:3100/' authToken: FORWARD tls: enable: true caCert: type: configmap name: loki-gateway-ca-bundle certFile: service-ca.crt consolePlugin: register: true logLevel: info portNaming: enable: true portNames: "3100": loki quickFilters: 5 - name: Applications filter: src_namespace!: 'openshift-,netobserv' dst_namespace!: 'openshift-,netobserv' default: true - name: Infrastructure filter: src_namespace: 'openshift-,netobserv' dst_namespace: 'openshift-,netobserv' - name: Pods network filter: src_kind: 'Pod' dst_kind: 'Pod' default: true - name: Services network filter: dst_kind: 'Service'
- 1
- エージェント仕様
spec.agent.type
はEBPF
でなければなりません。eBPF は、OpenShift Container Platform でサポートされる唯一のオプションです。 - 2
- サンプリング仕様
spec.agent.ebpf.sampling
を設定して、リソースを管理できます。サンプリング値が低いと、大量の計算、メモリー、およびストレージリソースが消費される可能性があります。これは、サンプリング比の値を指定することで軽減できます。値 100 は、100 ごとに 1 つのフローがサンプリングされることを意味します。0 または 1 の値は、すべてのフローがキャプチャーされることを意味します。値が低いほど、返されるフローが増加し、派生メトリックの精度が向上します。デフォルトでは、eBPF サンプリングは値 50 に設定されているため、50 ごとに 1 つのフローがサンプリングされます。より多くのサンプルフローは、より多くのストレージが必要になることにも注意してください。デフォルト値から始めて経験的に調整し、クラスターが管理できる設定を決定することをお勧めします。 - 3
- オプションの仕様
spec.processor.logTypes
、spec.processor.conversationHeartbeatInterval
、およびspec.processor.conversationEndTimeout
を設定して、会話追跡を有効にすることができます。有効にすると、Web コンソールで会話イベントをクエリーできるようになります。spec.processor.logTypes
の値は次のとおりです:FLOWS
CONVERSATIONS
、ENDED_CONVERSATIONS
、またはALL
。ストレージ要件はALL
で最も高く、ENDED_CONVERSATIONS
で最も低くなります。 - 4
- Loki 仕様である
spec.loki
は、Loki クライアントを指定します。デフォルト値は、Loki Operator のインストールセクションに記載されている Loki インストールパスと一致します。Loki の別のインストール方法を使用した場合は、インストールに適切なクライアント情報を指定します。 - 5
spec.quickFilters
仕様は、Web コンソールに表示されるフィルターを定義します。Application
フィルターキー、src_namespace
およびdst_namespace
は否定 (!
) されているため、Application
フィルターは、openshift-
またはnetobserv
namespace から 発信されていない、または宛先がないすべてのトラフィックを表示します。詳細は、以下のクイックフィルターの設定を参照してください。
関連情報
会話追跡の詳細は、Working with conversations を参照してください。
34.5.2. Kafka を使用した Flow Collector リソースの設定
Kafka を使用するように FlowCollector
リソースを設定できます。Kafka インスタンスを実行する必要があり、そのインスタンスで OpenShift Container Platform Network Observability 専用の Kafka トピックを作成する必要があります。詳細は、AMQ Streams を使用する Kafka など、Kafka ドキュメントを参照してください。
以下の例は、OpenShift Container Platform Network Observability Operator の FlowCollector
リソースを変更して Kafka を使用する方法を示しています。
FlowCollector
リソースの Kafka 設定のサンプル
deploymentModel: KAFKA 1 kafka: address: "kafka-cluster-kafka-bootstrap.netobserv" 2 topic: network-flows 3 tls: enable: false 4
- 1
- Kafka デプロイメントモデルを有効にするには、
spec.deploymentModel
をDIRECT
ではなくKAFKA
に設定します。 - 2
spec.kafka.address
は、Kafka ブートストラップサーバーのアドレスを参照します。ポート 9093 で TLS を使用するため、kafka-cluster-kafka-bootstrap.netobserv:9093
など、必要に応じてポートを指定できます。- 3
spec.kafka.topic
は、Kafka で作成されたトピックの名前と一致する必要があります。- 4
spec.kafka.tls
を使用して、Kafka との間のすべての通信を TLS または mTLS で暗号化できます。有効にした場合、Kafka CA 証明書は、flowlogs-pipeline
プロセッサーコンポーネントがデプロイされている namespace (デフォルト:netobserv
) と eBPF エージェントがデプロイされている namespace (デフォルト:netobserv-privileged
) の両方で ConfigMap または Secret として使用できる必要があります。spec.kafka.tls.caCert
で参照する必要があります。mTLS を使用する場合、クライアントシークレットはこれらの namespace でも利用でき (たとえば、AMQ Streams User Operator を使用して生成できます)、spec.kafka.tls.userCert
で参照される必要があります。
34.5.3. 強化されたネットワークフローデータをエクスポートする
オプションでネットワークフローを Kafka に送信して、Splunk、Elasticsearch、Fluentd などの Kafka 入力をサポートするプロセッサーまたはストレージでネットワークフローを利用できるようにすることができます。
前提条件
- インストールされた Kafka
手順
- Web コンソールで、Operators → Installed Operators に移動します。
- NetObserv Operator の Provided APIs 見出しの下で、Flow Collector を選択します。
- cluster を選択し、YAML タブを選択します。
FlowCollector
を編集して、spec.exporters
を次のように設定します。apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: exporters: - type: KAFKA kafka: address: "kafka-cluster-kafka-bootstrap.netobserv" topic: netobserv-flows-export 1 tls: enable: false 2
- 1
- Network Observability Operator は、すべてのフローを設定された Kafka トピックにエクスポートします。
- 2
- Kafka との間のすべての通信を SSL/TLS または mTLS で暗号化できます。有効にした場合、Kafka CA 証明書は、
flowlogs-pipeline
プロセッサーコンポーネントがデプロイされている名前空間 (デフォルト: netobserv) で、ConfigMap または Secret として使用できる必要があります。これはspec.exporters.tls.caCert
で参照する必要があります。mTLS を使用する場合、クライアントシークレットはこれらの名前空間でも利用可能であり (たとえば、AMQ Streams ユーザーオペレーターを使用して生成できます)、spec.exporters.tls.userCert
で参照される必要があります。
- 設定後、ネットワークフローデータを JSON 形式で利用可能な出力に送信できます。詳細は、ネットワークフロー形式のリファレンス を参照してください。
関連情報
フロー形式の指定の詳細は、ネットワークフロー形式リファレンス を参照してください。
34.5.4. Flow Collector リソースの更新
OpenShift Container Platform Web コンソールで YAML を編集する代わりに、flowcollector
カスタムリソース (CR) にパッチを適用することで、eBPF サンプリングなどの仕様を設定できます。
手順
次のコマンドを実行して、
flowcollector
CR にパッチを適用し、spec.agent.ebpf.sampling
値を更新します。$ oc patch flowcollector cluster --type=json -p "[{"op": "replace", "path": "/spec/agent/ebpf/sampling", "value": <new value>}] -n netobserv"
34.5.5. クイックフィルターの設定
FlowCollector
リソースでフィルターを変更できます。値を二重引用符で囲むと、完全一致が可能になります。それ以外の場合、テキスト値には部分一致が使用されます。キーの最後にあるバング (!) 文字は、否定を意味します。YAML の変更に関する詳細なコンテキストは、サンプルの FlowCollector
リソースを参照してください。
フィルターマッチングタイプ "all of" または "any of" は、ユーザーがクエリーオプションから変更できる UI 設定です。これは、このリソース設定の一部ではありません。
使用可能なすべてのフィルターキーのリストを次に示します。
表34.2 フィルターキー
Universal* | Source | 送信先 | 説明 |
---|---|---|---|
namespace |
|
| 特定の namespace に関連するトラフィックをフィルタリングします。 |
name |
|
| 特定の Pod、サービス、またはノード (ホストネットワークトラフィックの場合) など、特定のリーフリソース名に関連するトラフィックをフィルター処理します。 |
kind |
|
| 特定のリソースの種類に関連するトラフィックをフィルタリングします。リソースの種類には、リーフリソース (Pod、Service、または Node)、または所有者リソース (Deployment および StatefulSet) が含まれます。 |
owner_name |
|
| 特定のリソース所有者に関連するトラフィックをフィルタリングします。つまり、ワークロードまたは Pod のセットです。たとえば、Deployment 名、StatefulSet 名などです。 |
resource |
|
|
一意に識別する正規名で示される特定のリソースに関連するトラフィックをフィルタリングします。正規の表記法は、namespace の種類の場合は |
address |
|
| IP アドレスに関連するトラフィックをフィルタリングします。IPv4 と IPv6 がサポートされています。CIDR 範囲もサポートされています。 |
mac |
|
| MAC アドレスに関連するトラフィックをフィルタリングします。 |
port |
|
| 特定のポートに関連するトラフィックをフィルタリングします。 |
host_address |
|
| Pod が実行しているホスト IP アドレスに関連するトラフィックをフィルタリングします。 |
protocol | 該当なし | 該当なし | TCP や UDP などのプロトコルに関連するトラフィックをフィルタリングします。 |
-
ソースまたは宛先のいずれかのユニバーサルキーフィルター。たとえば、フィルタリング
name: 'my-pod'
は、使用される一致タイプ (Match all または Match any) に関係なく、my-pod
からのすべてのトラフィックとmy-pod
へのすべてのトラフィックを意味します。