네트워크 관찰 기능


OpenShift Container Platform 4.19

OpenShift Container Platform에서 Network Observability Operator 구성 및 사용

Red Hat OpenShift Documentation Team

초록

Network Observability Operator를 사용하여 OpenShift Container Platform 클러스터의 네트워크 트래픽 흐름을 관찰하고 분석합니다.

1장. Network Observability Operator 릴리스 노트

Network Observability Operator를 사용하면 관리자가 OpenShift Container Platform 클러스터의 네트워크 트래픽 흐름을 관찰하고 분석할 수 있습니다.

이 릴리스 노트에서는 OpenShift Container Platform의 Network Observability Operator의 개발을 추적합니다.

Network Observability Operator 에 대한 개요는 Network Observability Operator 정보를 참조하십시오.

1.1. Network Observability Operator 1.8.1

Network Observability Operator 1.8.1에 대해 다음 권고를 사용할 수 있습니다.

1.1.1. CVE

1.1.2. 버그 수정

  • 이번 수정을 통해 Observe 메뉴가 향후 OpenShift Container Platform 버전에서 한 번만 표시됩니다. (NETOBSERV-2139)

1.2. Network Observability Operator 1.8.0

Network Observability Operator 1.8.0에 대해 다음 권고를 사용할 수 있습니다.

1.2.1. 새로운 기능 및 개선 사항

1.2.1.1. 패킷 변환

이제 번역된 엔드포인트 정보를 사용하여 네트워크 흐름을 강화하여 서비스뿐만 아니라 특정 백엔드 Pod도 표시할 수 있으므로 요청 시 어떤 Pod를 확인할 수 있습니다.

자세한 내용은 끝점 변환(xlat)엔드포인트 변환(xlat) 을 참조하십시오.

1.2.1.2. OVN-Kubernetes 네트워킹 이벤트 추적
중요

OVN-Kubernetes 네트워킹 이벤트 추적은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

이제 네트워크 Observability에서 네트워크 이벤트 추적을 사용하여 네트워크 정책, 관리 네트워크 정책 및 송신 방화벽을 포함하여 OVN-Kubernetes 이벤트에 대한 통찰력을 얻을 수 있습니다.

자세한 내용은 네트워크 이벤트 보기를 참조하십시오.

1.2.1.3. 1.8의 eBPF 성능 개선
  • Network Observability 이제 CPU별 맵 대신 해시 맵을 사용합니다. 즉, 이제 네트워크 흐름 데이터가 커널 공간에서 추적되고 새 패킷도 집계됩니다. 이제 네트워크 흐름의 중복 제거가 커널에서 발생할 수 있으므로 커널과 사용자 공간 간의 데이터 전송 크기가 향상될 수 있습니다. 이러한 eBPF 성능이 개선됨에 따라 eBPF 에이전트의 40%에서 57% 사이의 CPU 리소스 감소를 확인할 수 있습니다.
1.2.1.4. Network Observability CLI

이 릴리스에 대해 다음과 같은 새로운 기능, 옵션 및 필터가 Network Observability CLI에 추가됩니다.

  • oc netobserv metrics 명령을 실행하여 활성화된 필터를 사용하여 메트릭을 캡처합니다.
  • 흐름 및 패킷 캡처와 함께 --backworkspace 옵션을 사용하고 oc netobserv를 실행하면 백그라운드 실행 및 oc netobserv 복사 의 진행 상황을 확인하여 생성된 로그를 다운로드하여 백그라운드에서 CLI를 실행합니다.
  • --get-subnets 옵션을 사용하여 머신, Pod 및 서비스 서브넷을 사용하여 흐름 및 메트릭 캡처를 제공합니다.
  • 패킷, 흐름 및 메트릭 캡처와 함께 사용할 수 있는 새로운 필터링 옵션:

    • IP, 포트, 프로토콜, 동작, TCP 플래그 등에 대한 eBPF 필터
    • --node-selector를 사용하는 사용자 정의 노드
    • drops only using --drops
    • --regexes를 사용하는 모든 필드

자세한 내용은 Network Observability CLI 참조를 참조하십시오.

1.2.2. 버그 수정

  • 이전에는 Network Observability Operator에 메트릭 서버의 RBAC를 관리하는 "kube-rbac-proxy" 컨테이너가 제공되었습니다. 이 외부 구성 요소는 더 이상 사용되지 않으므로 제거해야 했습니다. 이제 사이드카 프록시 없이도 Kubernetes controller-runtime을 통해 직접 TLS 및 RBAC 관리로 교체됩니다. (NETOBSERV-1999)
  • 이전 버전에서는 OpenShift Container Platform 콘솔 플러그인에서 여러 값과 일치하지 않은 키를 필터링하면 아무 것도 필터링하지 않았습니다. 이번 수정을 통해 필터링된 값이 없는 모든 흐름인 예상 결과가 반환됩니다. (NETOBSERV-1990)
  • 이전에는 Loki가 비활성화된 OpenShift Container Platform 콘솔 플러그인에서 호환되지 않는 필터 및 집계 세트를 선택했기 때문에 "빌드 쿼리할 수 없음" 오류가 발생했습니다. 이제 이 오류는 사용자가 필터 비호환성을 인식하면서 호환되지 않는 필터를 자동으로 비활성화하여 방지할 수 있습니다. (NETOBSERV-1977)
  • 이전 버전에서는 콘솔 플러그인에서 흐름 세부 정보를 볼 때 ICMP 정보가 항상 측면 패널에 표시되어 비ICMP 흐름에 대한 "정정되지 않은" 값이 표시되었습니다. 이번 수정으로 비ICMP 흐름에 대해 ICMP 정보가 표시되지 않습니다. (NETOBSERV-1969)
  • 이전에는 트래픽 흐름 보기에서 "Export data" 링크가 의도한 대로 작동하지 않아 빈 CSV 보고서가 생성되었습니다. 이제 내보내기 기능이 복원되어 비어 있지 않은 CSV 데이터가 생성됩니다. (NETOBSERV-1958)
  • 이전에는 Loki가 활성화된 경우에만 대화 로그가 유용하더라도 processor.logTypes Conversations,EndedConversations 또는 All with loki.enablefalse 로 설정하여 FlowCollector 를 구성할 수 있었습니다. 이로 인해 리소스 사용량 낭비가 발생했습니다. 이제 이 구성이 유효하지 않으며 검증 Webhook에서 거부됩니다. (NETOBSERV-1957)
  • processor.logTypes모두 로 설정하여 FlowCollector 를 구성하면 다른 옵션보다 CPU, 메모리 및 네트워크 대역폭과 같은 훨씬 더 많은 리소스가 사용됩니다. 이는 이전에 문서화되지 않았습니다. 이제 문서화되어 검증 Webhook에서 경고를 트리거합니다. (NETOBSERV-1956)
  • 이전에는 높은 부하에서 eBPF 에이전트가 생성한 일부 흐름이 실수로 해제되어 트래픽 대역폭이 과소 평가되었습니다. 이제 생성된 흐름이 해제되지 않습니다. (NETOBSERV-1954)
  • 이전에는 FlowCollector 구성에서 네트워크 정책을 활성화할 때 Operator Webhook에 대한 트래픽이 차단되어 FlowMetrics API 유효성 검사가 중단되었습니다. 이제 Webhook에 대한 트래픽이 허용됩니다. (NETOBSERV-1934)
  • 이전 버전에서는 기본 네트워크 정책을 배포할 때 네임스페이스 openshift-consoleopenshift-monitoring추가Namespaces 필드에 기본적으로 설정되어 복제된 규칙이 생성되었습니다. 이제 기본적으로 설정된 추가 네임스페이스가 없으므로 중복되는 규칙을 방지하는 데 도움이 됩니다.(NETOBSERV-1933)
  • 이전에는 OpenShift Container Platform 콘솔 플러그인에서 TCP 플래그 필터링이 원하는 플래그만 있는 흐름과 일치했습니다. 이제 원하는 플래그를 갖는 모든 흐름이 필터링된 흐름에 표시됩니다. (NETOBSERV-1890)
  • eBPF 에이전트가 권한 있는 모드에서 실행되고 Pod가 지속적으로 추가되거나 삭제되면 파일 설명자(FD) 누출이 발생합니다. 이 수정을 통해 네트워크 네임스페이스가 삭제될 때 FD가 올바르게 분류됩니다. (NETOBSERV-2063)
  • 이전에는 CLI 에이전트 DaemonSet 이 마스터 노드에 배포되지 않았습니다. 이제 테인트가 설정된 경우 모든 노드에서 예약할 수 있도록 에이전트 DaemonSet 에 허용 오차가 추가됩니다. 이제 CLI 에이전트 DaemonSet Pod가 모든 노드에서 실행됩니다. (NETOBSERV-2030)
  • 이전에는 Prometheus 스토리지만 사용할 때 소스 리소스소스 대상 필터가 자동 완성되지 않았습니다. 이제 이 문제가 해결되었으며 제안 사항이 예상대로 표시됩니다. (NETOBSERV-1885)
  • 이전에는 토폴로지 보기에 여러 IP를 사용하는 리소스가 별도로 표시되었습니다. 이제 리소스가 뷰의 단일 토폴로지 노드로 표시됩니다. (NETOBSERV-1818)
  • 이전에는 마우스 포인터가 열 위에 있을 때 콘솔이 네트워크 트래픽 테이블 뷰 콘텐츠를 새로 고칩니다. 이제 디스플레이가 고정되어 마우스를 올려도 행 높이가 일정하게 유지됩니다. (NETOBSERV-2049)

1.2.3. 확인된 문제

  • 클러스터에 중복된 서브넷을 사용하는 트래픽이 있는 경우 eBPF 에이전트가 중복된 IP의 흐름을 혼합할 위험이 적습니다. 이는 서로 다른 연결이 정확히 동일한 소스 및 대상 IP가 있고 포트와 프로토콜이 5초 내에 있고 동일한 노드에서 발생하는 경우 발생할 수 있습니다. 보조 네트워크 또는 UDN을 구성하지 않으면 이 작업을 수행할 수 없습니다. 이 경우에도 소스 포트가 일반적으로 좋은 차이점이기 때문에 일반적인 트래픽에서는 여전히 매우 어려울 수 있습니다. (NETOBSERV-2115)
  • OpenShift Container Platform 웹 콘솔 양식 보기의 FlowCollector 리소스 spec.exporters 섹션에 구성할 내보내기 유형을 선택하면 해당 유형에 대한 자세한 구성이 나타나지 않습니다. 해결방법은 YAML을 직접 구성하는 것입니다. (NETOBSERV-1981)

1.3. Network Observability Operator 1.7.0

Network Observability Operator 1.7.0에 대해 다음 권고를 사용할 수 있습니다.

1.3.1. 새로운 기능 및 개선 사항

1.3.1.1. OpenTelemetry 지원

이제 OpenTelemetry의 Red Hat 빌드와 같은 호환되는 OpenTelemetry 엔드포인트로 보강된 네트워크 흐름을 내보낼 수 있습니다. 자세한 내용은 Export enriched network flow data 를 참조하십시오.

1.3.1.2. Network Observability Developer 모드

이제 개발자 화면에서 Network Observability를 사용할 수 있습니다. 자세한 내용은 OpenShift Container Platform 콘솔 통합을 참조하십시오.

1.3.1.3. TCP 플래그 필터링

이제 tcpFlags 필터를 사용하여 eBPF 프로그램에서 처리하는 패킷의 볼륨을 제한할 수 있습니다. 자세한 내용은 Flow filter configuration parameters,eBPF flow rule filter, and Detecting SYN flooding using the FlowMetric API 및 TCP 플래그 를 참조하십시오.

1.3.1.4. OpenShift Virtualization의 네트워크 Observability

OVN(Open Virtual Network)-Kubernetes와 같이 보조 네트워크에 연결된 VM에서 제공되는 eBPF가 풍부한 네트워크 흐름을 확인하여 OpenShift Virtualization 설정에서 네트워킹 패턴을 확인할 수 있습니다. 자세한 내용은 네트워크 관찰 기능을 위한 VM(가상 머신) 보조 네트워크 인터페이스 구성을 참조하십시오.

1.3.1.5. 네트워크 정책은 FlowCollector CR(사용자 정의 리소스)에 배포

이번 릴리스에서는 FlowCollector CR을 구성하여 네트워크 관찰 기능에 대한 네트워크 정책을 배포할 수 있습니다. 이전에는 네트워크 정책이 필요한 경우 수동으로 생성해야 했습니다. 네트워크 정책을 수동으로 생성하는 옵션은 계속 사용할 수 있습니다. 자세한 내용은 FlowCollector 사용자 정의 리소스를 사용하여 수신 네트워크 정책 구성을 참조하십시오.

1.3.1.6. FIPS 컴플라이언스
  • FIPS 모드에서 실행되는 OpenShift Container Platform 클러스터에서 Network Observability Operator를 설치하고 사용할 수 있습니다.

    중요

    클러스터의 FIPS 모드를 활성화하려면 FIPS 모드에서 작동하도록 구성된 RHEL(Red Hat Enterprise Linux) 컴퓨터에서 설치 프로그램을 실행해야 합니다. RHEL에서 FIPS 모드를 구성하는 방법에 대한 자세한 내용은 RHEL을 FIPS 모드로 전환 을 참조하십시오.

    FIPS 모드에서 부팅된 RHEL(Red Hat Enterprise Linux CoreOS) 또는 RHCOS(Red Hat Enterprise Linux CoreOS)를 실행하는 경우 OpenShift Container Platform 코어 구성 요소는 x86_64, ppc64le 및 s390x 아키텍처에서만 FIPS 140-2/140-3 Validation에 대해 NIST에 제출된 RHEL 암호화 라이브러리를 사용합니다.

1.3.1.7. eBPF 에이전트 개선 사항

eBPF 에이전트에 대해 다음과 같은 향상된 기능을 사용할 수 있습니다.

  • DNS 서비스가 53 이 아닌 다른 포트에 매핑되는 경우 spec.agent.ebpf.advanced.env.DNS_TRACKING_PORT 를 사용하여 이 DNS 추적 포트를 지정할 수 있습니다.
  • 이제 전송 프로토콜(TCP, UDP 또는 SCTP) 필터링 규칙에 두 개의 포트를 사용할 수 있습니다.
  • 이제 protocol 필드를 비워 두어 와일드카드 프로토콜을 사용하여 전송 포트를 필터링할 수 있습니다.

자세한 내용은 FlowCollector API 사양 을 참조하십시오.

1.3.1.8. Network Observability CLI

이제 Network Observability CLI(oc netobserv)를 일반적으로 사용할 수 있습니다. 1.6 기술 프리뷰 릴리스 이후 다음과 같은 향상된 기능이 추가되었습니다. * 흐름 캡처와 유사한 패킷 캡처를 위한 eBPF 강화 필터가 있습니다. * 흐름 및 패킷 캡처와 함께 filter tcp_flags 를 사용할 수 있습니다. * auto-teardown 옵션은 max-bytes 또는 max-time에 도달하면 사용할 수 있습니다. 자세한 내용은 Network Observability CLINetwork Observability CLI 1.7.0 을 참조하십시오.

