네트워크 관찰 기능
Network Observability Operator
초록
1장.
1.1. Network Observability Operator 1.4.2
1.1.1. CVE
1.2. Network Observability Operator 1.4.1
1.2.1. CVE
1.2.2. 버그 수정
1.3. Network Observability Operator 1.4.0
1.3.1.
1.3.2. 새로운 기능 및 개선 사항
1.3.2.1. 주요 개선 사항
1.3.2.2.
1.3.2.3.
1.3.2.4.
1.3.2.5.
1.3.2.6.
1.3.3. 버그 수정
1.3.4. 확인된 문제
1.4. Network Observability Operator 1.3.0
1.4.1.
1.4.2. 새로운 기능 및 개선 사항
1.4.2.1.
1.4.2.2.
1.4.2.3.
1.4.2.4.
1.4.3. 더 이상 사용되지 않는 기능
1.4.3.1.
1.4.4. 버그 수정
1.4.5. 확인된 문제
1.5. Network Observability Operator 1.2.0
1.5.1.
1.5.2. 새로운 기능 및 개선 사항
1.5.2.1.
1.5.2.2.
1.5.2.3.
1.5.3. 버그 수정
1.5.4. 알려진 문제
1.5.5. 주요 기술 변경 사항
1.6. Network Observability Operator 1.1.0
1.6.1.
2장.
2.1.
2.2.
2.3.
2.3.1.
- 프로세서
- Operator
2.3.2.
2.3.3.
3장.
3.1.
내보내기 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
추가 리소스
3.2.
사전 요구 사항
- OpenShift Container Platform 4.10+
- Linux Kernel 4.18+
프로세스
- OpenShift Container Platform 웹 콘솔에서 Operator → OperatorHub를 클릭합니다.
검증
3.2.1.
apiVersion: v1 kind: Secret metadata: name: loki-s3 namespace: netobserv 1 stringData: access_key_id: QUtJQUlPU0ZPRE5ON0VYQU1QTEUK access_key_secret: d0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWQo= bucketnames: s3-bucket-name endpoint: https://s3.eu-central-1.amazonaws.com region: eu-central-1
검증
추가 리소스
3.2.2.
프로세스
apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: loki namespace: netobserv 1 spec: size: 1x.small storage: schemas: - version: v12 effectiveDate: '2022-06-01' secret: name: loki-s3 type: s3 storageClassName: gp3 2 tenants: mode: openshift-network
중요- 생성을 클릭합니다.
3.2.2.1.
1x.small | |||
---|---|---|---|
|
|
|
|
|
|
|
|
| 없음 | 2 | 3 |
|
|
|
|
|
| 63Gi | 139Gi |
| 150Gi | 300Gi | 450Gi |
추가 리소스
3.2.3.
spec: limits: global: ingestion: ingestionBurstSize: 40 ingestionRate: 20 maxGlobalStreamsPerTenant: 25000 queries: maxChunksPerQuery: 2000000 maxEntriesLimitPerQuery: 10000 maxQuerySeries: 3000
3.2.4.
프로세스
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: netobserv-reader 1
rules:
- apiGroups:
- 'loki.grafana.com'
resources:
- network
resourceNames:
- logs
verbs:
- 'get'
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: netobserv-writer rules: - apiGroups: - 'loki.grafana.com' resources: - network resourceNames: - logs verbs: - 'create'
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: netobserv-writer-flp
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: netobserv-writer
subjects:
- kind: ServiceAccount
name: flowlogs-pipeline 1
namespace: netobserv
- kind: ServiceAccount
name: flowlogs-pipeline-transformer
namespace: netobserv
3.2.5.
사전 요구 사항
프로세스
$ oc adm policy add-cluster-role-to-user netobserv-reader user1
3.3.
사전 요구 사항
-
cluster-admin
권한이 있어야 합니다.
프로세스
- OpenShift Container Platform 웹 콘솔에서 Operator → OperatorHub를 클릭합니다.
- Operators → 설치된 Operator로 이동합니다.
- 생성을 클릭합니다.
검증
3.4.
추가 리소스
Flow Collector 사양 및 Network Observability Operator 아키텍처 및 리소스 사용에 대한 자세한 내용은 다음 리소스를 참조하십시오.
3.5. Kafka 설치 (선택 사항)
Kafka Operator는 대규모 환경에서 지원됩니다. Kafka는 보다 탄력적이고 확장 가능한 방식으로 네트워크 흐름 데이터를 전달하기 위해 높은 처리량과 대기 시간이 짧은 데이터 피드를 제공합니다. Loki Operator 및 Network Observability Operator가 설치된 것처럼 Operator Hub에서 Kafka Operator를 Red Hat AMQ Streams 로 설치할 수 있습니다. Kafka를 스토리지 옵션으로 구성하려면 " FlowCollector 리소스 구성"을 참조하십시오.
Kafka를 설치 제거하려면 설치하는 데 사용한 방법과 일치하는 제거 프로세스를 참조하십시오.
추가 리소스
3.6. Network Observability Operator 설치 제거
OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하여 Network Observability Operator를 설치 제거하고 Operator → 설치된 Operator 영역에서 작업할 수 있습니다.
프로세스
FlowCollector
사용자 지정 리소스를 제거합니다.- 제공된 API 열에서 Network Observability Operator 옆에 있는 흐름 수집기 를 클릭합니다.
-
클러스터 의 옵션 메뉴
를 클릭하고 FlowCollector 삭제 를 선택합니다.
Network Observability Operator를 설치 제거합니다.
- Operator → 설치된 Operator 영역으로 돌아갑니다.
-
Network Observability Operator 옆에 있는 옵션 메뉴
를 클릭하고 Operator 설치 제거를 선택합니다.
-
홈 → 프로젝트 및
openshift-netobserv-operator
선택 - 작업으로 이동하여 프로젝트 삭제를 선택합니다.
FlowCollector
CRD(사용자 정의 리소스 정의)를 제거합니다.- 관리 → 클러스터 리소스 정의로 이동합니다.
-
FlowCollector 를 찾고
옵션 메뉴를 클릭합니다.
Delete CustomResourceDefinition 을 선택합니다.
중요Loki Operator 및 Kafka는 설치된 경우 그대로 유지되며 별도로 제거해야 합니다. 또한 오브젝트 저장소에 남아 있는 데이터와 제거해야 하는 영구 볼륨이 있을 수 있습니다.
4장. OpenShift Container Platform의 Network Observability Operator
Network Observability는 네트워크 Observability eBPF 에이전트에서 생성하는 네트워크 트래픽 흐름을 수집하고 보강하기 위해 모니터링 파이프라인을 배포하는 OpenShift Operator입니다.
4.1. 상태 보기
Network Observability Operator는 Flow Collector API를 제공합니다. 흐름 수집기 리소스가 생성되면 Pod 및 서비스를 배포하여 Loki 로그 저장소에 네트워크 흐름을 생성 및 저장하고 OpenShift Container Platform 웹 콘솔에서 대시보드, 메트릭 및 흐름을 표시합니다.
프로세스
다음 명령을 실행하여
FlowCollector
의 상태를 확인합니다.$ oc get flowcollector/cluster
출력 예
NAME AGENT SAMPLING (EBPF) DEPLOYMENT MODEL STATUS cluster EBPF 50 DIRECT Ready
다음 명령을 입력하여
netobserv
네임스페이스에서 실행 중인 Pod의 상태를 확인합니다.$ oc get pods -n netobserv
출력 예
NAME READY STATUS RESTARTS AGE flowlogs-pipeline-56hbp 1/1 Running 0 147m flowlogs-pipeline-9plvv 1/1 Running 0 147m flowlogs-pipeline-h5gkb 1/1 Running 0 147m flowlogs-pipeline-hh6kf 1/1 Running 0 147m flowlogs-pipeline-w7vv5 1/1 Running 0 147m netobserv-plugin-cdd7dc6c-j8ggp 1/1 Running 0 147m
FlowLogs-pipeline
포드는 흐름을 수집하고 수집된 흐름을 강화한 다음 Loki 스토리지로 흐름을 보냅니다. NetObserv-plugin
Pod는 OpenShift Container Platform 콘솔의 시각화 플러그인을 생성합니다.
다음 명령을 입력하여 네임스페이스
netobserv-privileged
에서 실행 중인 Pod의 상태를 확인합니다.$ oc get pods -n netobserv-privileged
출력 예
NAME READY STATUS RESTARTS AGE netobserv-ebpf-agent-4lpp6 1/1 Running 0 151m netobserv-ebpf-agent-6gbrk 1/1 Running 0 151m netobserv-ebpf-agent-klpl9 1/1 Running 0 151m netobserv-ebpf-agent-vrcnf 1/1 Running 0 151m netobserv-ebpf-agent-xf5jh 1/1 Running 0 151m
NetObserv-ebpf-agent
Pod는 노드의 네트워크 인터페이스를 모니터링하여 흐름을 가져오고 flowlogs-pipeline
pod로 보냅니다.
Loki Operator를 사용하는 경우 다음 명령을 입력하여
openshift-operators-redhat
네임스페이스에서 실행중인 Pod의 상태를 확인합니다.$ oc get pods -n openshift-operators-redhat
출력 예
NAME READY STATUS RESTARTS AGE loki-operator-controller-manager-5f6cff4f9d-jq25h 2/2 Running 0 18h lokistack-compactor-0 1/1 Running 0 18h lokistack-distributor-654f87c5bc-qhkhv 1/1 Running 0 18h lokistack-distributor-654f87c5bc-skxgm 1/1 Running 0 18h lokistack-gateway-796dc6ff7-c54gz 2/2 Running 0 18h lokistack-index-gateway-0 1/1 Running 0 18h lokistack-index-gateway-1 1/1 Running 0 18h lokistack-ingester-0 1/1 Running 0 18h lokistack-ingester-1 1/1 Running 0 18h lokistack-ingester-2 1/1 Running 0 18h lokistack-querier-66747dc666-6vh5x 1/1 Running 0 18h lokistack-querier-66747dc666-cjr45 1/1 Running 0 18h lokistack-querier-66747dc666-xh8rq 1/1 Running 0 18h lokistack-query-frontend-85c6db4fbd-b2xfb 1/1 Running 0 18h lokistack-query-frontend-85c6db4fbd-jm94f 1/1 Running 0 18h
4.2. Network Observablity Operator 아키텍처
Network Observability Operator는 설치 시 인스턴스화되고 eBPF 에이전트
, flowlogs-pipeline
및 netobserv-plugin
구성 요소를 조정하도록 구성된 FlowCollector
API를 제공합니다. 클러스터당 하나의 FlowCollector
만 지원됩니다.
eBPF 에이전트
는 네트워크 흐름을 수집할 수 있는 일부 권한이 있는 각 클러스터 노드에서 실행됩니다. flowlogs-pipeline
은 네트워크 흐름 데이터를 수신하고 Kubernetes 식별자를 사용하여 데이터를 보강합니다. Loki를 사용하는 경우 flowlogs-pipeline
은 저장 및 인덱싱을 위해 흐름 로그 데이터를 Loki로 보냅니다. 동적 OpenShift Container Platform 웹 콘솔 플러그인인 netobserv-plugin
은 Loki를 쿼리하여 네트워크 흐름 데이터를 가져옵니다. cluster-admins는 웹 콘솔에서 데이터를 볼 수 있습니다.