1.3.2. 버그 수정

  • 이전에는 RHEL 9.2 실시간 커널을 사용할 때 일부 Webhook가 작동하지 않았습니다. 이제 RHEL 9.2 실시간 커널이 사용 중인지 확인할 수 있는 수정 사항이 적용되어 있습니다. 커널을 사용하는 경우 패킷 드롭과 s390x 아키텍처를 사용할 때 Round-trip Time과 같이 작동하지 않는 기능에 대한 경고가 표시됩니다. 수정 사항은 OpenShift 4.16 이상에서 참조하십시오. (NETOBSERV-1808)
  • 이전에는 개요 탭의 패널 관리 대화 상자에서 ,bar,donut 또는 줄에서 필터링에 결과가 표시되지 않았습니다. 이제 사용 가능한 패널이 올바르게 필터링됩니다. (NETOBSERV-1540)
  • 이전에는 높은 응력 하에서 eBPF 에이전트는 많은 수의 작은 흐름을 생성했으며 거의 집계되지 않은 상태로 전환 할 수 없었습니다. 이번 수정을 통해 집계 프로세스가 여전히 높은 부하에서 유지 관리되어 흐름이 덜 생성됩니다. 이번 수정을 통해 eBPF 에이전트뿐만 아니라 flowlogs-pipeline 및 Loki에서도 리소스 소비가 향상됩니다. (NETOBSERV-1564)
  • 이전 버전에서는 namespace_flows_total 메트릭 대신 workload_flows_total 메트릭을 활성화하면 상태 대시보드가 네임스페이스 흐름 차트로 표시되지 않았습니다. 이번 수정으로 workload_flows_total 이 활성화된 경우 상태 대시보드에 흐름 차트가 표시됩니다. (NETOBSERV-1746)
  • 이전 버전에서는 FlowMetrics API를 사용하여 사용자 지정 지표를 생성하고 나중에 새 레이블을 추가하여 레이블을 수정할 때 지표가 중지되고 error가 flowlogs-pipeline 로그에 표시되었습니다. 이번 수정을 통해 레이블을 수정할 수 있으며 flowlogs-pipeline 로그에서 오류가 더 이상 발생하지 않습니다. (NETOBSERV-1748)
  • 이전에는 기본 Loki WriteBatchSize 구성이 있는 불일치가 있었습니다. 이는 FlowCollector CRD 기본값에서 100KB로 설정되었으며 OLM 샘플 또는 기본 구성에서 10MB로 설정되었습니다. 이제 둘 다 10MB에 맞게 조정되어 일반적으로 더 나은 성능과 리소스 공간을 줄일 수 있습니다. (NETOBSERV-1766)
  • 이전에는 프로토콜을 지정하지 않은 경우 포트의 eBPF 흐름 필터가 무시되었습니다. 이번 수정을 통해 포트 및 또는 프로토콜에 따라 eBPF 흐름 필터를 독립적으로 설정할 수 있습니다. (NETOBSERV-1779)
  • 이전에는 Pod에서 서비스로의 트래픽이 토폴로지 보기에서 숨겨져 있었습니다. 서비스에서 Pod로의 반환 트래픽만 표시되었습니다. 이번 수정으로 해당 트래픽이 올바르게 표시됩니다. (NETOBSERV-1788)
  • 이전에는 네임스페이스와 같이 자동 완료를 트리거한 항목을 필터링하려고 할 때 네트워크 Observability에 액세스할 수 있는 비 클러스터 관리자 사용자가 콘솔 플러그인에서 오류가 발생했습니다. 이번 수정을 통해 오류가 표시되지 않고 자동 완성이 예상되는 결과를 반환합니다. (NETOBSERV-1798)
  • 보조 인터페이스 지원이 추가되면 인터페이스 알림을 확인하려면 네트워크 네임스페이스를 netlink에 등록하기 위해 여러 번 반복해야 했습니다. 동시에 실패한 핸들러로 인해 TCX 후크와 달리 인터페이스가 중단될 때 핸들러를 명시적으로 제거해야 하므로 파일 설명자가 누출되었습니다. 또한 네트워크 네임스페이스가 삭제되면 netlink goroutine 소켓을 종료하는 Go close 채널 이벤트가 없으므로 스레드가 누출되었습니다. 이제 Pod를 생성하거나 삭제할 때 파일 설명자를 유출하거나 스레드를 이동하지 않습니다. (NETOBSERV-1805)
  • 이전에는 흐름 JSON에서 관련 데이터를 사용할 수 있는 경우에도 ICMP 유형과 값이 트래픽 흐름 테이블에 'n/a'를 표시했습니다. 이번 수정으로 ICMP 열에 흐름 테이블에 예상대로 관련 값이 표시됩니다. (NETOBSERV-1806)
  • 이전에는 콘솔 플러그인에서 설정되지 않은 DNS 대기 시간과 같은 설정되지 않은 필드를 필터링할 수 없었습니다. 이번 수정을 통해 설정되지 않은 필드를 필터링할 수 있습니다. (NETOBSERV-1816)
  • 이전 버전에서는 OpenShift 웹 콘솔 플러그인에서 필터를 지우면 다른 페이지로 이동하여 필터가 있는 페이지로 돌아간 후 필터가 다시 발생하는 경우가 있었습니다. 이번 수정을 통해 필터가 지워진 후 예기치 않게 다시 나타나지 않습니다. (NETOBSERV-1733)

1.3.3. 확인된 문제

  • w When you use the must-gather tool with Network Observability, logs are not collected when the cluster has FIPS enabled. (NETOBSERV-1830)
  • netobserv 네임스페이스에 네트워크 정책을 설치하는 FlowCollector 에서 spec.networkPolicy 가 활성화되면 FlowMetrics API를 사용할 수 없습니다. 네트워크 정책 블록은 검증 Webhook에 대한 호출을 차단합니다. 이 문제를 해결하려면 다음 네트워크 정책을 사용하십시오.

    kind: NetworkPolicy
    apiVersion: networking.k8s.io/v1
    metadata:
      name: allow-from-hostnetwork
      namespace: netobserv
    spec:
      podSelector:
        matchLabels:
          app: netobserv-operator
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  policy-group.network.openshift.io/host-network: ''
      policyTypes:
        - Ingress
    Copy to Clipboard Toggle word wrap

    (NETOBSERV-193)

1.4. Network Observability Operator 1.6.2

Network Observability Operator 1.6.2에서 다음 권고를 사용할 수 있습니다.

1.4.1. CVE

1.4.2. 버그 수정

  • 보조 인터페이스 지원이 추가되면 인터페이스 알림을 보려면 네트워크 네임스페이스를 netlink에 등록하기 위해 여러 번 반복해야 했습니다. 동시에 실패한 핸들러로 인해 TCX 후크와 달리 인터페이스가 중단될 때 핸들러를 명시적으로 제거해야 하므로 파일 설명자가 누출되었습니다. 이제 Pod를 생성하고 삭제할 때 파일 설명자가 더 이상 유출되지 않습니다. (NETOBSERV-1805)

1.4.3. 확인된 문제

네트워크 Observability가 향후 OpenShift Container Platform 클러스터에 설치되지 않도록 하는 콘솔 플러그인에 호환성 문제가 있었습니다. 1.6.2로 업그레이드하면 호환성 문제가 해결되고 네트워크 관찰 기능을 예상대로 설치할 수 있습니다. (NETOBSERV-1737)

1.5. Network Observability Operator 1.6.1

Network Observability Operator 1.6.1에 대해 다음 권고를 사용할 수 있습니다.

1.5.1. CVE

1.5.2. 버그 수정

  • 이전 버전에서는 원인 및 TCP 상태와 같은 패킷 드롭에 대한 정보는 Loki 데이터 저장소에서만 사용할 수 있었으며 Prometheus에서는 사용할 수 없었습니다. 이러한 이유로 OpenShift 웹 콘솔 플러그인 개요 의 드롭 통계는 Loki에서만 사용할 수 있었습니다. 이번 수정을 통해 패킷 삭제에 대한 정보도 메트릭에 추가되므로 Loki가 비활성화될 때 삭제 통계를 볼 수 있습니다. (NETOBSERV-1649)
  • eBPF 에이전트 PacketDrop 기능이 활성화되고 샘플링이 1 보다 큰 값으로 구성되면 삭제된 바이트와 삭제된 패킷이 샘플링 구성을 무시했습니다. 이는 목적에 따라 수행되었으며, 드롭 다운을 놓지 않기 위해 수행되었지만 부작용은 non-drops와 비교하여 보고된 드롭의 비율이 유도되었다는 것입니다. 예를 들어 1:1000 과 같은 매우 높은 샘플링 속도로 콘솔 플러그인에서 관찰하면 거의 모든 트래픽이 삭제되는 것처럼 보였습니다. 이번 수정을 통해 드롭된 바이트 및 패킷으로 샘플링 구성이 적용됩니다. (NETOBSERV-1676)
  • 이전에는 인터페이스가 먼저 생성되고 eBPF 에이전트가 배포되었는지 SR-IOV 보조 인터페이스가 탐지되지 않았습니다. 에이전트가 먼저 배포된 후 SR-IOV 인터페이스가 생성된 경우에만 탐지되었습니다. 이번 수정을 통해 배포 순서에 관계없이 SR-IOV 보조 인터페이스가 감지됩니다. (NETOBSERV-1697)
  • 이전 버전에서는 Loki가 비활성화되면 OpenShift 웹 콘솔의 토폴로지 보기에 관련 기능이 활성화되지 않은 경우에도 네트워크 토폴로지 다이어그램 옆에 클러스터영역 집계 옵션이 표시되었습니다. 이번 수정으로 슬라이더는 활성화된 기능에 따라 옵션만 표시합니다. (NETOBSERV-1705)
  • 이전에는 Loki가 비활성화되고 OpenShift 웹 콘솔을 처음 로드할 때 상태 코드 400 Loki를 사용하여 요청이 실패했습니다. 이번 수정을 통해 더 이상 오류가 발생하지 않습니다. (NETOBSERV-1706)
  • 이전 버전에서는 OpenShift 웹 콘솔의 토폴로지 보기에서 그래프 노드 옆에 있는 Step into 아이콘을 클릭하면 선택한 그래프 노드에 중점을 두기 위해 필요에 따라 필터가 적용되지 않아 OpenShift 웹 콘솔에 토폴로지 보기가 표시되었습니다. 이번 수정을 통해 필터가 올바르게 설정되어 토폴로지 가 효과적으로 축소됩니다. 이 변경의 일환으로 노드의 단계로 이동하여 이제 네임스페이스 범위 대신 리소스 범위로 이동합니다. (NETOBSERV-1720)
  • 이전 버전에서는 Loki가 비활성화되었을 때 범위가 Owner 으로 설정된 OpenShift 웹 콘솔의 토폴로지 보기에서 모든 그래프 노드 옆에 있는 Step into 아이콘을 클릭하면 Loki 없이 사용할 수 없는 Resource 로 범위가 표시되어 오류 메시지가 표시되었습니다. 이번 수정을 통해 Loki가 비활성화 될 때 Owner 범위에서 단계별 아이콘이 표시되지 않으므로 이 시나리오는 더 이상 발생하지 않습니다.(NETOBSERV-1721)
  • 이전 버전에서는 Loki가 비활성화되면 그룹을 설정할 때 OpenShift 웹 콘솔의 토폴로지 보기에 오류가 표시되었지만 그룹이 유효하지 않도록 범위가 변경되었습니다. 이번 수정을 통해 잘못된 그룹이 제거되어 오류가 발생하지 않습니다. (NETOBSERV-1722)
  • YAML 보기와 달리 OpenShift 웹 콘솔 양식 보기에서 FlowCollector 리소스를 생성할 때 웹 콘솔에서 다음 설정을 잘못 관리했습니다. agent.ebpf.metrics.enableprocessor.subnetLabels.openShiftAutoDetect. 이러한 설정은 양식 보기가 아닌 YAML 보기 에서만 비활성화할 수 있습니다. 혼동을 피하기 위해 양식 보기에서 이러한 설정이 제거되었습니다. YAML 보기에서 계속 액세스할 수 있습니다. (NETOBSERV-1731)
  • 이전에는 eBPF 에이전트가 비정상적인 충돌(예: SIGTERM 신호로 인한 충돌) 전에 설치된 트래픽 제어 흐름을 정리할 수 없었습니다. 이로 인해 이전 항목이 제거되지 않았기 때문에 이름이 동일한 여러 트래픽 제어 흐름 필터가 생성되었습니다. 이번 수정을 통해 에이전트가 시작될 때 새 트래픽을 설치하기 전에 이전에 설치한 모든 트래픽 제어 흐름이 정리됩니다. (NETOBSERV-1732)
  • 이전 버전에서는 사용자 지정 서브넷 레이블을 구성하고 OpenShift 서브넷을 자동으로 감지할 때 OpenShift 서브넷이 사용자 지정 것보다 우선하여 클러스터 서브넷의 사용자 지정 레이블 정의가 없었습니다. 이번 수정을 통해 사용자 정의 정의된 서브넷이 우선하므로 클러스터 서브넷에서 사용자 지정 레이블을 정의할 수 있습니다. (NETOBSERV-1734)

1.6. Network Observability Operator 1.6.0

Network Observability Operator 1.6.0에 대해 다음 권고를 사용할 수 있습니다.

중요

Network Observability Operator의 최신 버전으로 업그레이드하기 전에 FlowCollector CRD의 저장된 버전을 마이그레이션 해야 합니다. 이 해결 방법에 대한 자동화된 솔루션은 NETOBSERV-1747 로 계획되어 있습니다.

1.6.1. 새로운 기능 및 개선 사항

1.6.1.1. Loki 없이 Network Observability Operator 사용 개선

이제 Network Observability Operator를 사용할 때 Prometheus 지표를 사용하고 스토리지의 Loki에 더 적게 사용할 수 있습니다. 자세한 내용은 Loki가 없는 네트워크 Observability 를 참조하십시오.

1.6.1.2. 사용자 정의 메트릭 API

FlowMetrics API를 사용하여 flowlogs 데이터에서 사용자 지정 메트릭을 생성할 수 있습니다. FlowLogs 데이터는 Prometheus 라벨과 함께 사용하여 대시보드에 대한 클러스터 정보를 사용자 지정할 수 있습니다. 흐름 및 메트릭에서 식별할 모든 서브넷에 대한 사용자 지정 레이블을 추가할 수 있습니다. 이 향상된 기능을 사용하여 흐름 로그와 메트릭 모두에 존재하는 새 라벨 SrcSubnetLabelDstSubnetLabel 을 사용하여 외부 트래픽을 보다 쉽게 식별할 수 있습니다. 이러한 필드는 외부 트래픽이 있을 때 비어 있으므로 이를 식별하는 방법이 제공됩니다. 자세한 내용은 사용자 정의 메트릭FlowMetric API 참조를 참조하십시오.

1.6.1.3. eBPF 성능 향상

다음과 같은 업데이트로 CPU 및 메모리 측면에서 eBPF 에이전트의 성능이 향상되었습니다.

  • eBPF 에이전트는 이제 TC 대신 TCX Webhook를 사용합니다.
  • NetObserv / Health 대시보드에는 eBPF 메트릭이 표시되는 새 섹션이 있습니다.

    • 새로운 eBPF 메트릭을 기반으로 eBPF 에이전트가 흐름을 삭제하는 경우 경고에 알립니다.
  • Loki 스토리지 수요는 중복된 흐름이 제거되도록 크게 감소합니다. 네트워크 인터페이스당 여러 개별 중복된 흐름을 보유하는 대신 관련 네트워크 인터페이스 목록이 포함된 중복된 하나의 흐름이 있습니다.
중요

중복된 흐름 업데이트를 사용하면 네트워크 트래픽 테이블의 InterfaceInterface Direction 필드가 InterfacesInterface Directions 로 이름이 변경되므로 이러한 필드를 사용하여 북마크된 빠른 필터 쿼리를 인터페이스ifdirections 로 업데이트해야 합니다.

자세한 내용은 eBPF 에이전트 경고빠른 필터 사용을 참조하십시오.

1.6.1.4. eBPF 컬렉션 규칙 기반 필터링

규칙 기반 필터링을 사용하여 생성된 흐름의 볼륨을 줄일 수 있습니다. 이 옵션이 활성화되면 eBPF 에이전트 통계의 Netobserv / Health 대시보드에는 필터링된 흐름 속도 보기가 있습니다. 자세한 내용은 eBPF 흐름 규칙 필터를 참조하십시오.

1.6.2. 기술 프리뷰 기능

이 릴리스의 일부 기능은 현재 기술 프리뷰 단계에 있습니다. 이러한 실험적 기능은 프로덕션용이 아닙니다. 해당 기능은 Red Hat Customer Portal의 지원 범위를 참조하십시오.

기술 프리뷰 기능 지원 범위

1.6.2.1. Network Observability CLI

Network Observability CLI를 사용하여 Network Observability Operator를 설치할 필요 없이 네트워크 트래픽 문제를 디버그하고 해결할 수 있습니다. 캡처하는 동안 영구 스토리지 요구 사항 없이 실시간으로 흐름 및 패킷 데이터를 캡처하고 시각화합니다. 자세한 내용은 Network Observability CLINetwork Observability CLI 1.6.0 을 참조하십시오.

1.6.3. 버그 수정

  • 이전에는 FlowMetrics API 생성의 OLM(Operator Lifecycle Manager) 양식에 대한 OpenShift containter 플랫폼 문서에 대한 dead link가 표시되었습니다. 이제 유효한 페이지를 가리키도록 링크가 업데이트되었습니다. (NETOBSERV-1607)
  • 이전에는 Operator Hub의 Network Observability Operator 설명에 문서에 대한 손상된 링크가 표시되었습니다. 이번 수정으로 이 링크가 복원됩니다. (NETOBSERV-1544)
  • 이전 버전에서는 Loki가 비활성화되었으며 Loki 모드가 LokiStack 으로 설정되었거나 Loki 수동 TLS 구성이 구성된 경우 Network Observability Operator에서 Loki CA 인증서를 읽으려고 했습니다. 이번 수정을 통해 Loki가 비활성화되면 Loki 구성에 설정이 있더라도 Loki 인증서를 읽지 않습니다. (NETOBSERV-1647)
  • 이전에는 Network Observability Operator의 oc must-gather 플러그인이 amd64 아키텍처에서만 작동했으며, 플러그인이 oc 바이너리에 amd64 를 사용했기 때문에 다른 아키텍처에서만 작동했습니다. 이제 Network Observability Operator oc must-gather 플러그인은 모든 아키텍처 플랫폼에서 로그를 수집합니다.
  • 이전 버전에서는 을 사용하여 IP 주소를 필터링 때 Network Observability Operator에서 요청 오류를 반환했습니다. 이제 IP 필터링은 IP 주소 및 범위에 대해 동일하거나 동일하지 않은 경우 모두에서 작동합니다. (NETOBSERV-1630)
  • 이전에는 사용자가 관리자가 아닌 경우 웹 콘솔에서 네트워크 트래픽 보기의 선택한 탭과 오류 메시지가 일치하지 않았습니다. 이제 개선된 디스플레이가 있는 탭에 사용자가 관리자하지 않음 오류가 표시됩니다.(NETOBSERV-1621)

1.6.4. 확인된 문제

  • eBPF 에이전트 PacketDrop 기능이 활성화되고 샘플링이 1 보다 큰 값으로 구성되면 삭제된 바이트와 드롭된 패킷은 샘플링 구성을 무시합니다. 이는 드롭 다운을 놓지 않기 위한 목적으로 수행되는 반면, 부작용은 비드롭과 비교하여 보고된 드롭율이 유해된다는 것입니다. 예를 들어 1:1000 과 같은 매우 높은 샘플링 속도로 콘솔 플러그인에서 관찰하면 거의 모든 트래픽이 삭제되는 것처럼 보일 수 있습니다. (NETOBSERV-1676)
  • 개요 탭의 패널 관리 팝업 창에서 ,bar,donut 또는 line 에서 필터링해도 결과가 표시되지 않습니다. (NETOBSERV-1540)
  • SR-IOV 보조 인터페이스는 인터페이스가 먼저 생성되고 eBPF 에이전트가 배포되었는지 감지되지 않습니다. 에이전트가 먼저 배포된 후 SR-IOV 인터페이스가 생성되는 경우에만 탐지됩니다. (NETOBSERV-1697)
  • Loki가 비활성화되면 OpenShift 웹 콘솔의 토폴로지 보기에 관련 기능이 활성화되지 않은 경우에도 네트워크 토폴로지 다이어그램 옆에 있는 클러스터영역 집계 옵션이 항상 표시됩니다. 이러한 슬라이더 옵션을 무시하는 것 외에도 구체적인 해결방법은 없습니다. (NETOBSERV-1705)
  • Loki가 비활성화되고 OpenShift 웹 콘솔을 처음 로드할 때 상태 코드 400 Loki로 인해 Request failed가 비활성화될 수 있습니다. 이 문제를 해결하려면 토폴로지개요 탭을 클릭하는 등 네트워크 트래픽 페이지에서 콘텐츠를 계속 전환할 수 있습니다. 오류가 사라질 것입니다. (NETOBSERV-1706)

1.7. Network Observability Operator 1.5.0

Network Observability Operator 1.5.0에 대해 다음 권고를 사용할 수 있습니다.

1.7.1. 새로운 기능 및 개선 사항

1.7.1.1. DNS 추적 개선 사항

1.5에서는 이제 UDP 외에도 TCP 프로토콜이 지원됩니다. 새 대시보드는 네트워크 트래픽 페이지의 개요 보기에도 추가됩니다. 자세한 내용은 DNS 추적 구성 및 DNS 추적 작업을 참조하십시오.

1.7.1.2. Round-trip Time (RTT)

fentry/tcp_rcv_ established ed Extended Berkeley Packet Filter (eBPF) 후크 포인트에서 캡처된 TCP 핸드셰이크 Round-Trip Time(RTT)을 사용하여 원활한 SRTT(Round-trip time)를 읽고 네트워크 흐름을 분석할 수 있습니다. 웹 콘솔의 개요,네트워크 트래픽 및 토폴로지 페이지에서 RTT 메트릭, 필터링 및 에지 레이블을 사용하여 네트워크 트래픽을 모니터링하고 문제를 해결할 수 있습니다. 자세한 내용은 RTT 개요RTT 작업을 참조하십시오.

1.7.1.3. 메트릭, 대시보드 및 경고 개선

ObserveDashboardsNetObserv 의 네트워크 관찰 기능 지표 대시보드에는 Prometheus 경고를 생성하는 데 사용할 수 있는 새로운 메트릭 유형이 있습니다. 이제 includeList 사양에 사용 가능한 메트릭을 정의할 수 있습니다. 이전 릴리스에서는 이러한 지표가 ignoreTags 사양에 정의되어 있습니다. 이러한 지표의 전체 목록은 Network Observability Metrics 를 참조하십시오.

1.7.1.4. Loki 없이 네트워크 Observability 개선 사항

Loki를 사용하지 않는 경우에도 DNS, Packet drop 및 RTT 지표를 사용하여 Netobserv 대시보드에 대한 Prometheus 경고를 생성할 수 있습니다. 이전 버전의 Network Observability 1.4에서는 Loki 없이 사용할 수 없는 네트워크 트래픽,개요토폴로지 보기의 쿼리 및 분석에만 이러한 메트릭을 사용할 수 있었습니다. 자세한 내용은 네트워크 Observability Metrics 를 참조하십시오.

1.7.1.5. 가용성 영역

클러스터 가용성 영역에 대한 정보를 수집하도록 FlowCollector 리소스를 구성할 수 있습니다. 이 구성은 노드에 적용된 topology.kubernetes.io/zone 레이블 값을 사용하여 네트워크 흐름 데이터를 강화합니다. 자세한 내용은 가용성 영역 작업을 참조하십시오.

1.7.1.6. 주요 개선 사항

Network Observability Operator의 1.5 릴리스는 OpenShift Container Platform 웹 콘솔 플러그인 및 Operator 구성에 개선 사항 및 새로운 기능을 추가합니다.

성능 개선
  • spec.agent.ebpf.kafkaBatchSize 기본값은 Kafka를 사용할 때 eBPF 성능을 개선하기 위해 10MB 에서 1MB 로 변경됩니다.

    중요

    기존 설치에서 업그레이드할 때 이 새 값은 구성에 자동으로 설정되지 않습니다. 업그레이드 후 eBPF 에이전트 메모리 사용을 사용하여 성능 회귀를 모니터링하는 경우 kafkaBatchSize 를 새 값으로 줄이는 것이 좋습니다.

웹 콘솔 개선 사항:
  • DNS 및 RTT에 대한 개요 보기에 새 패널이 추가되었습니다: Min, Max, P90, P99.
  • 새로운 패널 디스플레이 옵션이 추가되었습니다.

    • 하나의 패널에 중점을 두고 다른 패널은 볼 수 있지만 더 작은 집중을 유지합니다.
    • 그래프 유형을 전환합니다.
    • topOverall 을 표시합니다.
  • 컬렉션 대기 시간 경고가 사용자 정의 시간 범위 팝업 창에 표시됩니다.
  • 패널 관리열 관리 팝업 창의 내용에 대한 가시성이 향상됩니다.
  • 송신 QoS의 DSCP(Differentiated Services Code Point) 필드는 웹 콘솔 네트워크 트래픽 페이지에서 QoS DSCP를 필터링하는 데 사용할 수 있습니다.
구성 개선 사항:
  • spec.loki.mode 사양의 LokiStack 모드는 URL, TLS, 클러스터 역할 및 클러스터 역할 바인딩과 authToken 값을 자동으로 설정하여 설치를 간소화합니다. 수동 모드를 사용하면 이러한 설정 구성을 보다 효과적으로 제어할 수 있습니다.
  • API 버전은 flows.netobserv.io/v1beta1 에서 flows.netobserv.io/v1beta2 로 변경합니다.

1.7.2. 버그 수정

  • 이전에는 콘솔 플러그인의 자동 등록이 비활성화된 경우 웹 콘솔 인터페이스에서 콘솔 플러그인을 수동으로 등록할 수 없었습니다. FlowCollector 리소스에서 spec.console.register 값이 false 로 설정된 경우 Operator는 플러그인 등록을 재정의하고 지웁니다. 이번 수정으로 spec.console.register 값을 false 로 설정하면 콘솔 플러그인 등록 또는 등록 제거에 영향을 미치지 않습니다. 따라서 플러그인을 수동으로 안전하게 등록할 수 있습니다. (NETOBSERV-1134)
  • 이전 버전에서는 기본 메트릭 설정을 사용하여 NetObserv/Health 대시보드에 Flows Overhead 라는 빈 그래프가 표시되었습니다. 이 메트릭은 ignoreTags 목록에서 "namespaces-flows" 및 "namespaces"를 제거하는 경우에만 사용할 수 있었습니다. 이번 수정으로 기본 메트릭 설정을 사용할 때 이 메트릭이 표시됩니다. (NETOBSERV-1351)
  • 이전에는 eBPF 에이전트가 실행 중인 노드가 특정 클러스터 구성으로 확인되지 않았습니다. 이로 인해 일부 트래픽 메트릭을 제공하지 못했기 때문에 계단식 결과가 발생했습니다. 이번 수정을 통해 Operator에서 eBPF 에이전트의 노드 IP를 안전하게 제공하여 Pod 상태에서 유추합니다. 이제 누락된 메트릭이 복원됩니다. (NETOBSERV-1430)
  • 이전에는 Loki Operator에 대한 Loki 오류 '입력 크기 너무 긴' 오류에 문제를 해결하기 위한 추가 정보가 포함되지 않았습니다. 이번 수정을 통해 자세한 지침은 직접 링크와 함께 오류 옆에 웹 콘솔에 도움말이 직접 표시됩니다. (NETOBSERV-1464)
  • 이전에는 콘솔 플러그인 읽기 시간 초과가 30s로 강제되었습니다. FlowCollector v1beta2 API 업데이트를 사용하면 spec.loki.readTimeout 사양을 구성하여 Loki Operator queryTimeout 제한에 따라 이 값을 업데이트할 수 있습니다. (NETOBSERV-1443)
  • 이전에는 Operator 번들에 features.operators.openshift.io/…​ 과 같이 CSV 주석에서 지원되는 일부 기능이 예상대로 표시되지 않았습니다. (NETOBSERV-1305)
  • 이전에는 조정 중에 FlowCollector 상태가 DeploymentInProgressReady 상태 간에 발생하는 경우가 있었습니다. 이번 수정을 통해 모든 기본 구성 요소가 완전히 준비된 경우에만 상태가 Ready 됩니다. (NETOBSERV-1293)

1.7.3. 확인된 문제

  • 웹 콘솔에 액세스하려고 할 때 OCP 4.14.10의 캐시 문제로 인해 모니터링 보기에 액세스할 수 없습니다. 웹 콘솔에 오류 메시지가 표시됩니다. Failed to get a valid plugin manifest from /api/plugins/monitoring-plugin/. 권장되는 해결 방법은 클러스터를 최신 마이너 버전으로 업데이트하는 것입니다. 이 방법이 작동하지 않는 경우 이 Red Hat 지식베이스 문서에 설명된 해결 방법을 적용해야 합니다.(NETOBSERV-1493)
  • Network Observability Operator의 1.3.0 릴리스 이후 Operator를 설치하면 경고 커널 테인트가 표시됩니다. 이 오류의 원인은 Network Observability eBPF 에이전트에 전체 hashmap 테이블을 미리 할당하지 못하도록 하는 메모리 제약 조건이 있기 때문입니다. Operator eBPF 에이전트는 해시맵이 너무 많은 경우 사전 할당이 비활성화되도록 BPF_F_NO_PREALLOC 플래그를 설정합니다.

1.8. Network Observability Operator 1.4.2

Network Observability Operator 1.4.2에서 다음 권고를 사용할 수 있습니다.

1.8.1. CVE

1.9. Network Observability Operator 1.4.1

Network Observability Operator 1.4.1에 대해 다음 권고를 사용할 수 있습니다.

1.9.1. CVE

1.9.2. 버그 수정

  • 1.4에서는 Kafka로 네트워크 흐름 데이터를 전송할 때 알려진 문제가 있었습니다. Kafka 메시지 키가 무시되어 연결 추적에 오류가 발생했습니다. 이제 키를 분할하는 데 사용되므로 동일한 연결의 각 흐름이 동일한 프로세서로 전송됩니다. (NETOBSERV-926)
  • 1.4에서는 동일한 노드에서 실행되는 포드 간 흐름을 고려하기 위해 Inner 흐름 방향이 도입되었습니다. Inner 방향이 있는 흐름은 흐름에서 파생된 생성된 Prometheus 메트릭에서 고려하지 않아 바이트와 패킷 비율이 거의 발생하지 않았습니다. 이제 파생 메트릭에 Inner 방향이 있는 흐름이 포함되어 올바른 바이트 및 패킷 비율이 제공됩니다. (NETOBSERV-1344)

1.10. Network Observability Operator 1.4.0

Network Observability Operator 1.4.0에서 다음 권고를 사용할 수 있습니다.

1.10.1. 채널 제거

최신 Operator 업데이트를 받으려면 채널을 v1.0.x 에서 stable 로 전환해야 합니다. 이제 v1.0.x 채널이 제거되었습니다.

1.10.2. 새로운 기능 및 개선 사항

1.10.2.1. 주요 개선 사항

Network Observability Operator의 1.4 릴리스는 OpenShift Container Platform 웹 콘솔 플러그인 및 Operator 구성에 개선 사항 및 새로운 기능을 추가합니다.

웹 콘솔 개선 사항:
  • 쿼리 옵션에서 중복된 흐름을 표시할지 여부를 선택하기 위해 중복된 흐름 확인란이 추가됩니다.In the Query Options, the Duplicate flows check is added to choose whether or not to show duplicated flows.
  • arrow up long solid One-way, arrow up long solid arrow down long solid Back-and-forth, 스왑 필터를 사용하여 소스 및 대상 트래픽을 필터링할 수 있습니다.
  • ObserveDashboardsNetObservNetObserv/ Health 의 네트워크 관찰 기능 메트릭 대시보드는 다음과 같이 수정됩니다.

    • NetObserv 대시보드에는 노드, 네임스페이스 및 워크로드별로 수신된 상위 바이트, 패킷, 패킷이 표시됩니다. 이 대시보드에서 흐름 그래프가 제거됩니다.
    • NetObserv / Health 대시 보드에는 노드, 네임스페이스 및 워크로드당 최고 흐름률뿐만 아니라 흐름 오버헤드가 표시됩니다.
    • 인프라 및 애플리케이션 메트릭은 네임스페이스 및 워크로드에 대한 분할 보기에 표시됩니다.

자세한 내용은 네트워크 Observability 메트릭빠른 필터 를 참조하십시오.

구성 개선 사항:
  • 이제 인증서 구성과 같이 구성된 ConfigMap 또는 Secret 참조에 대해 다른 네임스페이스를 지정하는 옵션이 있습니다.
  • spec.processor.clusterName 매개변수가 추가되어 클러스터 이름이 flows 데이터에 표시됩니다. 이는 다중 클러스터 컨텍스트에서 유용합니다. OpenShift Container Platform을 사용하는 경우 자동으로 결정되도록 비워 둡니다.

자세한 내용은 Flow Collector 샘플 리소스Flow Collector API 참조를 참조하십시오.

1.10.2.2. Loki 없이 Network Observability

이제 Network Observability Operator가 Loki 없이 작동하고 사용할 수 있습니다. Loki가 설치되지 않은 경우 KAFKA 또는 IPFIX 형식으로만 내보내기하고 네트워크 Observability 메트릭 대시보드에 메트릭을 제공할 수 있습니다. 자세한 내용은 Loki가 없는 네트워크 Observability 를 참조하십시오.

1.10.2.3. DNS 추적

1.4에서 Network Observability Operator는 eBPF 추적 후크를 사용하여 DNS 추적을 활성화합니다. 웹 콘솔의 네트워크 트래픽개요 페이지에서 네트워크를 모니터링하고 보안 분석을 수행하고 DNS 문제를 해결할 수 있습니다.

자세한 내용은 DNS 추적 구성 및 DNS 추적 작업을 참조하십시오.

1.10.2.4. SR-IOV 지원

SR-IOV(Single Root I/O Virtualization) 장치를 사용하여 클러스터에서 트래픽을 수집할 수 있습니다. 자세한 내용은 SR-IOV 인터페이스 트래픽 모니터링 구성을 참조하십시오.

1.10.2.5. IPFIX 내보내기 지원

이제 eBPF-enriched 네트워크 흐름을 IPFIX 수집기로 내보낼 수 있습니다. 자세한 내용은 보강된 네트워크 흐름 데이터 내보내기 를 참조하십시오.

1.10.2.6. 패킷 드롭

Network Observability Operator의 1.4 릴리스에서는 eBPF 추적을 활성화하는 데 사용됩니다. 이제 패킷 드롭의 원인을 감지하고 분석하여 네트워크 성능을 최적화할 수 있습니다. OpenShift Container Platform 4.14 이상에서는 호스트 드롭과 OVS 드롭이 모두 감지됩니다. OpenShift Container Platform 4.13에서는 호스트 삭제만 탐지됩니다. 자세한 내용은 패킷 드롭 추적 구성 및 패킷 드롭 작업을 참조하십시오.

1.10.2.7. s390x 아키텍처 지원

Network Observability Operator는 이제 s390x 아키텍처에서 실행할 수 있습니다. 이전에는 amd64, ppc64le, arm64에서 실행되었습니다.

1.10.3. 버그 수정

  • 이전에는 Network Observability에서 내보낸 Prometheus 지표가 잠재적으로 중복된 네트워크 흐름으로 계산되었습니다. 관련 대시보드에서 ObserveDashboards 의 경우 이로 인해 잠재적으로 두 배가 될 수 있습니다. 네트워크 트래픽 보기의 대시보드는 영향을 받지 않습니다. 이제 지표 계산 전에 중복을 제거하도록 네트워크 흐름이 필터링되어 대시보드에 올바른 트래픽 속도가 표시됩니다. (NETOBSERV-1131)
  • 이전에는 Network Observability Operator 에이전트가 기본이 아닌 네트워크 네임스페이스인 Multus 또는 SR-IOV로 구성된 경우 네트워크 인터페이스에서 트래픽을 캡처할 수 없었습니다. 이제 사용 가능한 모든 네트워크 네임스페이스가 인식되고 흐름 캡처에 사용되어 SR-IOV에 대한 트래픽을 캡처할 수 있습니다. flowCollectorSRIOVnetwork 사용자 정의 리소스에는 트래픽을 수집하는 구성이 필요합니다. (NETOBSERV-1283)
  • 이전에는 Network Observability Operator에서 Operators설치된 Operators의 세부 정보에서 FlowCollector Status 필드에 배포 상태에 대한 잘못된 정보가 보고되었을 수 있었습니다. 이제 status 필드에 더 나은 메시지와 함께 적절한 조건이 표시됩니다. 이벤트 기록은 이벤트 날짜별로 정렬됩니다. (NETOBSERV-1224)
  • 이전에는 네트워크 트래픽 로드가 급증하는 동안 특정 eBPF Pod가 OOM 인증되어 CrashLoopBackOff 상태가 되었습니다. 이제 eBPF 에이전트 메모리 공간이 개선되어 Pod가 OOM이 지정되지 않고 CrashLoopBackOff 상태가 됩니다. (NETOBSERV-975)
  • 이전에는 processor.metrics.tlsPROVIDED 로 설정된 경우 insecureSkipVerify 옵션 값이 true 로 강제되었습니다. 이제 insecureSkipVerifytrue 또는 false 로 설정하고 필요한 경우 CA 인증서를 제공할 수 있습니다. (NETOBSERV-1087)