Kafka 옵션을 사용하는 경우 eBPF 에이전트는 네트워크 흐름 데이터를 Kafka로 전송하고 flowlogs-pipeline
은 다음 다이어그램에 표시된 대로 Loki로 보내기 전에 Kafka 주제에서 읽습니다.

4.3. Network Observability Operator 상태 및 구성 보기
oc describe
명령을 사용하여 상태를 검사하고 FlowCollector
의 세부 정보를 볼 수 있습니다.
프로세스
다음 명령을 실행하여 Network Observability Operator의 상태 및 구성을 확인합니다.
$ oc describe flowcollector/cluster
5장. Network Observability Operator 구성
Flow Collector API 리소스를 업데이트하여 Network Observability Operator 및 해당 관리 구성 요소를 구성할 수 있습니다. 설치 중에 Flow Collector가 명시적으로 생성됩니다. 이 리소스는 클러스터 전체에서 작동하기 때문에 단일 FlowCollector
만 허용되며 cluster
라는 이름을 지정해야 합니다.
5.1. FlowCollector 리소스 보기
OpenShift Container Platform 웹 콘솔에서 직접 YAML을 보고 편집할 수 있습니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- NetObserv Operator 의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
-
클러스터를 선택한 다음 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: FLOWS 3 conversationHeartbeatInterval: 30s loki: 4 url: 'https://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 namespace: loki-namespace # 5 consolePlugin: register: true logLevel: info portNaming: enable: true portNames: "3100": loki quickFilters: 6 - 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
은 CryostatPF
여야 합니다. eBPF는 지원되는 유일한 OpenShift Container Platform 옵션입니다. - 2
- Sampling 사양인
spec.agent.ebpf.sampling
을 설정하여 리소스를 관리할 수 있습니다. 샘플링 값이 작으면 많은 양의 컴퓨팅, 메모리 및 스토리지 리소스를 사용할 수 있습니다. 샘플링 비율 값을 지정하여 이를 완화할 수 있습니다. 값이 100이면 100개마다 하나의 흐름이 샘플링됩니다. 값이 0 또는 1이면 모든 흐름이 캡처됩니다. 값이 낮을수록 반환된 흐름의 증가 및 파생 메트릭의 정확도가 낮아집니다. 기본적으로 eBPF 샘플링은 값 50으로 설정되므로 50마다 하나의 흐름이 샘플링됩니다. 더 많은 샘플 흐름은 더 많은 스토리지가 필요하다는 것을 의미합니다. 클러스터를 관리할 수 있는 설정을 결정하려면 기본값으로 시작하고 경험적으로 구체화하는 것이 좋습니다. - 3
- 선택적
spec.processor.logTypes
,spec.processor.conversationHeartbeatInterval
및spec.processor.conversationEndTimeout
을 설정하여 대화 추적을 활성화할 수 있습니다. 활성화하면 웹 콘솔에서 대화 이벤트를 쿼리할 수 있습니다.spec.processor.logTypes
의 값은 다음과 같습니다.FLOWS
CONVERSATIONS
,ENDED_CONVERSATIONS
,ALL
. 스토리지 요구 사항은 ENDED_
CONVERSATIONS의 - 4
- Loki 사양인
spec.loki
는 Loki 클라이언트를 지정합니다. 기본값은 Loki Operator 설치 섹션에 언급된 Loki 설치 경로와 일치합니다. Loki에 다른 설치 방법을 사용한 경우 설치에 적절한 클라이언트 정보를 지정합니다. - 5
- 원래 인증서는 Network Observability 인스턴스 네임스페이스에 복사되고 업데이트를 확인합니다. 제공되지 않는 경우 네임스페이스의 기본값은 "spec.namespace"와 동일합니다. 다른 네임스페이스에 Loki를 설치하도록 선택한 경우
spec.loki.tls.caCert.namespace
필드에 지정해야 합니다. 마찬가지로spec.exporters.kafka.tls.caCert.namespace
필드는 다른 네임스페이스에 설치된 Kafka에 사용할 수 있습니다. - 6
spec.quickFilters
사양은 웹 콘솔에 표시되는 필터를 정의합니다.애플리케이션
필터 키,src_namespace
및dst_namespace
는 negated (!
)이므로애플리케이션
필터 는openshift-
또는netobserv
네임스페이스의 대상이 아닌 모든 트래픽을 표시합니다. 자세한 내용은 아래의 빠른 필터 구성을 참조하십시오.
추가 리소스
대화 추적에 대한 자세한 내용은 대화 작업을 참조하십시오.
5.2. Kafka를 사용하여 Flow Collector 리소스 구성
처리량이 높고 대기 시간이 짧은 데이터 피드에 Kafka를 사용하도록 FlowCollector
리소스를 구성할 수 있습니다. Kafka 인스턴스를 실행해야 하며 OpenShift Container Platform Network Observability 전용 Kafka 주제를 해당 인스턴스에서 생성해야 합니다. 자세한 내용은 AMQ Streams를 사용한 Kafka 문서를 참조하십시오.
사전 요구 사항
- Kafka가 설치되어 있어야 합니다. Red Hat은 AMQ Streams Operator를 사용하여 Kafka를 지원합니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- Network Observability Operator의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
- 클러스터를 선택한 다음 YAML 탭을 클릭합니다.
-
다음 샘플 YAML과 같이 OpenShift Container Platform Network Observability Operator의
FlowCollector
리소스를 수정하여 Kafka를 사용합니다.
FlowCollector
리소스의 Kafka 구성 샘플
apiVersion: flows.netobserv.io/v1beta1 kind: FlowCollector metadata: name: cluster spec: 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
는 TLS 또는 mTLS를 사용하여 Kafka와의 모든 통신을 암호화하는 데 사용할 수 있습니다. 활성화된 경우 Kafka CA 인증서를 ConfigMap 또는 Secret으로 사용할 수 있어야 합니다.flowlogs-pipeline
프로세서 구성 요소가 배포되는 네임스페이스(기본값:netobserv
)와 eBPF 에이전트가 배포되는 위치(기본값:netobserv-privileged
).spec.kafka.tls.caCert
를 사용하여 참조해야 합니다. mTLS를 사용하는 경우 이러한 네임스페이스에서 클라이언트 시크릿을 사용할 수 있어야 합니다(예: AMQ Streams User Operator를 사용하여 생성할 수 있음)spec.kafka.tls.userCert
에서 참조됩니다.
5.3. 보강된 네트워크 흐름 데이터 내보내기
Kafka, IPFIX 또는 둘 다에 동시에 네트워크 흐름을 보낼 수 있습니다. Splunk, Elasticsearch 또는 Fluentd와 같이 Kafka 또는 IPFIX 입력을 지원하는 모든 프로세서 또는 스토리지는 강화된 네트워크 흐름 데이터를 사용할 수 있습니다.
사전 요구 사항
-
Kafka 또는 IPFIX 수집기 끝점은 Network Observability
flowlogs-pipeline
Pod에서 사용할 수 있습니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- NetObserv Operator 의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
- 클러스터를 선택한 다음 YAML 탭을 선택합니다.
다음과 같이
FlowCollector
를 편집하여spec.exporters
를 구성합니다.apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: exporters: - type: KAFKA 1 kafka: address: "kafka-cluster-kafka-bootstrap.netobserv" topic: netobserv-flows-export 2 tls: enable: false 3 - type: IPFIX 4 ipfix: targetHost: "ipfix-collector.ipfix.svc.cluster.local" targetPort: 4739 transport: tcp or udp 5
- 2
- Network Observability Operator는 모든 흐름을 구성된 Kafka 주제로 내보냅니다.
- 3
- SSL/TLS 또는 mTLS를 사용하여 Kafka 간에 모든 통신을 암호화할 수 있습니다. 활성화하면 Kafka CA 인증서를 ConfigMap 또는 Secret으로 사용할 수 있어야 합니다.
flowlogs-pipeline
프로세서 구성 요소가 배포되는 네임스페이스(기본값: netobserv).spec.exporters.tls.caCert
를 사용하여 참조해야 합니다. mTLS를 사용하는 경우 이러한 네임스페이스에서 클라이언트 시크릿을 사용할 수 있어야 합니다(예: AMQ Streams User Operator를 사용하여 생성할 수 있음)spec.exporters.tls.userCert
에서 참조해야 합니다. - 1 4
- 흐름을 Kafka로 내보내거나 내보내기와 함께 IPFIX로 내보낼 수 있습니다.
- 5
- 전송을 지정하는 옵션이 있습니다. 기본값은
tcp
이지만udp
도 지정할 수 있습니다.
- 구성 후 네트워크 흐름 데이터를 JSON 형식의 사용 가능한 출력으로 전송할 수 있습니다. 자세한 내용은 네트워크 흐름 형식 참조를 참조하십시오.
추가 리소스
흐름 형식을 지정하는 방법에 대한 자세한 내용은 네트워크 흐름 형식 참조를 참조하십시오.
5.4. 흐름 수집기 리소스 업데이트
OpenShift Container Platform 웹 콘솔에서 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"
5.5. 빠른 필터 구성
FlowCollector
리소스에서 필터를 수정할 수 있습니다. 정확한 일치는 값에 대한 double-quotes를 사용할 수 있습니다. 그렇지 않으면 부분 일치가 텍스트 값에 사용됩니다. 키 끝에 배치된 bang(!) 문자는 부정을 의미합니다. YAML 수정에 대한 자세한 내용은 샘플 FlowCollector
리소스를 참조하십시오.
일치하는 필터 유형은 "all of" 또는 "any of"는 사용자가 쿼리 옵션에서 수정할 수 있는 UI 설정입니다. 이 리소스는 이 리소스 구성의 일부가 아닙니다.
다음은 사용 가능한 모든 필터 키 목록입니다.
Universal* | 소스 | 대상 | 설명 |
---|---|---|---|
네임스페이스 |
|
| 특정 네임스페이스와 관련된 트래픽을 필터링합니다. |
name |
|
| 특정 pod, 서비스 또는 노드(호스트 네트워크 트래픽의 경우)와 같은 지정된 리프 리소스 이름과 관련된 트래픽을 필터링합니다. |
kind |
|
| 지정된 리소스 유형과 관련된 트래픽을 필터링합니다. 리소스 종류에는 리프 리소스(Pod, 서비스 또는 노드) 또는 소유자 리소스(Deployment 및 StatefulSet)가 포함됩니다. |
owner_name |
|
| 지정된 리소스 소유자, 즉 워크로드 또는 Pod 세트와 관련된 트래픽을 필터링합니다. 예를 들어 배포 이름, StatefulSet 이름 등이 될 수 있습니다. |
resource |
|
|
고유하게 식별하는 표준 이름으로 표시되는 특정 리소스와 관련된 트래픽을 필터링합니다. canonical notation은 네임스페이스가 지정된 종류의 |
address |
|
| IP 주소와 관련된 트래픽을 필터링합니다. IPv4 및 IPv6이 지원됩니다. CIDR 범위도 지원됩니다. |
mac |
|
| MAC 주소와 관련된 트래픽을 필터링합니다. |
port |
|
| 특정 포트와 관련된 트래픽을 필터링합니다. |
host_address |
|
| Pod가 실행 중인 호스트 IP 주소와 관련된 트래픽을 필터링합니다. |
프로토콜 | 해당 없음 | 해당 없음 | TCP 또는 UDP와 같은 프로토콜과 관련된 트래픽을 필터링합니다. |
-
소스 또는 대상에 대해 Universal keys filter for any of source or destination 예를 들어,
name: '
를 필터링하는 것은 모든 트래픽의 모든 트래픽을my-pod
'my-pod
및 my-pod로의 모든 트래픽 을 의미합니다.
5.6. SR-IOV 인터페이스 트래픽에 대한 모니터링 구성
SR-IOV(Single Root I/O Virtualization) 장치가 있는 클러스터에서 트래픽을 수집하려면 FlowCollector
spec.agent.ebpf.privileged
필드를 true
로 설정해야 합니다. 그런 다음 eBPF 에이전트는 기본적으로 모니터링되는 호스트 네트워크 네임스페이스 외에도 다른 네트워크 네임스페이스를 모니터링합니다. VF(가상 기능) 인터페이스가 있는 Pod가 생성되면 새 네트워크 네임스페이스가 생성됩니다. SRIOVNetwork
정책 IPAM
구성을 지정하면 VF 인터페이스가 호스트 네트워크 네임스페이스에서 Pod 네트워크 네임스페이스로 마이그레이션됩니다.
사전 요구 사항
- SR-IOV 장치를 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
-
SRIOVNetwork
CR(사용자 정의 리소스)spec.ipam
구성은 인터페이스에서 나열하거나 다른 플러그인에서 나열하는 범위의 IP 주소로 설정해야 합니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- NetObserv Operator 의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
- 클러스터를 선택한 다음 YAML 탭을 선택합니다.
FlowCollector
사용자 지정 리소스를 구성합니다. 샘플 구성은 다음과 같습니다.SR-IOV 모니터링을 위한
FlowCollector
구성apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: DIRECT agent: type: EBPF ebpf: privileged: true 1
- 1
- SR-IOV 모니터링을 활성화하려면
spec.agent.ebpf.privileged
필드 값을true
로 설정해야 합니다.
추가 리소스
SriovNetwork
사용자 정의 리소스 생성에 대한 자세한 내용은 CNI VRF 플러그인을 사용하여 추가 SR-IOV 네트워크 연결 생성을 참조하십시오.
5.7. 리소스 관리 및 성능 고려 사항
Network Observability에 필요한 리소스 양은 클러스터의 크기와 관찰성 데이터를 수집하고 저장하는 클러스터의 요구 사항에 따라 달라집니다. 리소스를 관리하고 클러스터의 성능 기준을 설정하려면 다음 설정을 구성하는 것이 좋습니다. 이러한 설정을 구성하면 최적의 설정 및 관찰 기능 요구 사항이 충족될 수 있습니다.
다음 설정을 사용하면 처음부터 리소스 및 성능을 관리하는 데 도움이 될 수 있습니다.
- eBPF 샘플링
-
Sampling 사양인
spec.agent.ebpf.sampling
을 설정하여 리소스를 관리할 수 있습니다. 더 작은 샘플링 값은 많은 양의 컴퓨팅, 메모리 및 스토리지 리소스를 사용할 수 있습니다. 샘플링 비율 값을 지정하여 이를 완화할 수 있습니다. 값이100
이면 100개마다 하나의 흐름이 샘플링됩니다. 값이0
또는1
이면 모든 흐름이 캡처됩니다. 값이 작으면 반환된 흐름이 증가하고 파생 메트릭의 정확도가 증가합니다. 기본적으로 eBPF 샘플링은 값 50으로 설정되므로 50마다 하나의 흐름이 샘플링됩니다. 더 많은 샘플 흐름은 더 많은 스토리지가 필요하다는 것을 의미합니다. 클러스터가 관리할 수 있는 설정을 결정하기 위해 기본값을 시작하고 실제적으로 구체화하는 것이 좋습니다. - 인터페이스 제한 또는 제외
-
spec.agent.ebpf.interfaces
및spec.agent.ebpf.excludeInterfaces
값을 설정하여 전체 관찰 트래픽을 줄입니다. 기본적으로 에이전트는excludeInterfaces
및lo
(로컬 인터페이스)에 나열된 인터페이스를 제외하고 시스템의 모든 인터페이스를 가져옵니다. 인터페이스 이름은 사용된 CNI(Container Network Interface)에 따라 다를 수 있습니다.
다음 설정을 사용하여 잠시 동안 Network Observability가 실행된 후 성능을 미세 조정할 수 있습니다.
- 리소스 요구 사항 및 제한
-
spec.agent.ebpf.resources
및spec.processor.resources
사양을 사용하여 클러스터에서 예상되는 로드 및 메모리 사용량에 리소스 요구 사항 및 제한을 조정합니다. 대부분의 중간 크기의 클러스터에는 800MB의 기본 제한이 충분할 수 있습니다. - 캐시 최대 흐름 시간 초과
-
eBPF 에이전트의
spec.agent.ebpf.cacheMaxFlows
및spec.agent.ebpf.cacheActiveTimeout
사양을 사용하여 에이전트에서 보고하는 빈도를 제어합니다. 값이 클수록 에이전트가 더 적은 트래픽이 생성되므로 더 낮은 CPU 로드와 관련이 있습니다. 그러나 값이 클수록 메모리 사용량이 약간 길어지고 흐름 수집에서 대기 시간이 증가할 수 있습니다.
5.7.1. 리소스 고려 사항
다음 표에는 특정 워크로드 크기가 있는 클러스터의 리소스 고려 사항의 예가 요약되어 있습니다.
표에 설명된 예제에서는 특정 워크로드에 맞는 시나리오를 보여줍니다. 각 예제를 워크로드 요구 사항을 충족하기 위해 조정할 수 있는 기준으로만 고려해 보십시오.
추가 소규모(10개 노드) | 소규모(25개 노드) | 중간(65 노드) [2] | 대규모(120개 노드) [2] | |
---|---|---|---|---|
작업자 노드 vCPU 및 메모리 | 4개의 vCPU| 16GiB mem [1] | 16개의 vCPU| 64GiB mem [1] | 16개의 vCPU| 64GiB mem [1] | 16개의 vCPU| 64GiB Mem [1] |
LokiStack 크기 |
|
|
|
|
네트워크 Observability 컨트롤러 메모리 제한 | 400Mi(기본값) | 400Mi(기본값) | 400Mi(기본값) | 800Mi |
eBPF 샘플링 속도 | 50(기본값) | 50(기본값) | 50(기본값) | 50(기본값) |
eBPF 메모리 제한 | 800Mi (기본값) | 800Mi (기본값) | 2000Mi | 800Mi (기본값) |
CryostatP 메모리 제한 | 800Mi (기본값) | 800Mi (기본값) | 800Mi (기본값) | 800Mi (기본값) |
CryostatP Kafka 파티션 | 해당 없음 | 48 | 48 | 48 |
Kafka 소비자 복제본 | 해당 없음 | 24 | 24 | 24 |
Kafka 브로커 | 해당 없음 | 3 (기본값) | 3 (기본값) | 3 (기본값) |
- AWS M6i 인스턴스로 테스트되었습니다.
-
이 작업자와 컨트롤러 외에도 3개의 인프라 노드(크기
M6i.12xlarge
) 및 1 워크로드 노드(M6i.8xlarge
크기)를 테스트했습니다.
6장. Network Policy
admin
역할이 있는 사용자는 netobserv
네임스페이스에 대한 네트워크 정책을 생성할 수 있습니다.
6.1. 네트워크 Observability에 대한 네트워크 정책 생성
netobserv
네임스페이스에 대한 수신 트래픽을 보호하려면 네트워크 정책을 생성해야 할 수 있습니다. 웹 콘솔에서 양식 보기를 사용하여 네트워크 정책을 생성할 수 있습니다.
프로세스
- 네트워킹 → NetworkPolicies 로 이동합니다.
-
프로젝트 드롭다운 메뉴에서
netobserv
프로젝트를 선택합니다. -
정책의 이름을 지정합니다. 이 예에서 정책 이름은
allow-ingress
입니다. - Ingress 규칙 추가를 세 번 클릭하여 수신 규칙을 생성합니다.
양식에 다음을 지정합니다.
첫 번째 Ingress 규칙에 대해 다음 사양을 만듭니다.
- Add allowed source 드롭다운 메뉴에서 동일한 네임스페이스에서 Pod 허용을 선택합니다.
두 번째 Ingress 규칙에 대해 다음 사양을 만듭니다.
- Add allowed source 드롭다운 메뉴에서 클러스터 내부에서 Pod 허용을 선택합니다.
- + 네임스페이스 선택기 추가 를 클릭합니다.
-
kubernetes.io/metadata.name
레이블과 선택기openshift-console
을 추가합니다.
세 번째 Ingress 규칙에 대해 다음 사양을 만듭니다.
- Add allowed source 드롭다운 메뉴에서 클러스터 내부에서 Pod 허용을 선택합니다.
- + 네임스페이스 선택기 추가 를 클릭합니다.
-
kubernetes.io/metadata.name
레이블과 선택기openshift-monitoring
를 추가합니다.
검증
- 모니터링 → 네트워크 트래픽 으로 이동합니다.
- 트래픽 흐름 탭 또는 탭을 보고 데이터가 표시되는지 확인합니다.
- 모니터링 → 대시보드 로 이동합니다. NetObserv/Health 선택에서 흐름이 수집되고 첫 번째 그래프에 표시되는 Loki로 전송되는지 확인합니다.
6.2. 네트워크 정책의 예
다음은 netobserv
네임스페이스의 예제 NetworkPolicy
오브젝트에 주석을 답니다.
네트워크 정책 샘플
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-ingress namespace: netobserv spec: podSelector: {} 1 ingress: - from: - podSelector: {} 2 namespaceSelector: 3 matchLabels: kubernetes.io/metadata.name: openshift-console - podSelector: {} namespaceSelector: matchLabels: kubernetes.io/metadata.name: openshift-monitoring policyTypes: - Ingress status: {}
- 1
- 정책이 적용되는 Pod를 설명하는 선택기입니다. 정책 오브젝트는
NetworkPolicy
오브젝트를 정의하는 프로젝트에서 Pod만 선택할 수 있습니다. 이 문서에서는netobserv
serv 프로젝트인 Network Observability Operator가 설치된 프로젝트입니다. - 2
- 정책 오브젝트가 수신 트래픽을 허용하는 Pod와 일치하는 선택기입니다. 기본값은 선택기가
NetworkPolicy
와 동일한 네임스페이스의 Pod와 일치한다는 것입니다. - 3
namespaceSelector
를 지정하면 선택기가 지정된 네임스페이스의 Pod와 일치합니다.
추가 리소스
7장. 네트워크 트래픽 관찰
관리자는 OpenShift Container Platform 콘솔에서 네트워크 트래픽을 관찰하여 자세한 문제 해결 및 분석을 수행할 수 있습니다. 이 기능을 사용하면 트래픽 흐름의 다양한 그래픽 표현에서 통찰력을 얻을 수 있습니다. 네트워크 트래픽을 관찰하는 데 사용할 수 있는 여러 보기가 있습니다.
7.1. 개요 보기에서 네트워크 트래픽 관찰
개요 보기에는 클러스터의 네트워크 트래픽 흐름에 대한 전체 집계 지표가 표시됩니다. 관리자는 사용 가능한 표시 옵션을 사용하여 통계를 모니터링할 수 있습니다.
7.1.1. 개요 뷰 작업
관리자는 개요 보기로 이동하여 흐름 속도 통계의 그래픽 표시를 확인할 수 있습니다.
프로세스
- 모니터링 → 네트워크 트래픽 으로 이동합니다.
- 네트워크 트래픽 페이지에서 개요 탭을 클릭합니다.
메뉴 아이콘을 클릭하여 각 흐름 속도 데이터의 범위를 구성할 수 있습니다.
7.1.2. 개요 보기에 대한 고급 옵션 구성
고급 옵션을 사용하여 그래픽 보기를 사용자 지정할 수 있습니다. 고급 옵션에 액세스하려면 고급 옵션 표시를 클릭합니다. 표시 옵션 드롭다운 메뉴를 사용하여 그래프에서 세부 정보를 구성할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다.
- 메트릭 유형: Cryostat 또는 Packets 에 표시할 메트릭입니다. 기본값은 Cryostat 입니다.
- 범위: 네트워크 트래픽이 이동하는 구성 요소의 세부 정보를 선택합니다. 노드,네임스페이스,소유자 또는 리소스로 범위를 설정할 수 있습니다. 소유자는 리소스 집계입니다. 리소스는 호스트 네트워크 트래픽 또는 알 수 없는 IP 주소의 경우 Pod, 서비스, 노드일 수 있습니다. 기본값은 Namespace 입니다.
- truncate 레이블: 드롭다운 목록에서 레이블의 필요한 너비를 선택합니다. 기본값은 M 입니다.
7.1.2.1. 패널 관리
표시할 필요한 통계를 선택하고 순서를 다시 정렬할 수 있습니다. 열을 관리하려면 패널 관리를 클릭합니다.
7.1.2.2. DNS 추적
개요 보기에서 네트워크 흐름의 DNS(Domain Name System) 추적을 그래픽으로 표시할 수 있습니다. eBPF(Extended Berkeley Packet Filter) 추적 후크와 함께 DNS 추적을 사용하면 다양한 용도로 사용할 수 있습니다.
- 네트워크 모니터링: DNS 쿼리 및 응답에 대한 인사이트를 제공하여 네트워크 관리자가 비정상적인 패턴, 잠재적인 병목 또는 성능 문제를 식별할 수 있도록 지원합니다.
- 보안 분석: 악성 코드가 사용하는 도메인 이름 생성 알고리즘(DGA)과 같은 의심스러운 DNS 활동을 감지하거나 보안 위반을 나타낼 수 있는 무단 DNS 확인을 식별합니다.
- 문제 해결: DNS 확인 단계를 추적하고 대기 시간을 추적하며 잘못된 구성을 식별하여 DNS 관련 문제를 디버깅합니다.
DNS 추적이 활성화되면 개요 의 차트에 표시되는 다음 메트릭을 확인할 수 있습니다. 이 뷰 활성화 및 작업에 대한 자세한 내용은 이 섹션의 추가 리소스 를 참조하십시오.
- 평균 5개의 DNS 대기 시간
- 상위 5 DNS 응답 코드
- 총 5개의 DNS 응답 코드 스택
이 기능은 IPv4 및 IPv6 UDP 프로토콜에서 지원됩니다.
추가 리소스
-
FlowCollector
에서 DNS를 구성하는 방법에 대한 자세한 내용은 DNS 추적 작업을 참조하십시오.
7.2. 트래픽 흐름 보기에서 네트워크 트래픽 관찰
트래픽 흐름 보기에는 네트워크 흐름의 데이터와 테이블의 트래픽 양이 표시됩니다. 관리자는 트래픽 흐름 테이블을 사용하여 애플리케이션 간 트래픽 양을 모니터링할 수 있습니다.
7.2.1. 트래픽 흐름 보기 작업
관리자는 트래픽 흐름 테이블로 이동하여 네트워크 흐름 정보를 볼 수 있습니다.
프로세스
- 모니터링 → 네트워크 트래픽 으로 이동합니다.
- 네트워크 트래픽 페이지에서 트래픽 흐름 탭을 클릭합니다.
각 행을 클릭하면 해당 흐름 정보를 얻을 수 있습니다.
7.2.2. 트래픽 흐름 보기에 대한 고급 옵션 구성
고급 옵션 표시를 사용하여 보기를 사용자 지정하고 내보낼 수 있습니다. 표시 옵션 드롭다운 메뉴를 사용하여 행 크기를 설정할 수 있습니다. 기본값은 Normal 입니다.
7.2.2.1. 열 관리
표시할 필수 열을 선택하고 순서를 다시 정렬할 수 있습니다. 열을 관리하려면 열 관리를 클릭합니다.
7.2.2.2. 트래픽 흐름 데이터 내보내기
트래픽 흐름 보기에서 데이터를 내보낼 수 있습니다.
프로세스
- 데이터 내보내기 를 클릭합니다.
- 팝업 창에서 모든 데이터를 내보내려면 모든 데이터 내보내기 확인란을 선택하고 확인란의 선택을 해제하여 내보낼 필수 필드를 선택할 수 있습니다.
- 내보내기 를 클릭합니다.
7.2.3. 대화 추적 작업
관리자는 동일한 대화의 일부인 네트워크 흐름을 그룹화할 수 있습니다. 대화는 IP 주소, 포트 및 프로토콜로 식별되는 피어 그룹화로 정의되므로 고유한 대화 ID가 생성됩니다. 웹 콘솔에서 대화 이벤트를 쿼리할 수 있습니다. 이러한 이벤트는 웹 콘솔에서 다음과 같이 표시됩니다.
- 대화 시작: 이 이벤트는 연결이 시작되거나 TCP 플래그가 인터셉트될 때 발생합니다.
-
대화 눈금: 이 이벤트는 연결이 활성화된 동안
FlowCollector
spec.processor.conversationHeartbeatInterval
매개변수에 정의된 각 지정된 간격으로 수행됩니다. -
대화 종료: 이 이벤트는
FlowCollector
spec.processor.conversationEndTimeout
매개변수에 도달하거나 TCP 플래그를 가로챌 때 발생합니다. - flow: 지정된 간격 내에 발생하는 네트워크 트래픽 흐름입니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- NetObserv Operator 의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
- 클러스터를 선택한 다음 YAML 탭을 선택합니다.
spec.processor.logTypes
,conversationEndTimeout
및conversationHeartbeatInterval
매개변수가 관찰 요구 사항에 따라 설정되도록FlowCollector
사용자 지정 리소스를 구성합니다. 샘플 구성은 다음과 같습니다.대화 추적을 위한
FlowCollector
구성apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: processor: conversationEndTimeout: 10s 1 logTypes: FLOWS 2 conversationHeartbeatInterval: 30s 3
- 1
- Conversation end 이벤트는
conversationEndTimeout
에 도달하거나 TCP 플래그가 가로채는 시점을 나타냅니다. - 2
logTypes
를FLOWS
로 설정하면 Flow 이벤트만 내보냅니다. 값을ALL
로 설정하면 대화 및 흐름 이벤트가 모두 내보내 네트워크 트래픽 페이지에 표시됩니다. 대화 이벤트에만 집중하기 위해 대화 시작, 대화 틱 및 대화 종료 이벤트 또는ENDED_CONVERSATIONS
내보내기를 대화 종료 이벤트를 내보내는CONVERSATIONS
를 지정할 수 있습니다. 스토리지 요구 사항은 ENDED_
CONVERSATIONS의- 3
- Conversation tick 이벤트는 네트워크 연결이 활성화된 동안
FlowCollector
conversationHeartbeatInterval
매개변수에 정의된 각 지정된 간격을 나타냅니다.
참고logType
옵션을 업데이트하면 이전 선택의 흐름이 콘솔 플러그인에서 명확하지 않습니다. 예를 들어 처음에는 오전 10일까지logType
을CONVERSATIONS
로 설정한 다음ENDED_CONVERSATIONS
로 이동한 다음 콘솔 플러그인은 오전 10시 전의 모든 대화 이벤트를 표시하고 10 AM 이후의 대화만 종료합니다.-
트래픽 흐름 탭에서 네트워크 트래픽 페이지를 새로 고칩니다. 두 개의 새 열인 Event/Type 및 Conversation Id 가 있습니다. 모든 이벤트/유형 필드는
Flow
가 선택한 쿼리 옵션인 경우 Flow 입니다. - 쿼리 옵션을 선택하고 로그 유형,대화 유형을 선택합니다. 이제 이벤트/유형 이 원하는 대화 이벤트를 모두 표시합니다.
- 다음으로 특정 대화 ID를 필터링하거나 측면 패널에서 대화 및 흐름 로그 유형 옵션을 전환할 수 있습니다.
7.2.4. DNS 추적 작업
DNS 추적을 사용하면 네트워크를 모니터링하고 보안 분석을 수행하고 DNS 문제를 해결할 수 있습니다. 다음 YAML 예제의 사양으로 FlowCollector
를 편집하여 DNS를 추적할 수 있습니다.
이 기능이 활성화되면 CPU 및 메모리 사용량 증가가 eBPF 에이전트에서 관찰됩니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- NetObserv Operator 의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
- 클러스터를 선택한 다음 YAML 탭을 선택합니다.
FlowCollector
사용자 지정 리소스를 구성합니다. 샘플 구성은 다음과 같습니다.DNS 추적을 위한
FlowCollector
구성apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: namespace: netobserv deploymentModel: DIRECT agent: type: EBPF ebpf: features: - DNSTracking 1 privileged: true 2
네트워크 트래픽 페이지를 새로 고칠 때 개요 및 트래픽 흐름 보기 및 적용할 수 있는 새 필터에서 볼 수 있는 새로운 DNS 표현이 있습니다.
- 패널 관리에서 새 DNS 선택 사항을 선택하여 개요 에 그래픽 시각화 및 DNS 지표를 표시합니다.
- 열 관리에서 새 선택 항목을 선택하여 트래픽 흐름 보기에 DNS 열을 추가합니다.
- DNS Id, DNS대기 시간 및 DNS 응답 코드와 같은 특정 DNS 메트릭을 필터링하고 측면 패널에서 자세한 정보를 참조하십시오.
7.2.4.1. 히스토그램 사용
히스토그램 표시를 클릭하여 흐름 기록을 가로 막대형 차트로 시각화하기 위한 도구 모음 보기를 표시할 수 있습니다. 히스토그램은 시간에 따른 로그 수를 보여줍니다. 히스토그램의 일부를 선택하여 도구 모음을 따르는 테이블에서 네트워크 흐름 데이터를 필터링할 수 있습니다.
7.3. 토폴로지 보기에서 네트워크 트래픽 관찰
토폴로지 보기에는 네트워크 흐름과 트래픽 양을 그래픽으로 표시할 수 있습니다. 관리자는 토폴로지 보기를 사용하여 애플리케이션에서 트래픽 데이터를 모니터링할 수 있습니다.
7.3.1. 토폴로지 보기 작업
관리자는 토폴로지 보기로 이동하여 구성 요소의 세부 정보 및 지표를 확인할 수 있습니다.
프로세스
- 모니터링 → 네트워크 트래픽 으로 이동합니다.
- 네트워크 트래픽 페이지에서 토폴로지 탭을 클릭합니다.
토폴로지 에서 각 구성 요소를 클릭하여 구성 요소의 세부 정보 및 지표를 확인할 수 있습니다.
7.3.2. 토폴로지 보기의 고급 옵션 구성
고급 옵션 표시를 사용하여 보기를 사용자 지정하고 내보낼 수 있습니다. 고급 옵션 보기에는 다음과 같은 기능이 있습니다.
- 보기에서 찾기: 뷰에서 필요한 구성 요소를 검색하려면 다음을 수행합니다.
Display options: 다음 옵션을 구성하려면 다음을 수행합니다.
- layout : 그래픽 표현의 레이아웃을 선택합니다. 기본값은 ColaNoForce 입니다.
- scope: 네트워크 트래픽이 이동하는 구성 요소의 범위를 선택합니다. 기본값은 Namespace 입니다.
- groups: 구성 요소를 그룹화하여 소유권에 대한 이해를 제공합니다. 기본값은 None 입니다.
- 그룹 축소: 그룹을 확장하거나 축소합니다. 그룹은 기본적으로 확장됩니다. group에 값이 None 인 경우 이 옵션이 비활성화됩니다.
- show: 표시할 필요가 있는 세부 정보를 선택합니다. 모든 옵션은 기본적으로 확인됩니다. 사용 가능한 옵션은 Edges,Edges 레이블 및 Badges 입니다.
- truncate 레이블: 드롭다운 목록에서 레이블의 필요한 너비를 선택합니다. 기본값은 M 입니다.
7.3.2.1. 토폴로지 보기 내보내기
뷰를 내보내려면 토폴로지 보기 내보내기 를 클릭합니다. 보기는 PNG 형식으로 다운로드됩니다.
7.4. 네트워크 트래픽 필터링
기본적으로 네트워크 트래픽 페이지는 FlowCollector
인스턴스에 구성된 기본 필터를 기반으로 클러스터의 트래픽 흐름 데이터를 표시합니다. 필터 옵션을 사용하여 사전 설정 필터를 변경하여 필요한 데이터를 관찰할 수 있습니다.
- 쿼리 옵션
다음과 같이 쿼리 옵션을 사용하여 검색 결과를 최적화할 수 있습니다.
- 사용 가능한 옵션 대화 및 흐름은 흐름 로그, 새 대화, 완료된 대화 및 하트비트와 같은 로그 유형 별로 흐름을 쿼리하는 기능을 제공합니다. 이 기능은 긴 대화에 대한 업데이트가 포함된 주기적인 레코드입니다. 대화는 동일한 피어 간의 흐름을 집계하는 것입니다.
-
중복된 흐름: 여러 인터페이스에서 흐름이 보고될 수 있으며 소스 및 대상 노드 모두에서 흐름이 데이터에 여러 번 표시될 수 있습니다. 이 쿼리 옵션을 선택하면 중복된 흐름을 표시하도록 선택할 수 있습니다. 복제된 흐름은 포트를 포함한 동일한 소스 및 대상을 가지며
Interface
및Direction
필드를 제외하고 동일한 프로토콜을 갖습니다. 중복은 기본적으로 숨겨집니다. 드롭다운 목록의 Common 섹션에서 Direction 필터를 사용하여 수신 트래픽과 송신 트래픽 사이를 전환합니다. - match 필터: 고급 필터에서 선택한 다양한 필터 매개변수 간의 관계를 확인할 수 있습니다. 사용 가능한 옵션은 all 및 match any와 일치합니다. match all은 모든 값과 일치하는 결과를 제공하며 모든 값과 일치하면 입력된 값과 일치하는 결과가 제공됩니다. 기본값은 all과 일치합니다.
- limit: 내부 백엔드 쿼리의 데이터 제한입니다. 일치 및 필터 설정에 따라 트래픽 흐름 데이터 수가 지정된 제한 내에 표시됩니다.
- 빠른 필터
-
빠른 필터 드롭다운 메뉴의 기본값은
FlowCollector
구성에 정의되어 있습니다. 콘솔에서 옵션을 수정할 수 있습니다. - 고급 필터
- 드롭다운 목록에서 필터링할 매개변수를 선택하여 고급 필터, 공통,소스 또는 대상 을 설정할 수 있습니다. 흐름 데이터는 선택 사항에 따라 필터링됩니다. 적용된 필터를 활성화하거나 비활성화하려면 필터 옵션 아래에 나열된 적용된 필터를 클릭하면 됩니다.
에서 한 가지 방법과
뒤로
필터링을 전환할 수 있습니다.
한 가지 방법 필터는 필터 선택에 따라 소스 및 대상 트래픽만 표시합니다. 스왑을 사용하여 소스 및 대상 트래픽의 방향 보기를 변경할 수 있습니다.
Back and forth 필터에는 소스 및 대상 필터가 있는 반환 트래픽이 포함됩니다. 네트워크 트래픽의 방향 흐름은 트래픽의 Direction 열에
Ingress' 또는 'Egress for inter-node traffic 및 '
Inner' 트래픽의 경우 단일 노드 내의 트래픽으로 표시됩니다.
기본값 재설정 을 클릭하여 기존 필터를 제거하고 FlowCollector
구성에 정의된 필터를 적용할 수 있습니다.
텍스트 값을 지정하는 규칙을 이해하려면 자세히 알아보기 를 클릭합니다.
또는 해당 집계의 필터링된 데이터를 제공하는 네임스페이스,서비스,경로,노드, 워크로드 페이지의 네트워크 트래픽 탭에서 트래픽 흐름 데이터에 액세스할 수 있습니다.
추가 리소스
FlowCollector
에서 빠른 필터를 구성하는 방법에 대한 자세한 내용은 빠른 필터 및 흐름 수집기 샘플 리소스 구성 을 참조하십시오.
8장. Network Observability Operator 모니터링
웹 콘솔을 사용하여 Network Observability Operator의 상태와 관련된 경고를 모니터링할 수 있습니다.
8.1. 상태 정보 보기
웹 콘솔의 대시보드 페이지에서 Network Observability Operator의 상태 및 리소스 사용량에 대한 메트릭에 액세스할 수 있습니다. 경고가 트리거될 경우 대시보드로 연결되는 상태 경고 배너는 네트워크 트래픽 및 홈 페이지에 표시될 수 있습니다. 다음과 같은 경우 경고가 생성됩니다.
-
Loki ingestion rate limit에 도달한 경우와 같이
flowlogs-pipeline
워크로드가 Loki 오류로 인해 흐름을 삭제하면NetObservLokiError
경고가 발생합니다. -
NetObservNoFlows
경고는 일정 시간 동안 흐름이 수집되지 않으면 발생합니다.
사전 요구 사항
- Network Observability Operator가 설치되어 있어야 합니다.
-
cluster-admin
역할 또는 모든 프로젝트에 대한 보기 권한이 있는 사용자로 클러스터에 액세스할 수 있습니다.
프로세스
- 웹 콘솔의 관리자 화면에서 모니터링 → 대시보드 로 이동합니다.
- 대시보드 드롭다운에서 Netobserv/Health 를 선택합니다. Operator 상태에 대한 지표가 페이지에 표시됩니다.
8.1.1. 상태 경고 비활성화
FlowCollector
리소스를 편집하여 상태 경고를 비활성화할 수 있습니다.
- 웹 콘솔에서 Operator → 설치된 Operator 로 이동합니다.
- NetObserv Operator 의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
- 클러스터를 선택한 다음 YAML 탭을 선택합니다.
-
spec.processor.metrics.disableAlerts
를 추가하여 다음 YAML 샘플과 같이 상태 경고를 비활성화합니다.
apiVersion: flows.netobserv.io/v1alpha1
kind: FlowCollector
metadata:
name: cluster
spec:
processor:
metrics:
disableAlerts: [NetObservLokiError, NetObservNoFlows] 1
- 1
- 비활성화할 경고 유형을 모두 사용하여 하나 또는 목록을 지정할 수 있습니다.
8.2. NetObserv 대시보드에 대한 Loki 속도 제한 경고 생성
Loki 속도 제한에 도달할 때 Netobserv 대시보드 메트릭에 대한 사용자 지정 규칙을 생성하여 경고를 트리거할 수 있습니다.
경고 규칙 구성 YAML 파일의 예는 다음과 같습니다.
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: loki-alerts namespace: openshift-operators-redhat spec: groups: - name: LokiRateLimitAlerts rules: - alert: LokiTenantRateLimit annotations: message: |- {{ $labels.job }} {{ $labels.route }} is experiencing 429 errors. summary: "At any number of requests are responded with the rate limit error code." expr: sum(irate(loki_request_duration_seconds_count{status_code="429"}[1m])) by (job, namespace, route) / sum(irate(loki_request_duration_seconds_count[1m])) by (job, namespace, route) * 100 > 0 for: 10s labels: severity: warning
추가 리소스
- 대시보드에서 볼 수 있는 경고를 만드는 방법에 대한 자세한 내용은 사용자 정의 프로젝트에 대한 경고 규칙 생성 을 참조하십시오.
9장. FlowCollector 구성 매개변수
FlowCollector는 기본 배포를 시험하고 구성하는 네트워크 흐름 컬렉션 API의 스키마입니다.
9.1. FlowCollector API 사양
- 설명
-
FlowCollector
는 기본 배포를 시험하고 구성하는 네트워크 흐름 컬렉션 API의 스키마입니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며 인식할 수 없는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트가 요청을 제출하는 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
|
| 표준 오브젝트의 메타데이터입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
|
|
FlowCollector 리소스의 원하는 상태를 정의합니다. |
9.1.1. .metadata
- 설명
- 표준 오브젝트의 메타데이터입니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
- 유형
-
object
9.1.2. .spec
- 설명
-
FlowCollector 리소스의 원하는 상태를 정의합니다.
*: 이 문서 전체에서 "지원되지 않음" 또는 "더 이상 사용되지 않음"은 이 기능이 Red Hat에서 공식적으로 지원하지 않음을 의미합니다. 예를 들어 커뮤니티에서 기여하고 유지 관리를 위한 공식적인 동의 없이 수락되었을 수 있습니다. 제품 유지 관리자는 최상의 노력으로 이러한 기능에 대한 지원을 제공할 수 있습니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 흐름 추출에 대한 에이전트 구성입니다. |
|
|
Console |
|
|
|
|
|
|
|
|
Kafka 구성을 통해 Kafka를 흐름 컬렉션 파이프라인의 일부로 브로커로 사용할 수 있습니다. |
|
| Loki, 흐름 저장소, 클라이언트 설정. |
|
| 네트워크 Observability Pod가 배포되는 네임스페이스입니다. |
|
|
|
9.1.3. .spec.agent
- 설명
- 흐름 추출에 대한 에이전트 구성입니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
9.1.4. .spec.agent.ebpf
- 설명
-
eBPF는
spec.agent.type
이 CryostatPF
로 설정된 경우 eBPF 기반 flow reporter와 관련된 설정을 설명합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
활성화할 추가 기능 목록입니다. 모두 기본적으로 비활성화되어 있습니다. 추가 기능을 활성화하면 성능에 영향을 미칠 수 있습니다. 가능한 값은 다음과 같습니다. |
|
|
|
|
|
|
|
|
|
|
|
|
|
| eBPF 에이전트 컨테이너의 권한 모드입니다. 일반적으로 이 설정은 무시하거나 false로 설정할 수 있습니다. 이 경우 Operator는 세분화된 기능(BPF, PERFMON, NET_ADMIN, SYS_RESOURCE)을 컨테이너에 설정하여 올바른 작업을 활성화합니다. 어떤 이유로든 이러한 기능을 설정할 수 없는 경우(예: CAP_BPF를 모르는 이전 커널 버전이 사용 중인 경우 보다 글로벌 권한을 위해 이 모드를 켤 수 있습니다. |
|
|
|
|
| 흐름 보고기의 샘플링 속도입니다. 100은 100에 하나의 흐름이 전송되었음을 의미합니다. 0 또는 1은 모든 흐름이 샘플링됨을 의미합니다. |
9.1.5. .spec.agent.ebpf.debug
- 설명
-
debug
를 사용하면 eBPF 에이전트의 내부 구성의 일부 측면을 설정할 수 있습니다. 이 섹션은 GOGC 및 GOMAXPROCS env vars와 같은 디버깅 및 세분화된 성능 최적화를 위한 것입니다. 값을 설정하는 사용자는 자신의 위험에 이를 수행합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
9.1.6. .spec.agent.ebpf.resources
- 설명
-
리소스는
이 컨테이너에 필요한 컴퓨팅 리소스입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 제한은 허용되는 최대 컴퓨팅 리소스 양을 나타냅니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
|
| 요청은 필요한 최소 컴퓨팅 리소스 양을 설명합니다. 컨테이너에 대한 Requests를 생략하면 구현 정의된 값을 제외하고 명시적으로 지정된 경우 기본값은 Limits로 설정됩니다. 요청은 제한을 초과할 수 없습니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
9.1.7. .spec.agent.ipfix
- 설명
-
ipFI
X [deprecated (*)] -spec.agent.type
이 IPFIX로 설정된 경우IPFIX
기반 흐름 보고기와 관련된 설정을 설명합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9.1.8. .spec.agent.ipfix.clusterNetworkOperator
- 설명
-
clusterNetworkOperator
는 사용 가능한 경우 OpenShift Container Platform Cluster Network Operator와 관련된 설정을 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 구성 맵을 배포할 네임스페이스입니다. |
9.1.9. .spec.agent.ipfix.ovnKubernetes
- 설명
-
OVNKubernetes
는 사용 가능한 경우 OVN-Kubernetes CNI의 설정을 정의합니다. 이 구성은 OpenShift Container Platform 없이 OVN의 IPFIX 내보내기를 사용할 때 사용됩니다. OpenShift Container Platform을 사용하는 경우 대신clusterNetworkOperator
속성을 참조하십시오. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| OVN-Kubernetes Pod가 배포되는 네임스페이스입니다. |
9.1.10. .spec.consolePlugin
- 설명
-
Console
Plugin
은 사용 가능한 경우 OpenShift Container Platform 콘솔 플러그인과 관련된 설정을 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
플러그인 배포에 설정할 수평 Pod 자동 스케일러의 자동 스케일러 사양입니다. |
|
| 콘솔 플러그인 배포를 활성화합니다. spec.Loki.enable도 true여야 합니다. |
|
|
|
|
|
콘솔 플러그인 백엔드의 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
이 컨테이너에 필요한 컴퓨팅 리소스 측면에서 리소스입니다. |
9.1.11. .spec.consolePlugin.autoscaler
- 설명
-
플러그인 배포에 설정할 수평 Pod 자동 스케일러의 자동 스케일러 사양입니다.
HorizontalPodAutoscaler 문서(autoscaling/v2)를 참조하십시오.
- 유형
-
object
9.1.12. .spec.consolePlugin.portNaming
- 설명
-
portNaming
은 port-to-service 이름 변환의 구성을 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 콘솔 플러그인 포트-서비스 이름 변환을 활성화 |
|
|
|
9.1.13. .spec.consolePlugin.quickFilters
- 설명
-
quickFilters
는 Console 플러그인에 대한 빠른 필터 사전 설정을 구성합니다. - 유형
-
array
9.1.14. .spec.consolePlugin.quickFilters[]
- 설명
-
QuickFilter
는 콘솔의 빠른 필터에 대한 사전 설정 구성을 정의합니다. - 유형
-
object
- 필수 항목
-
filter
-
name
-
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 콘솔에 표시되는 필터의 이름 |
9.1.15. .spec.consolePlugin.resources
- 설명
-
이 컨테이너에 필요한 컴퓨팅 리소스 측면에서 리소스입니다.
자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 제한은 허용되는 최대 컴퓨팅 리소스 양을 나타냅니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
|
| 요청은 필요한 최소 컴퓨팅 리소스 양을 설명합니다. 컨테이너에 대한 Requests를 생략하면 구현 정의된 값을 제외하고 명시적으로 지정된 경우 기본값은 Limits로 설정됩니다. 요청은 제한을 초과할 수 없습니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
9.1.16. .spec.exporters
- 설명
-
내보내기
는 사용자 정의 사용 또는 스토리지에 대한 추가 선택적 내보내기를 정의합니다. - 유형
-
array
9.1.17. .spec.exporters[]
- 설명
-
FlowCollectorExporter
는 보강된 흐름을 보낼 추가 내보내기를 정의합니다. - 유형
-
object
- 필수 항목
-
type
-
속성 | 유형 | 설명 |
---|---|---|
|
| 강화된 IPFIX 흐름을 보내기 위한 IP 주소 및 포트와 같은 IPFIX 구성입니다. |
|
| 풍요한 흐름을 보내기 위한 주소 및 주제와 같은 Kafka 구성입니다. |
|
|
|
9.1.18. .spec.exporters[].ipfix
- 설명
- 강화된 IPFIX 흐름을 보내기 위한 IP 주소 및 포트와 같은 IPFIX 구성입니다.
- 유형
-
object
- 필수 항목
-
targetHost
-
targetPort
-
속성 | 유형 | 설명 |
---|---|---|
|
| IPFIX 외부 수신자의 주소 |
|
| IPFIX 외부 수신자용 포트 |
|
|
IPFIX 연결에 사용되는 전송 프로토콜( |
9.1.19. .spec.exporters[].kafka
- 설명
- 풍요한 흐름을 보내기 위한 주소 및 주제와 같은 Kafka 구성입니다.
- 유형
-
object
- 필수 항목
-
address
-
topic
-
속성 | 유형 | 설명 |
---|---|---|
|
| Kafka 서버의 주소 |
|
| SASL 인증 구성. [지원되지 않음(*)]. |
|
| TLS 클라이언트 구성. TLS를 사용하는 경우 주소가 TLS에 사용되는 Kafka 포트(일반적으로 9093)와 일치하는지 확인합니다. |
|
| 사용할 Kafka 주제입니다. 존재할 수 있어야 합니다. Network Observability는 이를 생성하지 않습니다. |
9.1.20. .spec.exporters[].kafka.sasl
- 설명
- SASL 인증 구성. [지원되지 않음(*)].
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 클라이언트 ID가 포함된 시크릿 또는 구성 맵에 대한 참조 |
|
| 클라이언트 보안이 포함된 시크릿 또는 구성 맵에 대한 참조 |
|
|
사용할 SASL 인증 유형 또는 SASL을 사용하지 않는 경우 |
9.1.21. .spec.exporters[].kafka.sasl.clientIDReference
- 설명
- 클라이언트 ID가 포함된 시크릿 또는 구성 맵에 대한 참조
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 구성 맵 또는 시크릿 내의 파일 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
| 파일 참조에 대해 "configmap" 또는 "secret"을 입력합니다. |
9.1.22. .spec.exporters[].kafka.sasl.clientSecretReference
- 설명
- 클라이언트 보안이 포함된 시크릿 또는 구성 맵에 대한 참조
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 구성 맵 또는 시크릿 내의 파일 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
| 파일 참조에 대해 "configmap" 또는 "secret"을 입력합니다. |
9.1.23. .spec.exporters[].kafka.tls
- 설명
- TLS 클라이언트 구성. TLS를 사용하는 경우 주소가 TLS에 사용되는 Kafka 포트(일반적으로 9093)와 일치하는지 확인합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
| TLS 활성화 |
|
|
|
|
|
|
9.1.24. .spec.exporters[].kafka.tls.caCert
- 설명
-
cacert는 인증
기관의 인증서 참조를 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.25. .spec.exporters[].kafka.tls.userCert
- 설명
-
UserCert
는 사용자 인증서 참조를 정의하고 mTLS에 사용됩니다(단방향 TLS 사용 시 무시할 수 있음) - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.26. .spec.kafka
- 설명
-
Kafka 구성을 통해 Kafka를 흐름 컬렉션 파이프라인의 일부로 브로커로 사용할 수 있습니다.
spec.deploymentModel
이KAFKA
인 경우 사용할 수 있습니다. - 유형
-
object
- 필수 항목
-
address
-
topic
-
속성 | 유형 | 설명 |
---|---|---|
|
| Kafka 서버의 주소 |
|
| SASL 인증 구성. [지원되지 않음(*)]. |
|
| TLS 클라이언트 구성. TLS를 사용하는 경우 주소가 TLS에 사용되는 Kafka 포트(일반적으로 9093)와 일치하는지 확인합니다. |
|
| 사용할 Kafka 주제입니다. 네트워크 관찰 기능(Network Observability)이 존재하지 않아야 합니다. |
9.1.27. .spec.kafka.sasl
- 설명
- SASL 인증 구성. [지원되지 않음(*)].
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 클라이언트 ID가 포함된 시크릿 또는 구성 맵에 대한 참조 |
|
| 클라이언트 보안이 포함된 시크릿 또는 구성 맵에 대한 참조 |
|
|
사용할 SASL 인증 유형 또는 SASL을 사용하지 않는 경우 |
9.1.28. .spec.kafka.sasl.clientIDReference
- 설명
- 클라이언트 ID가 포함된 시크릿 또는 구성 맵에 대한 참조
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 구성 맵 또는 시크릿 내의 파일 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
| 파일 참조에 대해 "configmap" 또는 "secret"을 입력합니다. |
9.1.29. .spec.kafka.sasl.clientSecretReference
- 설명
- 클라이언트 보안이 포함된 시크릿 또는 구성 맵에 대한 참조
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 구성 맵 또는 시크릿 내의 파일 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
| 파일 참조에 대해 "configmap" 또는 "secret"을 입력합니다. |
9.1.30. .spec.kafka.tls
- 설명
- TLS 클라이언트 구성. TLS를 사용하는 경우 주소가 TLS에 사용되는 Kafka 포트(일반적으로 9093)와 일치하는지 확인합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
| TLS 활성화 |
|
|
|
|
|
|
9.1.31. .spec.kafka.tls.caCert
- 설명
-
cacert는 인증
기관의 인증서 참조를 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.32. .spec.kafka.tls.userCert
- 설명
-
UserCert
는 사용자 인증서 참조를 정의하고 mTLS에 사용됩니다(단방향 TLS 사용 시 무시할 수 있음) - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.33. .spec.loki
- 설명
- Loki, 흐름 저장소, 클라이언트 설정.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
flow를 Loki에 저장하도록 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Loki 상태 URL에 대한 TLS 클라이언트 구성 |
|
|
|
|
|
|
|
|
|
|
| Loki URL에 대한 TLS 클라이언트 구성 |
|
|
|
9.1.34. .spec.loki.statusTls
- 설명
- Loki 상태 URL에 대한 TLS 클라이언트 구성
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
| TLS 활성화 |
|
|
|
|
|
|
9.1.35. .spec.loki.statusTls.caCert
- 설명
-
cacert는 인증
기관의 인증서 참조를 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.36. .spec.loki.statusTls.userCert
- 설명
-
UserCert
는 사용자 인증서 참조를 정의하고 mTLS에 사용됩니다(단방향 TLS 사용 시 무시할 수 있음) - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.37. .spec.loki.tls
- 설명
- Loki URL에 대한 TLS 클라이언트 구성
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
| TLS 활성화 |
|
|
|
|
|
|
9.1.38. .spec.loki.tls.caCert
- 설명
-
cacert는 인증
기관의 인증서 참조를 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.39. .spec.loki.tls.userCert
- 설명
-
UserCert
는 사용자 인증서 참조를 정의하고 mTLS에 사용됩니다(단방향 TLS 사용 시 무시할 수 있음) - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.40. .spec.processor
- 설명
-
프로세서는
에이전트에서 흐름을 수신하고, 보강하고, 메트릭을 생성하고, Loki 지속성 계층 및/또는 사용 가능한 내보내기로 전달하는 구성 요소의 설정을 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
프로세서 런타임의 |
|
|
|
|
|
|
|
| 흐름 수집기(호스트 포트)의 포트입니다. 일부 값은 허용되지 않습니다. 1024보다 크고 4500, 4789 및 6081과 달라야 합니다. |
|
|
|
|
|
|
9.1.41. .spec.processor.debug
- 설명
-
debug
를 사용하면 흐름 프로세서의 내부 구성의 일부 측면을 설정할 수 있습니다. 이 섹션은 GOGC 및 GOMAXPROCS env vars와 같은 디버깅 및 세분화된 성능 최적화를 위한 것입니다. 값을 설정하는 사용자는 자신의 위험에 이를 수행합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
9.1.42. .spec.processor.kafkaConsumerAutoscaler
- 설명
-
kafkaConsumerAutoscaler
는 Kafka 메시지를 사용하는flowlogs-pipeline-transformer
에 대해 설정하는 수평 Pod 자동 스케일러의 사양입니다. 이 설정은 Kafka가 비활성화되면 무시됩니다. HorizontalPodAutoscaler 문서(autoscaling/v2)를 참조하십시오. - 유형
-
object
9.1.43. .spec.processor.metrics
- 설명
-
메트릭
은 메트릭과 관련된 프로세서 구성을 정의합니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| Prometheus 스크랩에 대한 메트릭 서버 끝점 구성 |
9.1.44. .spec.processor.metrics.server
- 설명
- Prometheus 스크랩에 대한 메트릭 서버 끝점 구성
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| prometheus HTTP 포트 |
|
| TLS 구성입니다. |
9.1.45. .spec.processor.metrics.server.tls
- 설명
- TLS 구성입니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
TLS 구성 유형 |
9.1.46. .spec.processor.metrics.server.tls.provided
- 설명
-
유형이
PROVIDED
로 설정된 경우 TLS 구성입니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
| 인증서가 포함된 구성 맵 또는 시크릿의 이름 |
|
| 인증서가 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
|
인증서 참조에 대한 유형: |
9.1.47. .spec.processor.metrics.server.tls.providedCaFile
- 설명
-
type
이PROVIDED
로 설정된 경우 CA 파일에 대한 참조입니다. - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 구성 맵 또는 시크릿 내의 파일 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 이름 |
|
| 파일이 포함된 구성 맵 또는 시크릿의 네임스페이스입니다. 생략하면 기본값은 Network Observability가 배포된 동일한 네임스페이스를 사용하는 것입니다. 네임스페이스가 다르면 필요에 따라 마운트할 수 있도록 구성 맵 또는 시크릿이 복사됩니다. |
|
| 파일 참조에 대해 "configmap" 또는 "secret"을 입력합니다. |
9.1.48. .spec.processor.resources
- 설명
-
리소스는
이 컨테이너에 필요한 컴퓨팅 리소스입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ - 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| 제한은 허용되는 최대 컴퓨팅 리소스 양을 나타냅니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
|
| 요청은 필요한 최소 컴퓨팅 리소스 양을 설명합니다. 컨테이너에 대한 Requests를 생략하면 구현 정의된 값을 제외하고 명시적으로 지정된 경우 기본값은 Limits로 설정됩니다. 요청은 제한을 초과할 수 없습니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
10장. 네트워크 흐름 형식 참조
이는 내부 및 Kafka로 흐름을 내보낼 때 네트워크 흐름 형식의 사양입니다.
10.1. 네트워크 흐름 형식 참조
이는 내부 및 Kafka로 흐름을 내보낼 때 사용되는 네트워크 흐름 형식의 사양입니다.
이 문서는 두 가지 주요 카테고리로 구성됩니다. 레이블 과 일반 필드. 이 차이점은 Loki를 쿼리할 때만 중요합니다. 레이블 은 필드 와 달리 스트림 선택기 에서 사용해야 하기 때문입니다.
이 사양을 Kafka 내보내기 기능에 대한 참조로 읽는 경우 모든 라벨 과 필드를 일반 필드로 처리하고 Loki와 관련된 구분을 무시해야 합니다.
10.1.1. 라벨
- SrcK8S_Namespace
-
선택적
SrcK8S_Namespace:string
-
소스 네임스페이스
- DstK8S_Namespace
-
선택적
DstK8S_Namespace:string
-
대상 네임스페이스
- SrcK8S_OwnerName
-
선택적
SrcK8S_OwnerName:string
-
Deployment, StatefulSet 등과 같은 소스 소유자.
- DstK8S_OwnerName
-
선택적
DstK8S_OwnerName:string
-
배포, StatefulSet 등과 같은 대상 소유자.
- FlowDirection
-
FlowDirection:
FlowDirection
(다음 섹션 참조, Enumeration: FlowDirection)
-
FlowDirection:
노드 관찰 지점의 흐름 방향
- _RecordType
-
선택 사항
_RecordType:RecordType
-
레코드 유형: 일반 흐름 로그의 경우 'flowLog' 또는 'allConnections', 'newConnection', 'heartbeat', 'endConnection', 대화 추적을 위한 'endConnection'
10.1.2. 필드
- SrcAddr
-
srcAddr:
string
-
srcAddr:
소스 IP 주소(ipv4 또는 ipv6)
- DstAddr
-
DstAddr:
string
-
DstAddr:
대상 IP 주소(ipv4 또는 ipv6)
- SrcMac
-
srcMac:
string
-
srcMac:
소스 MAC 주소
- DstMac
-
DstMac:
string
-
DstMac:
대상 MAC 주소
- SrcK8S_Name
-
선택적
SrcK8S_Name:string
-
Pod 이름, 서비스 이름 등과 같은 Kubernetes 오브젝트와 일치하는 소스의 이름입니다.
- DstK8S_Name
-
선택 사항
DstK8S_Name:string
-
Pod 이름, 서비스 이름 등과 같은 Kubernetes 오브젝트와 일치하는 대상의 이름입니다.
- SrcK8S_Type
-
선택적
SrcK8S_Type:string
-
Pod, 서비스 등과 같은 Kubernetes 오브젝트와 일치하는 소스의 종류입니다.
- DstK8S_Type
-
선택적
DstK8S_Type:string
-
Pod 이름, 서비스 이름 등과 같은 Kubernetes 오브젝트와 일치하는 대상의 종류입니다.
- SrcPort
-
선택적
SrcPort:번호
-
소스 포트
- DstPort
-
선택적
DstPort:번호
-
대상 포트
- SrcK8S_OwnerType
-
선택적
SrcK8S_OwnerType:string
-
Deployment, StatefulSet 등과 같은 소스 Kubernetes 소유자의 종류입니다.
- DstK8S_OwnerType
-
Optional
DstK8S_OwnerType:string
-
Deployment, StatefulSet 등과 같은 대상 Kubernetes 소유자의 종류입니다.
- SrcK8S_HostIP
-
선택적
SrcK8S_HostIP:string
-
소스 노드 IP
- DstK8S_HostIP
-
선택적
DstK8S_HostIP:string
-
대상 노드 IP
- SrcK8S_HostName
-
선택적
SrcK8S_HostName:string
-
소스 노드 이름
- DstK8S_HostName
-
선택 사항
DstK8S_HostName:string
-
대상 노드 이름
- proto
-
프로토:
번호
-
프로토:
L4 프로토콜
- 인터페이스
-
선택적
인터페이스:문자열
-
네트워크 인터페이스
- IfDirection
-
선택적
IfDirection:InterfaceDirection
(다음 섹션 참조, Enumeration: InterfaceDirection)
-
네트워크 인터페이스 관찰 지점의 흐름 방향
- 플래그
-
선택적
플래그:번호
-
TCP 플래그
- 패킷
-
선택적
패킷:번호
-
패킷 수
- Packets_AB
-
선택적
Packets_AB:number
-
대화 추적에서 A ~ B 패킷에 대해 대화당 대응
- Packets_BA
-
선택적
Packets_BA:number
-
대화 추적에서 B는 대화당 패킷 카운터로
- 바이트
-
선택적
Cryostat:번호
-
바이트 수
- Bytes_AB
-
선택적
Cryostat_AB:번호
-
대화 추적에서 A~B바이트 카운터는 대화당
- Bytes_BA
-
선택적
Cryostat_BA:번호
-
대화 추적에서 B에서 B로 대화당 바이트 카운터
- IcmpType
-
선택적
IcmpType:number
-
ICMP 유형
- IcmpCode
-
선택적
IcmpCode:number
-
ICMP 코드
- PktDropLatestState
-
Optional
PktDropLatestState:string
-
드롭 다운의 PKT TCP 상태
- PktDropLatestDropCause
-
Optional
PktDropLatestDropCause:string
-
드롭 다운의 PKT 원인
- PktDropLatestFlags
-
선택적
PktDropLatestFlags:number
-
드롭 다운의 PKT TCP 플래그
- PktDropPackets
-
선택적
PktDropPackets:number
-
커널에 의해 삭제된 패킷 수
- PktDropPackets_AB
-
Optional
PktDropPackets_AB:number
-
대화 추적에서 A ~ B 패킷이 대화당 카운터를 삭제했습니다.
- PktDropPackets_BA
-
Optional
PktDropPackets_BA:number
-
대화 추적에서 패킷 간 B는 대화당 카운터를 중단했습니다.
- PktDropBytes
-
선택적
PktDropBytes:번호
-
커널에 의해 삭제된 바이트 수
- PktDropBytes_AB
-
Optional
PktDropBytes_AB:number
-
대화 추적에서 A에서 B 바이트로 대화당 카운터를 삭제했습니다.
- PktDropBytes_BA
-
Optional
PktDropBytes_BA:number
-
대화 추적에서 B ~ A 바이트가 대화당 카운터를 삭제했습니다.
- DnsId
-
선택적
DnsId:번호
-
DNS 레코드 ID
- DnsFlags
-
선택적
DnsFlags:번호
-
DNS 레코드의 DNS 플래그
- DnsFlagsResponseCode
-
선택적
DnsFlagsResponseCode:string
-
구문 분석된 DNS 헤더 RCODEs 이름
- DnsLatencyMs
-
선택적
DnsLatencyMs:number
-
응답과 요청 사이의 계산된 시간(밀리초)
- TimeFlowStartMs
-
TimeFlowStartMs:
번호
-
TimeFlowStartMs:
이 흐름의 타임스탬프 시작(밀리초)
- TimeFlowEndMs
-
TimeFlowEndMs:
number
-
TimeFlowEndMs:
이 흐름의 종료 타임스탬프(밀리초)
- TimeReceived
-
TimeReceived:
번호
-
TimeReceived:
흐름 수집기에서 이 흐름을 수신하고 처리하는 타임스탬프(초)
- TimeFlowRttNs
-
선택적
TimeFlowRttNs:번호
-
flow Round Trip Time (RTT) in nanoseconds
- _HashId
-
선택 사항
_HashId:string
-
대화 추적에서 대화 식별자
- _IsFirst
-
선택 사항
_IsFirst:문자열
-
대화 추적에서 첫 번째 흐름을 식별하는 플래그
- numFlowLogs
-
선택적
numFlowLogs:번호
-
대화 추적에서, 대화당 흐름 로그의 카운터
10.1.3. enumeration: FlowDirection
- Ingress
-
Ingress =
"0"
-
Ingress =
노드 관찰 시점에서 들어오는 트래픽
- Egress
-
egress =
"1"
-
egress =
노드 관찰 시점에서 나가는 트래픽
- 내부
-
내부 =
"2"
-
내부 =
동일한 소스 및 대상 노드가 있는 내부 트래픽
11장. 네트워크 Observability 문제 해결
네트워크 Observability 문제 해결을 지원하기 위해 일부 문제 해결 작업을 수행할 수 있습니다.
11.1. must-gather 툴 사용
must-gather 툴을 사용하여 Network Observability Operator 리소스 및 Pod 로그, FlowCollector
, Webhook
구성과 같은 클러스터 전체 리소스에 대한 정보를 수집할 수 있습니다.
프로세스
- must-gather 데이터를 저장하려는 디렉터리로 이동합니다.
다음 명령을 실행하여 클러스터 전체 must-gather 리소스를 수집합니다.
$ oc adm must-gather --image-stream=openshift/must-gather \ --image=quay.io/netobserv/must-gather
11.2. OpenShift Container Platform 콘솔에서 네트워크 트래픽 메뉴 항목 구성
OpenShift Container Platform 콘솔의 Observe 메뉴에 네트워크 트래픽 메뉴 항목이 나열되지 않은 경우 OpenShift Container Platform 콘솔에서 네트워크 트래픽 메뉴 항목을 수동으로 구성합니다.
사전 요구 사항
- OpenShift Container Platform 버전 4.10 이상이 설치되어 있어야 합니다.
프로세스
다음 명령을 실행하여
spec.consolePlugin.register
필드가true
로 설정되어 있는지 확인합니다.$ oc -n netobserv get flowcollector cluster -o yaml
출력 예
apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: consolePlugin: register: false
선택 사항: Console Operator 구성을 수동으로 편집하여
netobserv-plugin
플러그인을 추가합니다.$ oc edit console.operator.openshift.io cluster
출력 예
... spec: plugins: - netobserv-plugin ...
선택 사항: 다음 명령을 실행하여
spec.consolePlugin.register
필드를true
로 설정합니다.$ oc -n netobserv edit flowcollector cluster -o yaml
출력 예
apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: consolePlugin: register: true
다음 명령을
실행하여
콘솔 Pod의 상태가 실행 중인지 확인합니다.$ oc get pods -n openshift-console -l app=console
다음 명령을 실행하여 콘솔 Pod를 다시 시작합니다.
$ oc delete pods -n openshift-console -l app=console
- 브라우저 캐시 및 기록을 지웁니다.
다음 명령을 실행하여 Network Observability 플러그인 Pod의 상태를 확인합니다.
$ oc get pods -n netobserv -l app=netobserv-plugin
출력 예
NAME READY STATUS RESTARTS AGE netobserv-plugin-68c7bbb9bb-b69q6 1/1 Running 0 21s
다음 명령을 실행하여 Network Observability 플러그인 Pod의 로그를 확인합니다.
$ oc logs -n netobserv -l app=netobserv-plugin
출력 예
time="2022-12-13T12:06:49Z" level=info msg="Starting netobserv-console-plugin [build version: , build date: 2022-10-21 15:15] at log level info" module=main time="2022-12-13T12:06:49Z" level=info msg="listening on https://:9001" module=server
11.3. FlowLogs-Pipeline은 Kafka를 설치한 후 네트워크 흐름을 사용하지 않습니다.
deploymentModel: KAFKA
를 사용하여 흐름 수집기를 먼저 배포한 다음 Kafka를 배포한 경우 흐름 수집기가 Kafka에 올바르게 연결되지 않을 수 있습니다. Flowlogs-pipeline이 Kafka의 네트워크 흐름을 사용하지 않는 flow-pipeline Pod를 수동으로 다시 시작합니다.
프로세스
다음 명령을 실행하여 flow-pipeline 포드를 삭제하여 다시 시작합니다.
$ oc delete pods -n netobserv -l app=flowlogs-pipeline-transformer
11.4. br-int
및 br-ex
인터페이스 모두에서 네트워크 흐름을 볼 수 없음
br-ex' 및 br-int
는 OSI 계층 2에서 작동하는 가상 브릿지 장치입니다. eBPF 에이전트는 IP 및 TCP 수준, 계층 3 및 4에서 각각 작동합니다. eBPF 에이전트는 네트워크 트래픽이 물리적 호스트 또는 가상 pod 인터페이스와 같은 다른 인터페이스에서 처리할 때 br-ex
및 br-int
를 통과하는 네트워크 트래픽을 캡처할 수 있습니다. eBPF 에이전트 네트워크 인터페이스를 br-ex
및 br-int
에만 연결하도록 제한하면 네트워크 흐름이 표시되지 않습니다.
인터페이스의 부분을 수동으로 제거하거나 네트워크 인터페이스를
br-int
및 br-ex
로 제한하는 Interfaces를 제외합니다
.
프로세스
인터페이스 제거: ['br-int', 'br-ex' ]
필드. 이를 통해 에이전트는 모든 인터페이스에서 정보를 가져올 수 있습니다. 또는 Layer-3 인터페이스를 지정할 수 있습니다(예:eth0
). 다음 명령을 실행합니다.$ oc edit -n netobserv flowcollector.yaml -o yaml
출력 예
apiVersion: flows.netobserv.io/v1alpha1 kind: FlowCollector metadata: name: cluster spec: agent: type: EBPF ebpf: interfaces: [ 'br-int', 'br-ex' ] 1
- 1
- 네트워크 인터페이스를 지정합니다.
11.5. Network Observability 컨트롤러 관리자 Pod가 메모리 부족
Subscription
오브젝트에서 spec.config.resources.limits.memory
사양을 편집하여 Network Observability Operator의 메모리 제한을 늘릴 수 있습니다.
프로세스
- 웹 콘솔에서 Operator → 설치된 Operator로 이동합니다.
- 네트워크 관찰 기능을 클릭한 다음 서브스크립션 을 선택합니다.
작업 메뉴에서 서브스크립션 편집을 클릭합니다.
또는 CLI를 사용하여 다음 명령을 실행하여
Subscription
오브젝트에 대한 YAML 구성을 열 수 있습니다.$ oc edit subscription netobserv-operator -n openshift-netobserv-operator
Subscription
오브젝트를 편집하여config.resources.limits.memory
사양을 추가하고 메모리 요구 사항을 고려하여 값을 설정합니다. 리소스 고려 사항에 대한 자세한 내용은 추가 리소스를 참조하십시오.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: netobserv-operator namespace: openshift-netobserv-operator spec: channel: stable config: resources: limits: memory: 800Mi 1 requests: cpu: 100m memory: 100Mi installPlanApproval: Automatic name: netobserv-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: <network_observability_operator_latest_version> 2
추가 리소스
11.6. Loki ResourceExhausted 오류 문제 해결
네트워크 Observability에서 보낸 네트워크 흐름 데이터가 구성된 최대 메시지 크기를 초과하면 Loki가 ResourceExhausted
오류를 반환할 수 있습니다. Red Hat Loki Operator를 사용하는 경우 이 최대 메시지 크기는 100MiB로 구성됩니다.
프로세스
- Operator → 설치된 Operator 로 이동하여 프로젝트 드롭다운 메뉴에서 모든 프로젝트를 확인합니다.
- 제공된 API 목록에서 Network Observability Operator를 선택합니다.
흐름 수집기 를 클릭한 다음 YAML 보기 탭을 클릭합니다.
-
Loki Operator를 사용하는 경우
spec.loki.batchSize
값이 98MiB를 초과하지 않는지 확인합니다. -
Grafana Loki와 같은 Red Hat Loki Operator와 다른 Loki 설치 방법을 사용하는 경우
grpc_server_max_recv_msg_size
Loki 서버 설정이FlowCollector
리소스spec.loki.batchSize
값보다 높은지 확인합니다. 그렇지 않은 경우grpc_server_max_recv_msg_size
값을 늘리거나 제한보다 낮도록spec.loki.batchSize
값을 줄여야 합니다.
-
Loki Operator를 사용하는 경우
- FlowCollector 를 편집한 경우 저장을 클릭합니다.
11.7. 리소스 문제 해결
11.8. LokiStack 속도 제한 오류
Loki 테넌트에 배치된 속도 제한은 스트림 제한 초과(limit:xMB/sec)를 수집하는 동안
데이터 및 429 오류가 발생할 수 있습니다. 이 오류를 알리기 위해 경고를 설정하는 것이 좋습니다. 자세한 내용은 이 섹션의 추가 리소스의 "NetObserv 대시보드에 대한 Loki 속도 제한 경고 생성"을 참조하십시오.
다음 절차에 표시된 대로 perStreamRateLimit
및 perStreamRateLimitBurst
사양을 사용하여 LokiStack CRD를 업데이트할 수 있습니다.
프로세스
- Operator → 설치된 Operator 로 이동하여 프로젝트 드롭다운에서 모든 프로젝트를 확인합니다.
- Loki Operator 를 찾고 LokiStack 탭을 선택합니다.
YAML 보기를 사용하여 기존 LokiStack 인스턴스를 생성하거나 편집하여
perStreamRateLimit
및perStreamRateLimitBurst
사양을 추가합니다.apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: loki namespace: netobserv spec: limits: global: ingestion: perStreamRateLimit: 6 1 perStreamRateLimitBurst: 30 2 tenants: mode: openshift-network managementState: Managed
- 저장을 클릭합니다.
검증
perStreamRateLimit
및 perStreamRateLimitBurst
사양을 업데이트하면 클러스터 재시작의 pod가 429 rate-limit 오류가 더 이상 발생하지 않습니다.
Legal Notice
Copyright © 2024 Red Hat, Inc.
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.