1.10.4. 확인된 문제

  • Loki Operator 5.6을 사용하여 Network Observability Operator의 1.2.0 릴리스 이후 Loki 인증서 변경은 flowlogs-pipeline Pod에 주기적으로 영향을 미치며 Loki에 작성된 흐름 대신 중단된 흐름이 발생합니다. 문제는 일정 시간 후에도 자체 수정되지만 Loki 인증서 변경 중에 임시 흐름 데이터 손실이 발생합니다. 이 문제는 120 노드의 대규모 환경에서만 관찰되었습니다. (NETOBSERV-980)
  • 현재 spec.agent.ebpf.features 에 DNSTracking이 포함된 경우, 대규모 DNS 패킷을 사용하려면 eBPF 에이전트가 1st 소켓 버퍼(SKB) 세그먼트 외부에서 DNS 헤더를 찾아야 합니다. 이를 지원하기 위해 새로운 eBPF 에이전트 도우미 기능을 구현해야 합니다. 현재 이 문제에 대한 해결방법이 없습니다. (NETOBSERV-1304)
  • 현재 spec.agent.ebpf.features 에서 DNSTracking이 포함된 경우, TCP 패킷을 통한 DNS를 사용하려면 eBPF 에이전트가 첫 번째 SKB 세그먼트 외부에서 DNS 헤더를 찾아야 합니다. 이를 지원하기 위해 새로운 eBPF 에이전트 도우미 기능을 구현해야 합니다. 현재 이 문제에 대한 해결방법이 없습니다. (NETOBSERV-1245)
  • 현재 KAFKA 배포 모델을 사용할 때 대화 추적이 구성된 경우 Kafka 소비자에 걸쳐 대화 이벤트가 복제되어 대화 추적이 일관되지 않을 수 있으며 잘못된 볼륨 관련 데이터를 추적할 수 있습니다. 따라서 deploymentModelKAFKA 로 설정할 때 대화 추적을 구성하지 않는 것이 좋습니다. (NETOBSERV-926)
  • 현재 processor.metrics.server.tls.typePROVIDED 인증서를 사용하도록 구성된 경우 Operator는 성능 및 리소스 사용량에 영향을 줄 수 있는 unsteady 상태를 입력합니다. 이 문제가 해결될 때까지 PROVIDED 인증서를 사용하지 않는 것이 좋습니다. 대신 자동 생성된 인증서를 사용하여 processor.metrics.server.tls.typeAUTO 로 설정합니다. (NETOBSERV-1293
  • Network Observability Operator의 1.3.0 릴리스 이후 Operator를 설치하면 경고 커널 테인트가 표시됩니다. 이 오류의 원인은 Network Observability eBPF 에이전트에 전체 hashmap 테이블을 미리 할당하지 못하도록 하는 메모리 제약 조건이 있기 때문입니다. Operator eBPF 에이전트는 해시맵이 너무 많은 경우 사전 할당이 비활성화되도록 BPF_F_NO_PREALLOC 플래그를 설정합니다.

1.11. Network Observability Operator 1.3.0

Network Observability Operator 1.3.0에 대해 다음 권고를 사용할 수 있습니다.

1.11.1. 채널 사용 중단

향후 Operator 업데이트를 받으려면 채널을 v1.0.x 에서 stable 로 전환해야 합니다. v1.0.x 채널은 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다.

1.11.2. 새로운 기능 및 개선 사항

1.11.2.1. 네트워크 Observability의 멀티 테넌시
  • 시스템 관리자는 Loki에 저장된 흐름에 대해 개별 사용자 액세스 또는 그룹 액세스를 허용 및 제한할 수 있습니다. 자세한 내용은 네트워크 Observability 의 멀티 테넌시 를 참조하십시오.
1.11.2.2. 흐름 기반 메트릭 대시보드
  • 이번 릴리스에서는 OpenShift Container Platform 클러스터의 네트워크 흐름에 대한 개요를 제공하는 새 대시보드가 추가되었습니다. 자세한 내용은 네트워크 Observability 메트릭 을 참조하십시오.
1.11.2.3. must-gather 툴 문제 해결
  • Network Observability Operator에 대한 정보를 이제 문제 해결을 위해 must-gather 데이터에 포함할 수 있습니다. 자세한 내용은 Network Observability must-gather 를 참조하십시오.
1.11.2.4. 여러 아키텍처 지원
  • Network Observability Operator는 이제 amd64, ppc64le, 또는 arm64 아키텍처에서 실행할 수 있습니다. 이전에는 amd64 에서만 실행되었습니다.

1.11.3. 더 이상 사용되지 않는 기능

1.11.3.1. 더 이상 사용되지 않는 구성 매개변수 설정

Network Observability Operator 1.3 릴리스는 spec.Loki.authToken HOST 설정을 사용하지 않습니다. Loki Operator를 사용하는 경우 이제 FORWARD 설정만 사용해야 합니다.

1.11.4. 버그 수정

  • 이전에는 CLI에서 Operator를 설치할 때 Cluster Monitoring Operator에서 메트릭을 읽는 데 필요한 RoleRoleBinding 이 예상대로 설치되지 않았습니다. 웹 콘솔에서 Operator를 설치할 때 문제가 발생하지 않았습니다. 이제 Operator를 설치하는 방법 중 하나가 필요한 RoleRoleBinding 을 설치합니다. (NETOBSERV-1003)
  • 버전 1.2부터는 흐름 수집에 문제가 발생할 때 Network Observability Operator에서 경고를 발생시킬 수 있습니다. 이전 버전에서는 버그로 인해 경고를 비활성화하는 관련 구성이 spec.processor.metrics.disableAlerts 가 예상대로 작동하지 않고 경우에 따라 영향을 미치지 않았습니다. 이제 이 구성이 수정되어 경고를 비활성화할 수 있습니다. (NETOBSERV-976)
  • 이전에는 spec.loki.authTokenDISABLED 로 설정하여 Network Observability를 구성할 때 kubeadmin 클러스터 관리자만 네트워크 흐름을 볼 수 있었습니다. 다른 유형의 클러스터 관리자에게 권한 부여 오류가 발생했습니다. 이제 클러스터 관리자가 네트워크 흐름을 볼 수 있습니다. (NETOBSERV-972)
  • 이전 버전에서는 버그로 인해 사용자가 spec.consolePlugin.portNaming.enablefalse 로 설정할 수 없었습니다. 이제 이 설정을 false 로 설정하여 포트 투 서비스 이름 변환을 비활성화할 수 있습니다. (NETOBSERV-971)
  • 이전 버전에서는 콘솔 플러그인에서 노출하는 메트릭이 잘못된 구성으로 인해 Cluster Monitoring Operator(Prometheus)에 의해 수집되지 않았습니다. 이제 콘솔 플러그인 메트릭이 올바르게 수집되고 OpenShift Container Platform 웹 콘솔에서 액세스할 수 있도록 구성이 수정되었습니다. (NETOBSERV-765)
  • 이전에는 FlowCollector 에서 processor.metrics.tlsAUTO 로 설정된 경우 flowlogs-pipeline servicemonitor 가 적절한 TLS 체계를 적용하지 않았으며 웹 콘솔에서 메트릭이 표시되지 않았습니다. 이제 AUTO 모드에 대한 문제가 해결되었습니다. (NETOBSERV-1070)
  • 이전 버전에서는 Kafka 및 Loki에 사용된 인증서 구성에서 namespace 필드를 지정할 수 없으므로 인증서가 Network Observability가 배포된 동일한 네임스페이스에 있어야 했습니다. 또한 TLS/mTLS와 함께 Kafka를 사용할 때 사용자는 인증서 교체의 경우와 같이 eBPF 에이전트 Pod가 배포된 권한 있는 네임스페이스에 인증서를 수동으로 복사해야 했습니다. 이제 FlowCollector 리소스에서 인증서에 네임스페이스 필드를 추가하여 네트워크 Observability 설정이 간소화됩니다. 결과적으로 네트워크 Observability 네임스페이스에서 인증서를 수동으로 복사할 필요 없이 다른 네임스페이스에 Loki 또는 Kafka를 설치할 수 있습니다. 원본 인증서는 필요한 경우 복사본이 자동으로 업데이트되도록 감시됩니다. (NETOBSERV-773)
  • 이전에는 SCTP, ICMPv4 및 ICMPv6 프로토콜이 네트워크 Observability 에이전트의 적용을 받지 않아 네트워크 흐름이 줄어들었습니다. 이러한 프로토콜은 이제 흐름 범위를 개선하기 위해 인식됩니다. (NETOBSERV-934)

1.11.5. 확인된 문제

  • FlowCollector 에서 processor.metrics.tlsPROVIDED 로 설정된 경우 flowlogs-pipeline 서비스monitor 가 TLS 체계에 적용되지 않습니다. (NETOBSERV-1087)
  • Loki Operator 5.6을 사용하여 Network Observability Operator의 1.2.0 릴리스 이후 Loki 인증서 변경은 flowlogs-pipeline Pod에 주기적으로 영향을 미치며 Loki에 작성된 흐름 대신 중단된 흐름이 발생합니다. 문제는 일정 시간 후에도 자체 수정되지만 Loki 인증서 변경 중에 임시 흐름 데이터 손실이 발생합니다. 이 문제는 120 노드의 대규모 환경에서만 관찰되었습니다. (NETOBSERV-980)
  • Operator를 설치하면 경고 커널 테인트가 표시될 수 있습니다. 이 오류의 원인은 Network Observability eBPF 에이전트에 전체 hashmap 테이블을 미리 할당하지 못하도록 하는 메모리 제약 조건이 있기 때문입니다. Operator eBPF 에이전트는 해시맵이 너무 많은 경우 사전 할당이 비활성화되도록 BPF_F_NO_PREALLOC 플래그를 설정합니다.

1.12. Network Observability Operator 1.2.0

Network Observability Operator 1.2.0에 다음 권고를 사용할 수 있습니다.

1.12.1. 다음 업데이트 준비

설치된 Operator의 서브스크립션은 Operator를 추적하고 업데이트를 수신하는 업데이트 채널을 지정합니다. Network Observability Operator의 1.2 릴리스까지 사용 가능한 유일한 채널은 v1.0.x 였습니다. Network Observability Operator의 1.2 릴리스에서는 업데이트를 추적하고 수신하기 위한 안정적인 업데이트 채널을 도입했습니다. 향후 Operator 업데이트를 받으려면 채널을 v1.0.x 에서 stable 로 전환해야 합니다. v1.0.x 채널은 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다.

1.12.2. 새로운 기능 및 개선 사항

1.12.2.1. 트래픽 흐름 보기의 히스토그램
  • 이제 시간이 지남에 따라 흐름의 히스토그램 막대 차트를 표시하도록 선택할 수 있습니다. 히스토그램을 사용하면 Loki 쿼리 제한에 도달하지 않고 흐름 기록을 시각화할 수 있습니다. 자세한 내용은 히스토그램 사용을 참조하십시오.
1.12.2.2. 대화 추적
  • 이제 로그 유형 별로 흐름을 쿼리하여 동일한 대화의 일부인 네트워크 흐름을 그룹화할 수 있습니다. 자세한 내용은 대화 작업을 참조하십시오.
1.12.2.3. 네트워크 Observability 상태 경고
  • 이제 Network Observability Operator가 쓰기 단계에서 오류 또는 Loki ingestion 속도 제한에 도달한 경우 flowlogs-pipeline 이 흐름을 삭제하는 경우 자동 경고를 생성합니다. 자세한 내용은 상태 대시보드 를 참조하십시오.

1.12.3. 버그 수정

  • 이전에는 FlowCollector 사양에서 네임스페이스 값을 변경한 후 이전 네임스페이스에서 실행되는 eBPF 에이전트 Pod가 적절하게 삭제되지 않았습니다. 이제 이전 네임스페이스에서 실행 중인 Pod가 적절하게 삭제됩니다. (NETOBSERV-774)
  • 이전에는 FlowCollector 사양(예: Loki 섹션)에서 caCert.name 값을 변경한 후 FlowLogs-Pipeline Pod 및 콘솔 플러그인 Pod가 재시작되지 않아 구성 변경을 인식하지 못했습니다. 이제 Pod가 다시 시작되어 구성 변경이 수행됩니다. (NETOBSERV-772)
  • 이전에는 다른 노드에서 실행 중인 Pod 간 네트워크 흐름이 다른 네트워크 인터페이스에서 캡처되므로 중복으로 올바르게 식별되지 않은 경우가 있었습니다. 이로 인해 콘솔 플러그인에 초과 평가 지표가 표시되었습니다. 이제 흐름이 중복으로 올바르게 확인되고 콘솔 플러그인에 정확한 지표가 표시됩니다. (NETOBSERV-755)
  • 콘솔 플러그인의 "reporter" 옵션은 소스 노드 또는 대상 노드의 관찰 지점을 기반으로 흐름을 필터링하는 데 사용됩니다. 이전에는 이 옵션이 노드 관찰 지점과 관계없이 흐름을 혼합했습니다. 이는 네트워크 흐름이 노드 수준에서 Ingress 또는 Egress로 잘못 보고되었기 때문입니다. 이제 네트워크 흐름 방향 보고가 올바르게 수행됩니다. "reporter" 옵션은 예상대로 소스 관찰 지점 또는 대상 관찰 지점에 대해 필터링합니다. (NETOBSERV-696)
  • 이전 버전에서는 gRPC+protobuf 요청으로 흐름을 직접 전송하도록 구성된 에이전트의 경우 제출된 페이로드가 너무 클 수 있으며 프로세서의 GRPC 서버에서 거부되었습니다. 이는 매우 높은 로드 시나리오와 에이전트의 일부 구성에서만 발생했습니다. 에이전트가 max보다 큰 오류 메시지(예: grpc: received message)를 기록했습니다. 그 결과 이러한 흐름에 대한 정보가 손실되었습니다. 이제 gRPC 페이로드가 크기가 임계값을 초과하면 여러 메시지로 나뉩니다. 결과적으로 서버는 연결을 유지합니다. (NETOBSERV-617)

1.12.4. 알려진 문제

  • Loki Operator 5.6을 사용하여 Network Observability Operator의 1.2.0 릴리스에서 Loki 인증서 전환은 flowlogs-pipeline Pod에 주기적으로 영향을 미치며 Loki에 작성된 흐름 대신 중단된 흐름이 발생합니다. 문제는 일정 시간 후에도 자체 수정되지만 Loki 인증서 전환 중에 임시 흐름 데이터 손실이 발생합니다. (NETOBSERV-980)

1.12.5. 주요 기술 변경 사항

  • 이전에는 사용자 정의 네임스페이스를 사용하여 Network Observability Operator를 설치할 수 있었습니다. 이번 릴리스에서는 ClusterServiceVersion 을 변경하는 변환 Webhook 가 도입되었습니다. 이러한 변경으로 인해 사용 가능한 모든 네임스페이스가 더 이상 나열되지 않습니다. 또한 Operator 지표 컬렉션을 활성화하려면 openshift-operators 네임스페이스와 같이 다른 Operator와 공유하는 네임스페이스를 사용할 수 없습니다. 이제 Operator를 openshift-netobserv-operator 네임스페이스에 설치해야 합니다. 이전에 사용자 정의 네임스페이스를 사용하여 Network Observability Operator를 설치한 경우 새 Operator 버전으로 자동 업그레이드할 수 없습니다. 이전에 사용자 정의 네임스페이스를 사용하여 Operator를 설치한 경우 설치된 Operator 인스턴스를 삭제하고 openshift-netobserv-operator 네임스페이스에 Operator를 다시 설치해야 합니다. 일반적으로 사용되는 netobserv 네임스페이스와 같은 사용자 정의 네임스페이스는 FlowCollector, Loki, Kafka 및 기타 플러그인에 계속 사용할 수 있습니다. (NETOBSERV-907)(NETOBSERV-956)

1.13. Network Observability Operator 1.1.0

Network Observability Operator 1.1.0에 대해 다음 권고를 사용할 수 있습니다.

Network Observability Operator가 안정되어 릴리스 채널이 v1.1.0 으로 업그레이드되었습니다.

1.13.1. 버그 수정

  • 이전 버전에서는 Loki authToken 구성이 FORWARD 모드로 설정되지 않은 경우 인증이 더 이상 적용되지 않아 OpenShift Container Platform 클러스터의 OpenShift Container Platform 콘솔에 연결할 수 있는 사용자가 인증 없이 흐름을 검색할 수 있었습니다. 이제 Loki authToken 모드에 관계없이 클러스터 관리자만 흐름을 검색할 수 있습니다. (BZ#2169468)

2장. 네트워크 Observability 정보

Red Hat은 클러스터 관리자와 개발자에게 OpenShift Container Platform 클러스터의 네트워크 트래픽을 관찰할 수 있는 Network Observability Operator를 제공합니다. Network Observability Operator는 eBPF 기술을 사용하여 네트워크 흐름을 생성합니다. 그런 다음 OpenShift Container Platform 정보로 네트워크 흐름을 강화합니다. Prometheus 지표 또는 Loki의 로그로 사용할 수 있습니다. 자세한 정보 및 문제 해결을 위해 OpenShift Container Platform 콘솔에서 저장된 네트워크 흐름 정보를 보고 분석할 수 있습니다.

2.1. Network Observability Operator의 선택적 종속 항목

  • Loki Operator: Loki는 최대 수준의 세부 정보로 수집된 모든 흐름을 저장하는 데 사용할 수 있는 백엔드입니다. Loki 없이 Network Observability 를 사용하도록 선택할 수 있지만 링크된 섹션에 설명된 대로 이 작업을 수행하는 데 몇 가지 고려 사항이 있습니다. Loki를 설치하도록 선택하는 경우 Red Hat에서 지원하는 Loki Operator를 사용하는 것이 좋습니다.
  • AMQ Streams Operator: Kafka는 대규모 배포를 위해 OpenShift Container Platform 클러스터에서 확장성, 복원력 및 고가용성을 제공합니다. Kafka를 사용하도록 선택하는 경우 Red Hat에서 지원하므로 AMQ Streams Operator를 사용하는 것이 좋습니다.

2.2. Network Observability Operator

Network Observability Operator는 Flow Collector API 사용자 정의 리소스 정의를 제공합니다. Flow Collector 인스턴스는 네트워크 흐름 컬렉션을 구성할 수 있는 클러스터 범위 리소스입니다. 흐름 수집기 인스턴스는 Loki에 저장하거나 Prometheus 지표를 생성하기 전에 네트워크 흐름이 수집되고 Kubernetes 메타데이터로 보강되는 모니터링 파이프라인을 구성하는 Pod 및 서비스를 배포합니다. 데몬 세트 오브젝트로 배포된 eBPF 에이전트는 네트워크 흐름을 생성합니다.

2.3. OpenShift Container Platform 콘솔 통합

OpenShift Container Platform 콘솔 통합에서는 관리자개발자 관점에서 개요, 토폴로지 보기 및 트래픽 흐름 테이블을 제공합니다.

관리자 관점에서 Observe → 네트워크 트래픽을 클릭하여 네트워크 관찰 기능 개요, 트래픽 흐름토폴로지 보기를 찾을 수 있습니다. 개발자 화면에서 모니터링 을 클릭하여 이 정보를 볼 수 있습니다. ObserveDashboards 의 Network Observability 지표 대시보드는 관리자만 사용할 수 있습니다.

참고

개발자 화면과 네임스페이스에 대한 제한된 액세스 권한이 있는 관리자에게 멀티 테넌시를 활성화하려면 역할을 정의하여 권한을 지정해야 합니다. 자세한 내용은 네트워크 Observability에서 멀티 테넌시 활성화를 참조하십시오.

2.3.1. 네트워크 Observability 지표 대시보드

OpenShift Container Platform 콘솔의 개요 탭에서 클러스터의 네트워크 트래픽 흐름에 대한 전체 집계 메트릭을 볼 수 있습니다. 영역, 노드, 네임스페이스, 소유자, Pod 및 서비스로 정보를 표시하도록 선택할 수 있습니다. 필터 및 표시 옵션은 메트릭을 추가로 구체화할 수 있습니다. 자세한 내용은 개요 보기에서 네트워크 트래픽 노출을 참조하십시오.

ObserveDashboards 에서 Netobserv 대시보드는 OpenShift Container Platform 클러스터의 네트워크 흐름에 대한 간략한 개요를 제공합니다. Netobserv/Health 대시보드는 Operator의 상태에 대한 지표를 제공합니다. 자세한 내용은 Network Observability Metrics상태 정보 보기를 참조하십시오.

2.3.2. 네트워크 Observability 토폴로지 보기

OpenShift Container Platform 콘솔은 네트워크 흐름의 그래픽 표현과 트래픽 양을 표시하는 토폴로지 탭을 제공합니다. 토폴로지 보기는 OpenShift Container Platform 구성 요소 간 트래픽을 네트워크 그래프로 나타냅니다. 필터 및 표시 옵션을 사용하여 그래프를 구체화할 수 있습니다. 영역, 노드, 네임스페이스, 소유자, Pod 및 서비스에 대한 정보에 액세스할 수 있습니다.

2.3.3. 트래픽 흐름 테이블

트래픽 흐름 테이블 뷰는 원시 흐름, 집계되지 않은 필터링 옵션 및 구성 가능한 열에 대한 뷰를 제공합니다. OpenShift Container Platform 콘솔은 네트워크 흐름 데이터 및 트래픽 양을 표시하는 트래픽 흐름 탭을 제공합니다.

2.4. Network Observability CLI

Network Observability CLI(oc netobserv)를 사용하여 네트워크 Observability의 네트워킹 문제를 신속하게 디버깅하고 해결할 수 있습니다. Network Observability CLI는 수집된 데이터를 임시 수집기 Pod로 스트리밍하기 위해 eBPF 에이전트를 사용하는 흐름 및 패킷 시각화 툴입니다. 캡처하는 동안 영구 스토리지가 필요하지 않습니다. 실행 후 출력이 로컬 시스템으로 전송됩니다. 이를 통해 Network Observability Operator를 설치하지 않고도 패킷 및 흐름 데이터에 대한 빠른 실시간 통찰력을 얻을 수 있습니다.

3장. Network Observability Operator 설치

Loki를 설치하는 것은 Network Observability Operator를 사용하는 데 권장되는 전제 조건입니다. Loki 없이 Network Observability 를 사용하도록 선택할 수 있지만 이전에 연결된 섹션에 설명된 몇 가지 고려 사항이 있습니다.

Loki Operator는 데이터 흐름 스토리지를 위해 Loki와 멀티 테넌시 및 인증을 구현하는 게이트웨이를 통합합니다. LokiStack 리소스는 확장 가능하고 가용성이 높은 다중 테넌트 로그 집계 시스템 및 OpenShift Container Platform 인증을 사용하는 웹 프록시인 Loki를 관리합니다. LokiStack 프록시는 OpenShift Container Platform 인증을 사용하여 멀티 테넌시를 적용하고 Loki 로그 저장소에서 데이터 저장 및 인덱싱을 용이하게 합니다.

3.1. Loki 없이 Network Observability

Loki 설치 단계를 수행하지 않고 "Network Observability Operator 설치"로 직접 건너뛰어 Loki 없이 Network Observability를 사용할 수 있습니다. 흐름만 Kafka 소비자 또는 IPFIX 수집기로 내보내거나 대시보드 메트릭만 필요한 경우 Loki를 설치하거나 Loki에 스토리지를 제공할 필요가 없습니다. 다음 표에서는 Loki와 사용 가능한 기능을 비교합니다.

Expand
표 3.1. Loki와의 기능 가용성 비교
 Loki 사용Loki 없이

내보내기

X

X

멀티 테넌시

X

X

완전한 필터링 및 집계 기능 [1]

X

 

부분 필터링 및 집계 기능 [2]

X

X

흐름 기반 메트릭 및 대시보드

X

X

트래픽 흐름 보기 개요 [3]

X

X

트래픽 흐름 보기 테이블

X

 

토폴로지 보기

X

X

OpenShift Container Platform 콘솔 네트워크 트래픽 탭 통합

X

X

  1. 예를 들면 per pod입니다.
  2. 워크로드 또는 네임스페이스별.
  3. 패킷 드롭의 통계는 Loki에서만 사용할 수 있습니다.

3.2. Loki Operator 설치

Loki Operator 버전 5.7+ 는 Network Observability에서 지원되는 Loki Operator 버전입니다. 이러한 버전은 openshift-network 테넌트 구성 모드를 사용하여 LokiStack 인스턴스를 생성하고 네트워크 Observability에 대한 완전한 자동 인증 및 권한 부여 지원을 제공하는 기능을 제공합니다. Loki를 설치하는 방법은 여러 가지가 있습니다. 한 가지 방법은 OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하는 것입니다.

사전 요구 사항

  • 지원되는 Log Store (AWS S3, Google Cloud Storage, Azure, Swift, Minio, OpenShift Data Foundation)
  • OpenShift Container Platform 4.10+
  • Linux Kernel 4.18+

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 OperatorOperatorHub를 클릭합니다.
  2. 사용 가능한 Operator 목록에서 Loki Operator 를 선택하고 설치를 클릭합니다.
  3. 설치 모드에서 클러스터의 모든 네임스페이스를 선택합니다.

검증

  1. Loki Operator를 설치했는지 확인합니다. Operators설치된 Operators 페이지를 방문하여 Loki Operator 를 찾습니다.
  2. Loki Operator 가 모든 프로젝트에 Succeeded 상태로 나열되어 있는지 확인합니다.
중요

Loki를 설치 제거하려면 Loki를 설치하는 데 사용한 방법과 일치하는 제거 프로세스를 참조하십시오. 나머지 ClusterRolesClusterRoleBindings, 오브젝트 저장소에 저장된 데이터 및 제거해야 하는 영구 볼륨이 있을 수 있습니다.

3.2.1. Loki 스토리지의 시크릿 생성

Loki Operator는 AWS S3, Google Cloud Storage, Azure, Swift, Minio, OpenShift Data Foundation과 같은 몇 가지 로그 스토리지 옵션을 지원합니다. 다음 예제에서는 AWS S3 스토리지에 대한 보안을 생성하는 방법을 보여줍니다. 이 예에서 loki-s3 에서 생성된 보안은 " LokiStack 리소스 생성"에서 참조됩니다. 웹 콘솔 또는 CLI에서 이 시크릿을 생성할 수 있습니다.

  1. 웹 콘솔을 사용하여 프로젝트모든 프로젝트 드롭다운으로 이동하여 프로젝트 생성을 선택합니다. 프로젝트 이름을 netobserv 로 지정하고 생성 을 클릭합니다.
  2. 오른쪽 상단에 있는 가져오기 아이콘 + 로 이동합니다. YAML 파일을 편집기에 붙여넣습니다.

    다음은 S3 스토리지에 대한 시크릿 YAML 파일의 예입니다.

    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
    Copy to Clipboard Toggle word wrap
    1
    이 설명서의 설치 예제에서는 모든 구성 요소에서 동일한 네임스페이스 netobserv 를 사용합니다. 선택적으로 다른 구성 요소에 다른 네임스페이스를 사용할 수 있습니다.

검증

  • 시크릿을 생성하면 웹 콘솔에 워크로드시크릿 아래에 표시되어야 합니다.

3.2.2. LokiStack 사용자 정의 리소스 생성

웹 콘솔 또는ocCLI(OpenShift CLI)를 사용하여 네임스페이스 또는 새 프로젝트를 생성하여 LokiStack CR(사용자 정의 리소스)을 배포할 수 있습니다.

프로세스

  1. Operators설치된 Operators로 이동하여 프로젝트 드롭다운에서 모든 프로젝트를 확인합니다.
  2. Loki Operator 를 찾습니다. 세부 정보에서 제공된 API에서 LokiStack 을 선택합니다.
  3. LokiStack 생성을 클릭합니다.
  4. 다음 필드가 양식 보기 또는 YAML 보기에 지정되었는지 확인합니다.

    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: loki
      namespace: netobserv 
    1
    
    spec:
      size: 1x.small 
    2
    
      storage:
        schemas:
        - version: v12
          effectiveDate: '2022-06-01'
        secret:
          name: loki-s3
          type: s3
      storageClassName: gp3 
    3
    
      tenants:
        mode: openshift-network
    Copy to Clipboard Toggle word wrap
    1
    이 설명서의 설치 예제에서는 모든 구성 요소에서 동일한 네임스페이스 netobserv 를 사용합니다. 선택적으로 다른 네임스페이스를 사용할 수 있습니다.
    2
    배포 크기를 지정합니다. Loki Operator 5.8 이상 버전에서 Loki의 프로덕션 인스턴스에 지원되는 크기 옵션은 1x.extra-small, 1x.small, 또는 1x.medium 입니다.
    중요

    배포 크기에 대해 숫자 1x 를 변경할 수 없습니다.

    3
    ReadWriteOnce 액세스 모드에서 클러스터에서 사용할 수 있는 스토리지 클래스 이름을 사용합니다. oc get storageclasses 를 사용하여 클러스터에서 사용 가능한 항목을 확인할 수 있습니다.
    중요

    로깅에 사용되는 동일한 LokiStack CR을 재사용해서는 안 됩니다.

  5. 생성을 클릭합니다.

3.2.3. cluster-admin 사용자 역할의 새 그룹 생성

중요

cluster-admin 사용자로 여러 네임스페이스에 대한 애플리케이션 로그를 쿼리합니다. 여기서 클러스터의 모든 네임스페이스 합계는 5120보다 큰 오류입니다: 입력 크기가 너무 긴 (XXXX > 5120) 오류가 발생했습니다. LokiStack의 로그에 대한 액세스를 보다 효과적으로 제어하려면 cluster-admin 사용자를 cluster-admin 그룹의 멤버로 설정합니다. cluster-admin 그룹이 없는 경우 해당 그룹을 생성하고 원하는 사용자를 추가합니다.

다음 절차에 따라 cluster-admin 권한이 있는 사용자를 위한 새 그룹을 생성합니다.

프로세스

  1. 다음 명령을 입력하여 새 그룹을 생성합니다.

    $ oc adm groups new cluster-admin
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 입력하여 원하는 사용자를 cluster-admin 그룹에 추가합니다.

    $ oc adm groups add-users cluster-admin <username>
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 입력하여 cluster-admin 사용자 역할을 그룹에 추가합니다.

    $ oc adm policy add-cluster-role-to-group cluster-admin cluster-admin
    Copy to Clipboard Toggle word wrap

3.2.4. 사용자 정의 관리자 그룹 액세스

반드시 관리자 없이 클러스터 전체 로그를 확인해야 하거나 여기에서 사용하려는 그룹이 이미 정의되어 있는 경우 adminGroup 필드를 사용하여 사용자 지정 그룹을 지정할 수 있습니다. LokiStack CR(사용자 정의 리소스)의 adminGroups 필드에 지정된 그룹의 멤버인 사용자는 관리자와 동일한 읽기 액세스 권한을 갖습니다.

관리자는 cluster-logging-application-view 역할도 할당한 경우 모든 네임스페이스의 모든 애플리케이션 로그에 액세스할 수 있습니다.

관리자 사용자는 클러스터 전체의 모든 네트워크 로그에 액세스할 수 있습니다.

LokiStack CR의 예

apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
  name: loki
  namespace: netobserv
spec:
  tenants:
    mode: openshift-network 
1

    openshift:
      adminGroups: 
2

      - cluster-admin
      - custom-admin-group 
3
Copy to Clipboard Toggle word wrap

1
사용자 지정 관리 그룹은 이 모드에서만 사용할 수 있습니다.
2
이 필드에 빈 목록 [] 값을 입력하면 관리자 그룹이 비활성화됩니다.
3
기본 그룹 덮어쓰기(system:cluster-admins,cluster-admin,dedicated-admin)

3.2.5. Loki 배포 크기 조정

Loki의 크기 조정은 1x.<size> 형식을 따릅니다. 여기서 1x 값은 인스턴스 수이고 < size >는 성능 기능을 지정합니다.

중요

배포 크기에 대해 숫자 1x 를 변경할 수 없습니다.

Expand
표 3.2. Loki 크기 조정
 1x.demo1x.extra-small1x.small1x.medium

데이터 전송

데모만 사용

100GB/일

500GB/일

2TB/일

초당 쿼리(QPS)

데모만 사용

200ms에서 1-25 QPS

25-50 QPS (200ms)

25-75 QPS (200ms)

복제 요인

없음

2

2

2

총 CPU 요청

없음

14개의 vCPU

34 vCPU

54 vCPU

총 메모리 요청

없음

31GI

67GI

139Gi

총 디스크 요청

40Gi

430Gi

430Gi

590Gi

3.2.6. LokiStack 수집 제한 및 상태 경고

LokiStack 인스턴스는 구성된 크기에 따라 기본 설정과 함께 제공됩니다. 수집 및 쿼리 제한과 같은 일부 설정을 재정의할 수 있습니다. 웹 콘솔의 자동 경고는 이러한 제한에 도달할 때 이를 알려줍니다.

참고

Loki 오류가 콘솔 플러그인 또는 flowlogs-pipeline 로그에 표시되면 ingestion 및 쿼리 제한을 업데이트할 수 있습니다.

다음은 구성된 제한의 예입니다.

spec:
  limits:
    global:
      ingestion:
        ingestionBurstSize: 40
        ingestionRate: 20
        maxGlobalStreamsPerTenant: 25000
      queries:
        maxChunksPerQuery: 2000000
        maxEntriesLimitPerQuery: 10000
        maxQuerySeries: 3000
Copy to Clipboard Toggle word wrap

이러한 설정에 대한 자세한 내용은 LokiStack API 참조를 참조하십시오.

3.3. Network Observability Operator 설치

OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하여 Network Observability Operator를 설치할 수 있습니다. Operator를 설치할 때 FlowCollector CRD(사용자 정의 리소스 정의)를 제공합니다. FlowCollector 를 만들 때 웹 콘솔에서 사양을 설정할 수 있습니다.

중요

Operator의 실제 메모리 사용은 클러스터 크기 및 배포된 리소스 수에 따라 달라집니다. 그에 따라 메모리 사용을 조정해야 할 수 있습니다. 자세한 내용은 "중요 흐름 수집기 구성 고려 사항" 섹션의 "네트워크 Observability 컨트롤러 관리자 Pod가 메모리 부족"을 참조하십시오.

사전 요구 사항

  • Loki를 사용하도록 선택하는 경우 Loki Operator 버전 5.7+ 를 설치합니다.
  • cluster-admin 권한이 있어야 합니다.
  • 지원되는 아키텍처 중 하나는 amd64, ppc64le, arm64, 또는 s390x입니다.
  • RHEL(Red Hat Enterprise Linux) 9에서 지원하는 모든 CPU.
  • OVN-Kubernetes를 기본 네트워크 플러그인으로 구성하고 필요한 경우 Multus 및 SR-IOV와 함께 보조 인터페이스를 사용해야 합니다.
참고

또한 이 설치 예제에서는 모든 구성 요소에서 사용되는 netobserv 네임스페이스를 사용합니다. 선택적으로 다른 네임스페이스를 사용할 수 있습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 OperatorOperatorHub를 클릭합니다.
  2. OperatorHub 의 사용 가능한 Operator 목록에서 Network Observability Operator 를 선택하고 설치를 클릭합니다.
  3. 이 네임스페이스에서 Operator 권장 클러스터 모니터링 활성화 확인란을 선택합니다.
  4. Operators설치된 Operator로 이동합니다. 네트워크 Observability용 제공된 API에서 흐름 수집기 링크를 선택합니다.
  5. Flow Collector 탭으로 이동하여 FlowCollector 만들기 를 클릭합니다. 양식 보기에서 다음 항목을 선택합니다.

    1. spec.agent.ebpf.Sampling: 흐름에 대한 샘플링 크기를 지정합니다. 샘플링 크기가 감소하면 리소스 사용량에 더 큰 영향을 미칩니다. 자세한 내용은 "FlowCollector API 참조", spec.agent.ebpf 를 참조하십시오.
    2. Loki를 사용하지 않는 경우 Loki 클라이언트 설정을 클릭하고 EnableFalse 로 변경합니다. 설정은 기본적으로 True 입니다.
    3. Loki를 사용하는 경우 다음 사양을 설정합니다.

      1. spec.loki.mode: LokiStack 모드로 설정하여 URL, TLS, 클러스터 역할 및 클러스터 역할 바인딩과 authToken 값을 자동으로 설정합니다. 또는 수동 모드를 사용하면 이러한 설정의 구성을 보다 효과적으로 제어할 수 있습니다.
      2. spec.loki.lokistack.name: 이를 LokiStack 리소스의 이름으로 설정합니다. 이 문서에서 loki 가 사용됩니다.
    4. 선택 사항: 대규모 환경에 있는 경우 보다 탄력적이고 확장 가능한 방식으로 데이터를 전달하기 위해 Kafka로 FlowCollector 를 구성하는 것이 좋습니다. "Important Flow Collector 구성 고려 사항" 섹션의 " Kafka 스토리지를 사용하여 흐름 수집기 리소스 구성"을 참조하십시오.
    5. 선택 사항: FlowCollector 를 만드는 다음 단계 전에 다른 선택적 설정을 구성합니다. 예를 들어 Loki를 사용하지 않도록 선택하는 경우 Kafka 또는 IPFIX로 내보내기 흐름을 구성할 수 있습니다. "Important Flow Collector 구성 고려 사항" 섹션에서 " Kafka 및 IPFIX로 보강된 네트워크 흐름 데이터 내보내기"를 참조하십시오.
  6. 생성을 클릭합니다.

검증

이 작업이 성공했는지 확인하려면 Observe 로 이동할 때 옵션에 네트워크 트래픽이 표시되어야 합니다.

OpenShift Container Platform 클러스터 내에 애플리케이션 트래픽이 없으면 기본 필터에 "결과가 없음"이 표시되어 시각적 흐름이 발생하지 않을 수 있습니다. 필터 선택 옆에 있는 모든 필터 지우기 를 선택하여 흐름을 확인합니다.

3.4. 네트워크 Observability에서 멀티 테넌시 활성화

Network Observability Operator의 멀티 테넌시를 사용하면 개별 사용자 액세스 또는 그룹 액세스를 Loki 및 또는 Prometheus에 저장된 흐름으로 제한할 수 있습니다. 프로젝트 관리자에 대한 액세스 권한이 활성화됩니다. 일부 네임스페이스에 대한 액세스 권한이 제한된 프로젝트 관리자는 해당 네임스페이스의 흐름에만 액세스할 수 있습니다.

개발자의 경우 멀티 테넌시는 Loki 및 Prometheus 모두에 사용할 수 있지만 다른 액세스 권한이 필요합니다.

사전 요구 사항

  • Loki를 사용하는 경우 최소 Loki Operator 버전 5.7 을 설치했습니다.
  • 프로젝트 관리자로 로그인해야 합니다.

프로세스

  • 테넌트별 액세스의 경우 개발자 화면을 사용하려면 netobserv-reader 클러스터 역할과 netobserv-metrics-reader 네임스페이스 역할이 있어야 합니다. 이 액세스 수준에 대해 다음 명령을 실행합니다.

    $ oc adm policy add-cluster-role-to-user netobserv-reader <user_group_or_name>
    Copy to Clipboard Toggle word wrap
    $ oc adm policy add-role-to-user netobserv-metrics-reader <user_group_or_name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  • 클러스터 전체 액세스의 경우 비cluster-administrators에는 netobserv-reader,cluster-monitoring-view, netobserv-metrics-reader 클러스터 역할이 있어야 합니다. 이 시나리오에서는 관리자 화면 또는 개발자 화면을 사용할 수 있습니다. 이 액세스 수준에 대해 다음 명령을 실행합니다.

    $ oc adm policy add-cluster-role-to-user netobserv-reader <user_group_or_name>
    Copy to Clipboard Toggle word wrap
    $ oc adm policy add-cluster-role-to-user cluster-monitoring-view <user_group_or_name>
    Copy to Clipboard Toggle word wrap
    $ oc adm policy add-cluster-role-to-user netobserv-metrics-reader <user_group_or_name>
    Copy to Clipboard Toggle word wrap

3.6. Kafka 설치 (선택 사항)

Kafka Operator는 대규모 환경에서 지원됩니다. Kafka는 보다 탄력적이고 확장 가능한 방식으로 네트워크 흐름 데이터를 전달하기 위해 높은 처리량과 대기 시간이 짧은 데이터 피드를 제공합니다. Loki Operator 및 Network Observability Operator가 설치된 것처럼 Operator Hub에서 Kafka Operator를 Red Hat AMQ Streams 로 설치할 수 있습니다. Kafka를 스토리지 옵션으로 구성하려면 " FlowCollector 리소스 구성"을 참조하십시오.

참고

Kafka를 설치 제거하려면 설치하는 데 사용한 방법과 일치하는 제거 프로세스를 참조하십시오.

3.7. Network Observability Operator 설치 제거

OpenShift Container Platform 웹 콘솔 Operator Hub를 사용하여 Network Observability Operator를 설치 제거하고 Operators설치된 Operators 영역에서 작업할 수 있습니다.

프로세스

  1. FlowCollector 사용자 지정 리소스를 제거합니다.

    1. 제공된 API 열에서 Network Observability Operator 옆에 있는 흐름 수집기 를 클릭합니다.
    2. 클러스터 의 옵션 메뉴 kebab 를 클릭하고 FlowCollector 삭제 를 선택합니다.
  2. Network Observability Operator를 설치 제거합니다.

    1. Operator → 설치된 Operator 영역으로 돌아갑니다.
    2. Network Observability Operator 옆에 있는 옵션 메뉴 kebab 를 클릭하고 Operator 설치 제거를 선택합니다.
    3. 프로젝트openshift-netobserv-operator선택
    4. 작업으로 이동하여 프로젝트 삭제를 선택합니다.
  3. FlowCollector CRD(사용자 정의 리소스 정의)를 제거합니다.

    1. 관리클러스터 리소스 정의로 이동합니다.
    2. FlowCollector 를 찾아 옵션 메뉴 kebab 를 클릭합니다.
    3. 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 웹 콘솔에서 대시보드, 메트릭 및 흐름을 표시합니다.

프로세스

  1. 다음 명령을 실행하여 FlowCollector 의 상태를 확인합니다.

    $ oc get flowcollector/cluster
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME      AGENT   SAMPLING (EBPF)   DEPLOYMENT MODEL   STATUS
    cluster   EBPF    50                DIRECT             Ready
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 입력하여 netobserv 네임스페이스에서 실행 중인 Pod의 상태를 확인합니다.

    $ oc get pods -n netobserv
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

FlowLogs-pipeline 포드는 흐름을 수집하고 수집된 흐름을 강화한 다음 Loki 스토리지로 흐름을 보냅니다. NetObserv-plugin Pod는 OpenShift Container Platform 콘솔의 시각화 플러그인을 생성합니다.

  1. 다음 명령을 입력하여 네임스페이스 netobserv-privileged 에서 실행 중인 Pod의 상태를 확인합니다.

    $ oc get pods -n netobserv-privileged
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

NetObserv-ebpf-agent Pod는 노드의 네트워크 인터페이스를 모니터링하여 흐름을 가져오고 flowlogs-pipeline pod로 보냅니다.

  1. Loki Operator를 사용하는 경우 다음 명령을 입력하여 openshift-operators-redhat 네임스페이스에서 실행중인 Pod의 상태를 확인합니다.

    $ oc get pods -n openshift-operators-redhat
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

4.2. Network Observablity Operator 아키텍처

Network Observability Operator는 설치 시 인스턴스화되고 eBPF 에이전트, flowlogs-pipelinenetobserv-plugin 구성 요소를 조정하도록 구성된 FlowCollector API를 제공합니다. 클러스터당 하나의 FlowCollector 만 지원됩니다.

eBPF 에이전트 는 네트워크 흐름을 수집할 수 있는 일부 권한이 있는 각 클러스터 노드에서 실행됩니다. flowlogs-pipeline 은 네트워크 흐름 데이터를 수신하고 Kubernetes 식별자를 사용하여 데이터를 보강합니다. Loki를 사용하도록 선택하는 경우 flowlogs-pipeline 은 저장 및 인덱싱을 위해 흐름 로그 데이터를 Loki로 보냅니다. 동적 OpenShift Container Platform 웹 콘솔 플러그인인 netobserv-plugin 은 Loki를 쿼리하여 네트워크 흐름 데이터를 가져옵니다. cluster-admins는 웹 콘솔에서 데이터를 볼 수 있습니다.

Loki를 사용하지 않는 경우 Prometheus를 사용하여 지표를 생성할 수 있습니다. 해당 메트릭 및 관련 대시보드는 웹 콘솔에서 액세스할 수 있습니다. 자세한 내용은 " Loki가 없는 네트워크 Observability"를 참조하십시오.

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

4.3. Network Observability Operator 상태 및 구성 보기

oc describe 명령을 사용하여 상태를 검사하고 FlowCollector의 세부 정보를 볼 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 Network Observability Operator의 상태 및 구성을 확인합니다.

    $ oc describe flowcollector/cluster
    Copy to Clipboard Toggle word wrap

5장. Network Observability Operator 구성

FlowCollector API 리소스를 업데이트하여 Network Observability Operator 및 관리되는 구성 요소를 구성할 수 있습니다. 설치 중에 FlowCollector 가 명시적으로 생성됩니다. 이 리소스는 클러스터 전체에서 작동하기 때문에 단일 FlowCollector 만 허용되며 cluster 라는 이름을 지정해야 합니다. 자세한 내용은 FlowCollector API 참조를 참조하십시오.

5.1. FlowCollector 리소스 보기

OpenShift Container Platform 웹 콘솔에서 직접 YAML을 보고 편집할 수 있습니다.

프로세스

  1. 웹 콘솔에서 Operators설치된 Operators 로 이동합니다.
  2. NetObserv Operator제공된 API 제목에서 흐름 수집기 를 선택합니다.
  3. 클러스터를 선택한 다음 YAML 탭을 선택합니다. 여기에서 FlowCollector 리소스를 수정하여 Network Observability Operator를 구성할 수 있습니다.

다음 예제에서는 OpenShift Container Platform Network Observability Operator의 샘플 FlowCollector 리소스를 보여줍니다.

샘플 FlowCollector 리소스

apiVersion: flows.netobserv.io/v1beta2
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:               
3

    logLevel: info
    resources:
      requests:
        memory: 100Mi
        cpu: 100m
      limits:
        memory: 800Mi
    logTypes: Flows
    advanced:
      conversationEndTimeout: 10s
      conversationHeartbeatInterval: 30s
  loki:                     
4

    mode: LokiStack         
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'
Copy to Clipboard Toggle word wrap

1
에이전트 사양인 spec.agent.type 은 Cryostat PF 여야 합니다. eBPF는 지원되는 유일한 OpenShift Container Platform 옵션입니다.
2
Sampling 사양인 spec.agent.ebpf.sampling 을 설정하여 리소스를 관리할 수 있습니다. 샘플링 값이 작으면 많은 양의 컴퓨팅, 메모리 및 스토리지 리소스를 사용할 수 있습니다. 샘플링 비율 값을 지정하여 이를 완화할 수 있습니다. 값이 100이면 100개마다 하나의 흐름이 샘플링됩니다. 값이 0 또는 1이면 모든 흐름이 캡처됩니다. 값이 낮을수록 반환된 흐름의 증가 및 파생 메트릭의 정확도가 낮아집니다. 기본적으로 eBPF 샘플링은 값 50으로 설정되므로 50마다 하나의 흐름이 샘플링됩니다. 더 많은 샘플 흐름은 더 많은 스토리지가 필요하다는 것을 의미합니다. 클러스터를 관리할 수 있는 설정을 결정하려면 기본값으로 시작하고 경험적으로 구체화하는 것이 좋습니다.
3
대화 추적을 활성화하도록 Processor specification spec.processor. 를 설정할 수 있습니다. 활성화하면 웹 콘솔에서 대화 이벤트를 쿼리할 수 있습니다. spec.processor.logTypes 값은 Flows 입니다. spec.processor.advanced 값은 Conversations,EndedConversations 또는 ALL 입니다. EndedConversations 의 경우 스토리지 요구 사항이 All 및 lowest에서 가장 높습니다.
4
Loki 사양인 spec.loki 는 Loki 클라이언트를 지정합니다. 기본값은 Loki Operator 설치 섹션에 언급된 Loki 설치 경로와 일치합니다. Loki에 다른 설치 방법을 사용한 경우 설치에 적절한 클라이언트 정보를 지정합니다.
5
LokiStack 모드는 querierUrl,ingesterUrlstatusUrl,tenantID 및 해당 TLS 구성 등 몇 가지 구성을 자동으로 설정합니다. Loki에 로그를 읽고 쓰기 위해 클러스터 역할 및 클러스터 역할 바인딩이 생성됩니다. authTokenForward 로 설정됩니다. 수동 모드를 사용하여 수동으로 설정할 수 있습니다.
6
spec.quickFilters 사양은 웹 콘솔에 표시되는 필터를 정의합니다. 애플리케이션 필터 키,src_namespacedst_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를 지원합니다.

프로세스

  1. 웹 콘솔에서 Operators설치된 Operators 로 이동합니다.
  2. Network Observability Operator의 제공된 API 제목에서 흐름 수집기 를 선택합니다.
  3. 클러스터를 선택한 다음 YAML 탭을 클릭합니다.
  4. 다음 샘플 YAML과 같이 OpenShift Container Platform Network Observability Operator의 FlowCollector 리소스를 수정하여 Kafka를 사용합니다.

FlowCollector 리소스의 Kafka 구성 샘플

apiVersion: flows.netobserv.io/v1beta2
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
Copy to Clipboard Toggle word wrap

1
Kafka 배포 모델을 활성화하려면 Direct 대신 spec.deploymentModel 을 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, OpenTelemetry의 Red Hat 빌드 또는 세 가지 모두에 동시에 네트워크 흐름을 보낼 수 있습니다. Kafka 또는 IPFIX의 경우 Splunk, Elasticsearch 또는 Fluentd와 같은 입력을 지원하는 모든 프로세서 또는 스토리지에서 보강된 네트워크 흐름 데이터를 사용할 수 있습니다. OpenTelemetry의 경우 네트워크 흐름 데이터 및 메트릭을 OpenTelemetry, Jaeger 또는 Prometheus의 Red Hat 빌드와 같은 호환 가능한 OpenTelemetry 엔드포인트로 내보낼 수 있습니다.

사전 요구 사항

  • Kafka, IPFIX 또는 OpenTelemetry 수집기 끝점은 네트워크 Observability flowlogs-pipeline Pod에서 사용할 수 있습니다.

프로세스

  1. 웹 콘솔에서 Operators설치된 Operators 로 이동합니다.
  2. NetObserv Operator제공된 API 제목에서 흐름 수집기 를 선택합니다.
  3. 클러스터를 선택한 다음 YAML 탭을 선택합니다.
  4. 다음과 같이 FlowCollector 를 편집하여 spec.exporters 를 구성합니다.

    apiVersion: flows.netobserv.io/v1beta2
    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
    
     -  type: OpenTelemetry                 
    6
    
          openTelemetry:
            targetHost: my-otelcol-collector-headless.otlp.svc
            targetPort: 4317
            type: grpc                      
    7
    
            logs:                           
    8
    
              enable: true
            metrics:                        
    9
    
              enable: true
              prefix: netobserv
              pushTimeInterval: 20s         
    10
    
              expiryTime: 2m
       #    fieldsMapping:                  
    11
    
       #      input: SrcAddr
       #      output: source.address
    Copy to Clipboard Toggle word wrap
    1 4 6
    IPFIX, OpenTelemetry 및 Kafka로 흐름을 개별적으로 또는 동시에 내보낼 수 있습니다.
    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 에서 참조해야 합니다.
    5
    전송을 지정하는 옵션이 있습니다. 기본값은 tcp 이지만 udp 도 지정할 수 있습니다.
    7
    OpenTelemetry 연결의 프로토콜입니다. 사용 가능한 옵션은 httpgrpc 입니다.
    8
    Loki용으로 생성된 로그와 동일한 로그를 내보내기 위한 OpenTelemetry 구성입니다.
    9
    메트릭을 내보내기 위한 OpenTelemetry 구성, 이는 Prometheus에 대해 생성된 지표와 동일합니다. 이러한 구성은 FlowCollector 사용자 정의 리소스를 사용하여 정의한 사용자 지정 지표와 함께 FlowCollector 사용자 정의 리소스의 spec.processor.metrics.includeList 매개변수에 지정됩니다.
    10
    지표가 OpenTelemetry 수집기로 전송되는 시간 간격입니다.
    11
    선택 사항:Network Observability 네트워크 흐름 형식의 이름이 자동으로 OpenTelemetry 호환 형식으로 변경됩니다. fieldsMapping 사양을 사용하면 OpenTelemetry 형식 출력을 사용자 지정할 수 있습니다. 예를 들어 YAML 샘플에서 SrcAddr 는 Network Observability 입력 필드이며 OpenTelemetry 출력에서 source.address 의 이름이 변경됩니다. "네트워크 흐름 형식 참조"에서 Network Observability 및 OpenTelemetry 형식을 모두 볼 수 있습니다.

구성 후 네트워크 흐름 데이터를 JSON 형식의 사용 가능한 출력으로 전송할 수 있습니다. 자세한 내용은 "네트워크 흐름 형식 참조"를 참조하십시오.

5.4. 흐름 수집기 리소스 업데이트

OpenShift Container Platform 웹 콘솔에서 YAML을 편집하는 대신 flowcollector CR(사용자 정의 리소스)을 패치하여 eBPF 샘플링과 같은 사양을 구성할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 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"
    Copy to Clipboard Toggle word wrap

5.5. 빠른 필터 구성

FlowCollector 리소스에서 필터를 수정할 수 있습니다. 정확한 일치는 값에 대한 double-quotes를 사용할 수 있습니다. 그렇지 않으면 부분 일치가 텍스트 값에 사용됩니다. 키 끝에 배치된 bang(!) 문자는 부정을 의미합니다. YAML 수정에 대한 자세한 내용은 샘플 FlowCollector 리소스를 참조하십시오.

참고

일치하는 필터 유형은 "all of" 또는 "any of"는 사용자가 쿼리 옵션에서 수정할 수 있는 UI 설정입니다. 이 리소스는 이 리소스 구성의 일부가 아닙니다.

다음은 사용 가능한 모든 필터 키 목록입니다.

Expand
표 5.1. 키 필터링
Universal*소스대상설명

네임스페이스

src_namespace

dst_namespace

특정 네임스페이스와 관련된 트래픽을 필터링합니다.

name

src_name

dst_name

특정 pod, 서비스 또는 노드(호스트 네트워크 트래픽의 경우)와 같은 지정된 리프 리소스 이름과 관련된 트래픽을 필터링합니다.

kind

src_kind

dst_kind

지정된 리소스 유형과 관련된 트래픽을 필터링합니다. 리소스 종류에는 리프 리소스(Pod, 서비스 또는 노드) 또는 소유자 리소스(Deployment 및 StatefulSet)가 포함됩니다.

owner_name

src_owner_name

dst_owner_name

지정된 리소스 소유자, 즉 워크로드 또는 Pod 세트와 관련된 트래픽을 필터링합니다. 예를 들어 배포 이름, StatefulSet 이름 등이 될 수 있습니다.

resource

src_resource

dst_resource

고유하게 식별하는 표준 이름으로 표시되는 특정 리소스와 관련된 트래픽을 필터링합니다. canonical notation은 네임스페이스가 지정된 종류의 kind.namespace.name 또는 노드의 node.name 입니다. 예: Deployment.my-namespace.my-web-server.

address

src_address

dst_address

IP 주소와 관련된 트래픽을 필터링합니다. IPv4 및 IPv6이 지원됩니다. CIDR 범위도 지원됩니다.

mac

src_mac

dst_mac

MAC 주소와 관련된 트래픽을 필터링합니다.

port

src_port

dst_port

특정 포트와 관련된 트래픽을 필터링합니다.

host_address

src_host_address

dst_host_address

Pod가 실행 중인 호스트 IP 주소와 관련된 트래픽을 필터링합니다.

프로토콜

해당 없음

해당 없음

TCP 또는 UDP와 같은 프로토콜과 관련된 트래픽을 필터링합니다.

  • 소스 또는 대상에 대해 Universal keys filter for any of source or destination 예를 들어, name: 'my-pod'를 필터링하는 것은 모든 트래픽의 모든 트래픽을 my-podmy-pod로의 Match all 또는 Match any를 의미합니다.

5.6. 리소스 관리 및 성능 고려 사항

Network Observability에 필요한 리소스 양은 클러스터의 크기와 관찰성 데이터를 수집하고 저장하는 클러스터의 요구 사항에 따라 달라집니다. 리소스를 관리하고 클러스터의 성능 기준을 설정하려면 다음 설정을 구성하는 것이 좋습니다. 이러한 설정을 구성하면 최적의 설정 및 관찰 기능 요구 사항이 충족될 수 있습니다.

다음 설정을 사용하면 처음부터 리소스 및 성능을 관리하는 데 도움이 될 수 있습니다.

eBPF 샘플링
Sampling 사양인 spec.agent.ebpf.sampling 을 설정하여 리소스를 관리할 수 있습니다. 더 작은 샘플링 값은 많은 양의 컴퓨팅, 메모리 및 스토리지 리소스를 사용할 수 있습니다. 샘플링 비율 값을 지정하여 이를 완화할 수 있습니다. 값이 100 이면 100개마다 하나의 흐름이 샘플링됩니다. 값이 0 또는 1 이면 모든 흐름이 캡처됩니다. 값이 작으면 반환된 흐름이 증가하고 파생 메트릭의 정확도가 증가합니다. 기본적으로 eBPF 샘플링은 값 50으로 설정되므로 50마다 하나의 흐름이 샘플링됩니다. 더 많은 샘플 흐름은 더 많은 스토리지가 필요하다는 것을 의미합니다. 클러스터가 관리할 수 있는 설정을 결정하기 위해 기본값을 시작하고 실제적으로 구체화하는 것이 좋습니다.
eBPF 기능
활성화된 기능이 많을수록 CPU 및 메모리가 더 많이 영향을 받습니다. 이러한 기능의 전체 목록은 "네트워크 트래픽 예약"을 참조하십시오.
Loki 없이
Loki를 사용하지 않고 Prometheus를 사용하지 않고 Prometheus에 의존하는 방식으로 Network Observability 필요한 리소스 양을 줄일 수 있습니다. 예를 들어 Loki 없이 Network Observability를 구성할 때 메모리 사용량의 총 절감액은 20-65% 범위에 있으며 CPU 사용률은 샘플링 값에 따라 10~30% 낮습니다. 자세한 내용은 "Network Observability without Loki"에서 참조하십시오.
인터페이스 제한 또는 제외

5.6.1.

중요

Expand
표 5.2.
    

5.6.2.

참고

Expand
표 5.3.
샘플링 값사용된 리소스테스트 1개(25개의 노드)테스트 2개(250 노드)

sampling = 50

총 NetObserv CPU 사용량

1.35

5.39

총 NetObserv RSS(메모리) 사용량

16GB

63GB

sampling = 1

총 NetObserv CPU 사용량

1.82

11.99

총 NetObserv RSS(메모리) 사용량

22GB

87GB

요약: 이 표에는 모든 기능이 활성화된 Agents, CryostatP, Kafka 및 Loki가 포함된 Network Observability의 평균 총 리소스 사용량이 표시됩니다. 활성화된 기능에 대한 자세한 내용은 이 테스트에서 사용할 수 있는 모든 기능을 포함하는 "네트워크 트래픽 예약"에서 다루는 기능을 참조하십시오.

6장.

6.1.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      networkPolicy:
        enable: true   
    1
    
        additionalNamespaces: ["openshift-console", "openshift-monitoring"] 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    2

6.2.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
spec:
  ingress:
  - from:
    - podSelector: {}
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: netobserv-privileged
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: openshift-console
    ports:
    - port: 9001
      protocol: TCP
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: openshift-monitoring
  podSelector: {}
  policyTypes:
  - Ingress
Copy to Clipboard Toggle word wrap

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: netobserv
  namespace: netobserv-privileged
spec:
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: openshift-monitoring
  podSelector: {}
  policyTypes:
  - Ingress
Copy to Clipboard Toggle word wrap

7장.

7.1.

7.1.1.

7.1.2.

7.1.2.1.

7.1.3.

7.1.3.1.

7.1.4.

7.1.5.

7.1.6.

7.1.6.1.

7.1.6.2.

7.1.6.3.

Expand
표 7.1.
  

Expand
표 7.2.
  

7.1.7.

중요

7.2.

7.2.1.

7.2.2.

7.2.2.1.

7.2.2.2.

7.2.3.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
     processor:
      logTypes: Flows                              
    1
    
      advanced:
       conversationEndTimeout: 10s                 
    2
    
       conversationHeartbeatInterval: 30s          
    3
    Copy to Clipboard Toggle word wrap

    1
    2
    3
    참고

7.2.4.

중요

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
           - PacketDrop            
    1
    
          privileged: true         
    2
    Copy to Clipboard Toggle word wrap

    1
    2

7.2.5.

중요

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
           - DNSTracking           
    1
    
          sampling: 1              
    2
    Copy to Clipboard Toggle word wrap

    1
    2
참고

7.2.6.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
           - FlowRTT   
    1
    Copy to Clipboard Toggle word wrap

    1

7.2.6.1.

7.2.7.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
    # ...
     processor:
       addZone: true
    # ...
    Copy to Clipboard Toggle word wrap

7.2.8.

  1. 예 7.1.

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      deploymentModel: Direct
      agent:
        type: eBPF
        ebpf:
          flowFilter:
            action: Accept  
    1
    
            cidr: 172.210.150.1/24 
    2
    
            protocol: SCTP
            direction: Ingress
            destPortRange: 80-100
            peerIP: 10.10.10.10
            enable: true    
    3
    Copy to Clipboard Toggle word wrap
    1
    2
    3

    예 7.2.

    apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      deploymentModel: Direct
      agent:
        type: eBPF
        ebpf:
          flowFilter:
            action: Accept  
    1
    
            cidr: 0.0.0.0/0 
    2
    
            protocol: TCP
            direction: Egress
            sourcePort: 100
            peerIP: 192.168.127.12 
    3
    
            enable: true    
    4
    Copy to Clipboard Toggle word wrap
    1
    2
    3
    4

7.2.9.

7.2.10.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      agent:
        type: eBPF
        ebpf:
          features:
           - PacketTranslation   
    1
    Copy to Clipboard Toggle word wrap

    1

7.2.11.

중요

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
       agent:
        type: eBPF
        ebpf:
      #   sampling: 1       
    1
    
          privileged: true  
    2
    
          features:
           - "NetworkEvents"
    Copy to Clipboard Toggle word wrap

    1
    2

<Dropped_or_Allowed> by <network_event_and_event_name>, direction <Ingress_or_Egress>
Copy to Clipboard Toggle word wrap

7.3.

7.3.1.

7.3.2.

7.3.2.1.

7.4.

참고

8장.

8.1.

8.2.

8.3.

8.4.

  1. apiVersion: monitoring.openshift.io/v1
    kind: AlertingRule
    metadata:
      name: netobserv-alerts
      namespace: openshift-monitoring
    spec:
      groups:
      - name: NetObservAlerts
        rules:
        - alert: NetObservIncomingBandwidth
          annotations:
            message: |-
              {{ $labels.job }}: incoming traffic exceeding 10 MBps for 30s on {{ $labels.DstK8S_OwnerType }} {{ $labels.DstK8S_OwnerName }} ({{ $labels.DstK8S_Namespace }}).
            summary: "High incoming traffic."
          expr: sum(rate(netobserv_workload_ingress_bytes_total     {SrcK8S_Namespace="openshift-ingress"}[1m])) by (job, DstK8S_Namespace, DstK8S_OwnerName, DstK8S_OwnerType) > 10000000      
    1
    
          for: 30s
          labels:
            severity: warning
    Copy to Clipboard Toggle word wrap
    1

8.5.

8.6.

  1. 예 8.1.

    apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowMetric
    metadata:
      name: flowmetric-cluster-external-ingress-traffic
      namespace: netobserv                              
    1
    
    spec:
      metricName: cluster_external_ingress_bytes_total  
    2
    
      type: Counter                                     
    3
    
      valueField: Bytes
      direction: Ingress                                
    4
    
      labels: [DstK8S_HostName,DstK8S_Namespace,DstK8S_OwnerName,DstK8S_OwnerType] 
    5
    
      filters:                                          
    6
    
      - field: SrcSubnetLabel
        matchType: Absence
    Copy to Clipboard Toggle word wrap
    1
    2
    3
    4
    5
    6

    예 8.2.

    apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowMetric
    metadata:
      name: flowmetric-cluster-external-ingress-rtt
      namespace: netobserv    
    1
    
    spec:
      metricName: cluster_external_ingress_rtt_seconds
      type: Histogram                 
    2
    
      valueField: TimeFlowRttNs
      direction: Ingress
      labels: [DstK8S_HostName,DstK8S_Namespace,DstK8S_OwnerName,DstK8S_OwnerType]
      filters:
      - field: SrcSubnetLabel
        matchType: Absence
      - field: TimeFlowRttNs
        matchType: Presence
      divider: "1000000000"      
    3
    
      buckets: [".001", ".005", ".01", ".02", ".03", ".04", ".05", ".075", ".1", ".25", "1"]  
    4
    Copy to Clipboard Toggle word wrap
    1
    2
    3
    4

8.7.

중요

중요

  1. apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowMetric
    metadata:
      name: network-policy-events
      namespace: netobserv
    spec:
      metricName: network_policy_events_total
      type: Counter
      labels: [NetworkEvents>Type, NetworkEvents>Namespace, NetworkEvents>Name, NetworkEvents>Action, NetworkEvents>Direction]       
    1
    
      filters:
      - field: NetworkEvents>Feature
        value: acl
      flatten: [NetworkEvents]       
    2
    
      remap:                         
    3
    
        "NetworkEvents>Type": type
        "NetworkEvents>Namespace": namespace
        "NetworkEvents>Name": name
        "NetworkEvents>Direction": direction
    Copy to Clipboard Toggle word wrap

    1
    2
    3

중요

8.8.

예 8.3.

apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
  name: flowmetric-cluster-external-ingress-traffic
  namespace: netobserv   
1

# ...
  charts:
  - dashboardName: Main  
2

    title: External ingress traffic
    unit: Bps
    type: SingleStat
    queries:
    - promQL: "sum(rate($METRIC[2m]))"
      legend: ""
  - dashboardName: Main  
3

    sectionName: External
    title: Top external ingress traffic per workload
    unit: Bps
    type: StackArea
    queries:
    - promQL: "sum(rate($METRIC{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace, DstK8S_OwnerName)"
      legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
# ...
Copy to Clipboard Toggle word wrap
1

예 8.4.

apiVersion: flows.netobserv.io/v1alpha1
kind: FlowMetric
metadata:
  name: flowmetric-cluster-external-ingress-traffic
  namespace: netobserv   
1

# ...
  charts:
  - dashboardName: Main  
2

    title: External ingress TCP latency
    unit: seconds
    type: SingleStat
    queries:
    - promQL: "histogram_quantile(0.99, sum(rate($METRIC_bucket[2m])) by (le)) > 0"
      legend: "p99"
  - dashboardName: Main  
3

    sectionName: External
    title: "Top external ingress sRTT per workload, p50 (ms)"
    unit: seconds
    type: Line
    queries:
    - promQL: "histogram_quantile(0.5, sum(rate($METRIC_bucket{DstK8S_Namespace!=\"\"}[2m])) by (le,DstK8S_Namespace,DstK8S_OwnerName))*1000 > 0"
      legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
  - dashboardName: Main  
4

    sectionName: External
    title: "Top external ingress sRTT per workload, p99 (ms)"
    unit: seconds
    type: Line
    queries:
    - promQL: "histogram_quantile(0.99, sum(rate($METRIC_bucket{DstK8S_Namespace!=\"\"}[2m])) by (le,DstK8S_Namespace,DstK8S_OwnerName))*1000 > 0"
      legend: "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}"
# ...
Copy to Clipboard Toggle word wrap
1
2 3 4

promQL: "(sum(rate($METRIC_sum{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace,DstK8S_OwnerName) / sum(rate($METRIC_count{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace,DstK8S_OwnerName))*1000"
Copy to Clipboard Toggle word wrap

8.9.

  1. apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowMetric
    metadata:
      name: flows-with-flags-per-destination
    spec:
      metricName: flows_with_flags_per_destination_total
      type: Counter
      labels: [SrcSubnetLabel,DstSubnetLabel,DstK8S_Name,DstK8S_Type,DstK8S_HostName,DstK8S_Namespace,Flags]
    Copy to Clipboard Toggle word wrap

    apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowMetric
    metadata:
      name: flows-with-flags-per-source
    spec:
      metricName: flows_with_flags_per_source_total
      type: Counter
      labels: [DstSubnetLabel,SrcSubnetLabel,SrcK8S_Name,SrcK8S_Type,SrcK8S_HostName,SrcK8S_Namespace,Flags]
    Copy to Clipboard Toggle word wrap

  2. apiVersion: monitoring.openshift.io/v1
    kind: AlertingRule
    metadata:
      name: netobserv-syn-alerts
      namespace: openshift-monitoring
    # ...
      spec:
      groups:
      - name: NetObservSYNAlerts
        rules:
        - alert: NetObserv-SYNFlood-in
          annotations:
            message: |-
              {{ $labels.job }}: incoming SYN-flood attack suspected to Host={{ $labels.DstK8S_HostName}}, Namespace={{ $labels.DstK8S_Namespace }}, Resource={{ $labels.DstK8S_Name }}. This is characterized by a high volume of SYN-only flows with different source IPs and/or ports.
            summary: "Incoming SYN-flood"
          expr: sum(rate(netobserv_flows_with_flags_per_destination_total{Flags="2"}[1m])) by (job, DstK8S_HostName, DstK8S_Namespace, DstK8S_Name) > 300      
    1
    
          for: 15s
          labels:
            severity: warning
            app: netobserv
        - alert: NetObserv-SYNFlood-out
          annotations:
            message: |-
              {{ $labels.job }}: outgoing SYN-flood attack suspected from Host={{ $labels.SrcK8S_HostName}}, Namespace={{ $labels.SrcK8S_Namespace }}, Resource={{ $labels.SrcK8S_Name }}. This is characterized by a high volume of SYN-only flows with different source IPs and/or ports.
            summary: "Outgoing SYN-flood"
          expr: sum(rate(netobserv_flows_with_flags_per_source_total{Flags="2"}[1m])) by (job, SrcK8S_HostName, SrcK8S_Namespace, SrcK8S_Name) > 300       
    2
    
          for: 15s
          labels:
            severity: warning
            app: netobserv
    # ...
    Copy to Clipboard Toggle word wrap

    1 2

9장.

9.1.

9.2.

9.3.

9.3.1.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      processor:
        metrics:
          disableAlerts: [NetObservLokiError, NetObservNoFlows] 
    1
    Copy to Clipboard Toggle word wrap
    1

9.4.

  1. apiVersion: monitoring.openshift.io/v1
    kind: AlertingRule
    metadata:
      name: loki-alerts
      namespace: openshift-monitoring
    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
    Copy to Clipboard Toggle word wrap

9.5.

참고

apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
  name: cluster
spec:
  namespace: netobserv
  deploymentModel: Direct
  agent:
    type: eBPF
    ebpf:
      cacheMaxFlows: 200000 
1
Copy to Clipboard Toggle word wrap
1

10장.

10.1.

apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
  name: cluster
spec:
# ...
advanced:
  scheduling:
    tolerations:
    - key: "<taint key>"
      operator: "Equal"
      value: "<taint value>"
      effect: "<taint effect>"
      nodeSelector:
        <key>: <value>
      affinity:
        nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: name
              operator: In
              values:
              - app-worker-node
      priorityClassName: """
# ...
Copy to Clipboard Toggle word wrap

11장.

11.1.

  1. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      namespace: netobserv
      deploymentModel: Direct
      agent:
        type: eBPF
        ebpf:
          privileged: true   
    1
    Copy to Clipboard Toggle word wrap

    1

11.2.

  1. $ oc get pod virt-launcher-<vm_name>-<suffix> -n <namespace> -o yaml
    Copy to Clipboard Toggle word wrap
    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/network-status: |-
          [{
            "name": "ovn-kubernetes",
            "interface": "eth0",
            "ips": [
              "10.129.2.39"
            ],
            "mac": "0a:58:0a:81:02:27",
            "default": true,
            "dns": {}
          },
          {
            "name": "my-vms/l2-network",   
    1
    
            "interface": "podc0f69e19ba2", 
    2
    
            "ips": [                       
    3
    
              "10.10.10.15"
            ],
            "mac": "02:fb:f8:00:00:12",    
    4
    
            "dns": {}
          }]
      name: virt-launcher-fedora-aqua-fowl-13-zr2x9
      namespace: my-vms
    spec:
    #  ...
    status:
    #  ...
    Copy to Clipboard Toggle word wrap
    1
    2
    3
    4
  2. apiVersion: flows.netobserv.io/v1beta2
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      agent:
        ebpf:
          privileged: true \ 
    1
    
      processor:
        advanced:
          secondaryNetworks:
          - index: \ 
    2
    
            - MAC  \ 
    3
    
            name: my-vms/l2-network \ 
    4
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    2
    3
    4

12장.

12.1.

12.1.1.

중요

12.1.2.

참고

  1. $ curl -LO https://mirror.openshift.com/pub/cgw/netobserv/latest/oc-netobserv-amd64
    Copy to Clipboard Toggle word wrap
  2. $ chmod +x ./oc-netobserv-amd64
    Copy to Clipboard Toggle word wrap
  3. $ sudo mv ./oc-netobserv-amd64 /usr/local/bin/oc-netobserv
    Copy to Clipboard Toggle word wrap

  • $ oc netobserv version
    Copy to Clipboard Toggle word wrap

    Netobserv CLI version <version>
    Copy to Clipboard Toggle word wrap

12.2.

12.2.1.

  1. $ oc netobserv flows --enable_filter=true --action=Accept --cidr=0.0.0.0/0 --protocol=TCP --port=49051
    Copy to Clipboard Toggle word wrap
  2. live table filter: [SrcK8S_Zone:us-west-1b] press enter to match multiple regular expressions at once
    Copy to Clipboard Toggle word wrap
  3. {
      "AgentIP": "10.0.1.76",
      "Bytes": 561,
      "DnsErrno": 0,
      "Dscp": 20,
      "DstAddr": "f904:ece9:ba63:6ac7:8018:1e5:7130:0",
      "DstMac": "0A:58:0A:80:00:37",
      "DstPort": 9999,
      "Duplicate": false,
      "Etype": 2048,
      "Flags": 16,
      "FlowDirection": 0,
      "IfDirection": 0,
      "Interface": "ens5",
      "K8S_FlowLayer": "infra",
      "Packets": 1,
      "Proto": 6,
      "SrcAddr": "3e06:6c10:6440:2:a80:37:b756:270f",
      "SrcMac": "0A:58:0A:80:00:01",
      "SrcPort": 46934,
      "TimeFlowEndMs": 1709741962111,
      "TimeFlowRttNs": 121000,
      "TimeFlowStartMs": 1709741962111,
      "TimeReceived": 1709741964
    }
    Copy to Clipboard Toggle word wrap

    1. $ sqlite3 ./output/flow/<capture_date_time>.db
      Copy to Clipboard Toggle word wrap
    2. sqlite> SELECT DnsLatencyMs, DnsFlagsResponseCode, DnsId, DstAddr, DstPort, Interface, Proto, SrcAddr, SrcPort, Bytes, Packets FROM flow WHERE DnsLatencyMs >10 LIMIT 10;
      Copy to Clipboard Toggle word wrap

      12|NoError|58747|10.128.0.63|57856||17|172.30.0.10|53|284|1
      11|NoError|20486|10.128.0.52|56575||17|169.254.169.254|53|225|1
      11|NoError|59544|10.128.0.103|51089||17|172.30.0.10|53|307|1
      13|NoError|32519|10.128.0.52|55241||17|169.254.169.254|53|254|1
      12|NoError|32519|10.0.0.3|55241||17|169.254.169.254|53|254|1
      15|NoError|57673|10.128.0.19|59051||17|172.30.0.10|53|313|1
      13|NoError|35652|10.0.0.3|46532||17|169.254.169.254|53|183|1
      32|NoError|37326|10.0.0.3|52718||17|169.254.169.254|53|169|1
      14|NoError|14530|10.0.0.3|58203||17|169.254.169.254|53|246|1
      15|NoError|40548|10.0.0.3|45933||17|169.254.169.254|53|174|1
      Copy to Clipboard Toggle word wrap

12.2.2.

  1. $ oc netobserv packets --action=Accept --cidr=0.0.0.0/0 --protocol=TCP --port=49051
    Copy to Clipboard Toggle word wrap
  2. live table filter: [SrcK8S_Zone:us-west-1b] press enter to match multiple regular expressions at once
    Copy to Clipboard Toggle word wrap

12.2.3.

  1. $ oc netobserv metrics --enable_filter=true --cidr=0.0.0.0/0 --protocol=TCP --port=49051
    Copy to Clipboard Toggle word wrap

  2. https://console-openshift-console.apps.rosa...openshiftapps.com/monitoring/dashboards/netobserv-cli
    Copy to Clipboard Toggle word wrap

    참고

12.2.4.

  • $ oc netobserv cleanup
    Copy to Clipboard Toggle word wrap

12.3.

12.3.1.

12.3.1.1.

$ oc netobserv [<command>] [<feature_option>] [<command_options>] 
1
Copy to Clipboard Toggle word wrap

1
12.3.1.2.
Expand
표 12.1.
  

12.3.1.3.

$ oc netobserv flows [<feature_option>] [<command_options>]
Copy to Clipboard Toggle word wrap

Expand
   

$ oc netobserv flows --enable_pkt_drop  --enable_rtt --action=Accept --cidr=0.0.0.0/0 --protocol=TCP --port=49051
Copy to Clipboard Toggle word wrap

12.3.1.4.

$ oc netobserv packets [<option>]
Copy to Clipboard Toggle word wrap

Expand
   

$ oc netobserv packets --action=Accept --cidr=0.0.0.0/0 --protocol=TCP --port=49051
Copy to Clipboard Toggle word wrap

12.3.1.5.

$ oc netobserv metrics [<option>]
Copy to Clipboard Toggle word wrap

Expand
   

$ oc netobserv metrics --enable_pkt_drop --protocol=TCP
Copy to Clipboard Toggle word wrap

13장.

13.1.

Expand
   

13.1.1.

13.1.2.

Expand
   

13.1.3.

Expand
   

13.1.4.

Expand
   

13.1.5.

Expand
   

13.1.6.

Expand
   

13.1.7.

13.1.8.

13.1.9.

Expand
   

13.1.10.

13.1.11.

Expand
   

13.1.12.

Expand
   

13.1.13.

Expand
   

13.1.14.

Expand
   

13.1.15.

Expand
   

13.1.16.

Expand
   

13.1.17.

Expand
   

13.1.18.

Expand
   

13.1.19.

Expand
   

13.1.20.

Expand
   

13.1.21.

13.1.22.

13.1.23.

13.1.24.

Expand
   

13.1.25.

13.1.26.

Expand
   

13.1.27.

Expand
   

13.1.28.

13.1.29.

Expand
   

13.1.30.

Expand
   

13.1.31.

Expand
   

13.1.32.

Expand
   

13.1.33.

Expand
   

13.1.34.

Expand
   

13.1.35.

Expand
   

13.1.36.

Expand
   

13.1.37.

Expand
   

13.1.38.

Expand
   

13.1.39.

13.1.40.

Expand
   

 

 

 

13.1.41.

Expand
   

13.1.42.

Expand
   

13.1.43.

Expand
   

13.1.44.

Expand
   

13.1.45.

Expand
   

13.1.46.

Expand
   

13.1.47.

Expand
   

13.1.48.

Expand
   

13.1.49.

Expand
   

13.1.50.

Expand
   

13.1.51.

Expand
   

13.1.52.

Expand
   

13.1.53.

Expand
   

13.1.54.

Expand
   

13.1.55.

Expand
   

13.1.56.

Expand
   

13.1.57.

Expand
   

13.1.58.

Expand
   

13.1.59.

Expand
   

13.1.60.

Expand
   

13.1.61.

Expand
   

13.1.62.

Expand
   

13.1.63.

Expand
   

13.1.64.

Expand
   

13.1.65.

Expand
   

13.1.66.

Expand
   

13.1.67.

Expand
   

13.1.68.

Expand
   

13.1.69.

Expand
   

13.1.70.

Expand
   

13.1.71.

Expand
   

13.1.72.

Expand
   

13.1.73.

Expand
   

13.1.74.

Expand
   

13.1.75.

13.1.76.

13.1.77.

13.1.78.

Expand
   

13.1.79.

Expand
   

13.1.80.

13.1.81.

Expand
   

13.1.82.

13.1.83.

Expand
   

13.1.84.

13.1.85.

Expand
   

13.1.86.

Expand
   

13.1.87.

Expand
   

13.1.88.

Expand
   

13.1.89.

Expand
   

13.1.90.

Expand
   

13.1.91.

Expand
   

13.1.92.

13.1.93.

Expand
   

13.1.94.

Expand
   

13.1.95.

Expand
   

13.1.96.

Expand
   

13.1.97.

Expand
   

13.1.98.

Expand
   

13.1.99.

Expand
   

14장.

14.1.

Expand
   

14.1.1.

14.1.2.

Expand
   

14.1.3.

14.1.4.

Expand
   

14.1.5.

14.1.6.

Expand
   

14.1.7.

14.1.8.

Expand
   

15장.

15.1.

Expand
       

16장.

16.1.

  1. $ oc adm must-gather
     --image-stream=openshift/must-gather \
     --image=quay.io/netobserv/must-gather
    Copy to Clipboard Toggle word wrap

16.2.

  1. $ oc -n netobserv get flowcollector cluster -o yaml
    Copy to Clipboard Toggle word wrap

    apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      consolePlugin:
        register: false
    Copy to Clipboard Toggle word wrap

  2. $ oc edit console.operator.openshift.io cluster
    Copy to Clipboard Toggle word wrap

    ...
    spec:
      plugins:
      - netobserv-plugin
    ...
    Copy to Clipboard Toggle word wrap

  3. $ oc -n netobserv edit flowcollector cluster -o yaml
    Copy to Clipboard Toggle word wrap

    apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      consolePlugin:
        register: true
    Copy to Clipboard Toggle word wrap

  4. $ oc get pods -n openshift-console -l app=console
    Copy to Clipboard Toggle word wrap
  5. $ oc delete pods -n openshift-console -l app=console
    Copy to Clipboard Toggle word wrap
  6. $ oc get pods -n netobserv -l app=netobserv-plugin
    Copy to Clipboard Toggle word wrap

    NAME                                READY   STATUS    RESTARTS   AGE
    netobserv-plugin-68c7bbb9bb-b69q6   1/1     Running   0          21s
    Copy to Clipboard Toggle word wrap

  7. $ oc logs -n netobserv -l app=netobserv-plugin
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap

16.3.

  1. $ oc delete pods -n netobserv -l app=flowlogs-pipeline-transformer
    Copy to Clipboard Toggle word wrap

16.4.

  1. $ oc edit -n netobserv flowcollector.yaml -o yaml
    Copy to Clipboard Toggle word wrap

    apiVersion: flows.netobserv.io/v1alpha1
    kind: FlowCollector
    metadata:
      name: cluster
    spec:
      agent:
        type: EBPF
        ebpf:
          interfaces: [ 'br-int', 'br-ex' ] 
    1
    Copy to Clipboard Toggle word wrap

    1

16.5.

    1. $ oc edit subscription netobserv-operator -n openshift-netobserv-operator
      Copy to Clipboard Toggle word wrap
  1. 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
    Copy to Clipboard Toggle word wrap
    1
    2

16.6.

참고

  • $ oc exec deployment/netobserv-plugin -n netobserv -- curl -G -s -H 'X-Scope-OrgID:network' -H 'Authorization: Bearer <api_token>' -k https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network/loki/api/v1/labels | jq
    Copy to Clipboard Toggle word wrap
  • $ oc exec deployment/netobserv-plugin -n netobserv -- curl -G -s -H 'X-Scope-OrgID:network' -H 'Authorization: Bearer <api_token>' -k https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network/loki/api/v1/query --data-urlencode 'query={SrcK8S_Namespace="my-namespace"}' | jq
    Copy to Clipboard Toggle word wrap

16.7.

16.8.

16.9.

16.10.

  1. 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
    Copy to Clipboard Toggle word wrap
    1
    2

16.11.

Legal Notice

Copyright © 2025 Red Hat

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.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat