8.6. FlowMetric API를 사용하여 사용자 정의 메트릭 구성
flowlogs 데이터 필드를 Prometheus 라벨로 사용하여 사용자 정의 지표를 생성하도록 FlowMetric
API를 구성할 수 있습니다. 프로젝트에 여러 FlowMetric
리소스를 추가하여 여러 대시보드 뷰를 볼 수 있습니다.
프로세스
-
웹 콘솔에서 Operators
설치된 Operators 로 이동합니다. - NetObserv Operator 의 제공된 API 제목에서 FlowMetric 을 선택합니다.
- Project: 드롭다운 목록에서 Network Observability Operator 인스턴스의 프로젝트를 선택합니다.
- FlowMetric 만들기를 클릭합니다.
다음 샘플 구성과 유사하게
FlowMetric
리소스를 구성합니다.예 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
- 1
FlowMetric
리소스는 기본적으로netobserv
인FlowCollector
spec.namespace
에 정의된 네임스페이스에 생성해야 합니다.- 2
- 웹 콘솔에
netobserv-<metricName> 접두사가 표시되는 Prometheus 지표의 이름입니다
. - 3
유형은
메트릭 유형을 지정합니다. Cryostat
유형은
바이트 또는 패킷을 계산하는 데 유용합니다.- 4
- 캡처할 트래픽 방향입니다. 지정하지 않으면 수신 및 송신이 모두 캡처되므로 중복될 수 있습니다.
- 5
- 레이블은 지표의 모양과 다른 엔티티 간의 관계를 정의하고 메트릭 카디널리티도 정의합니다. 예를 들어
SrcK8S_Name
은 높은 Cardinality 메트릭입니다. - 6
- 나열된 기준에 따라 결과를 구체화합니다. 이 예에서는 클러스터 외부 트래픽만 선택하면
SrcSubnetLabel
이 없는 흐름만 일치하여 수행됩니다. 이는 기본적으로 서브넷 레이블 기능이 (spec.processor.subnetLabels
을 통해) 활성화되어 있다고 가정합니다.
검증
-
Pod가 새로 고쳐지면 모니터링
메트릭 으로 이동합니다. -
Expression 필드에 해당 결과를 볼 메트릭 이름을 입력합니다.
(DstK8S_HostName, DstK8S_OwnerName, DstK8S_OwnerName, DstK8S_OwnerName, DstK8S_OwnerName)를 통해 topk(5, sum(netobserv_cluster_external_ingress_bytes_total{DstK8S_Namespace="my-namespace"}[2m])
와 같은 표현식을 입력할 수도 있습니다.
예 8.2. 클러스터 외부 수신 트래픽의 RTT 대기 시간 표시
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
- 1
FlowMetric
리소스는 기본적으로netobserv
인FlowCollector
spec.namespace
에 정의된 네임스페이스에 생성해야 합니다.- 2
유형은
메트릭 유형을 지정합니다.histogram
시간 값 (유형은
대기TimeFlowRttNs
)에 유용합니다.- 3
- RTT(Round-trip Time)는 흐름에서 나노로 제공되기 때문에 Prometheus 지침의 표준인 10억의 분할기를 사용하여 초 단위로 변환합니다.
- 4
- 사용자 지정 버킷은 RTT에 대한 정확도를 지정하고 5ms와 250ms 사이에 최적의 정확성을 지정합니다.
검증
-
Pod가 새로 고쳐지면 모니터링
메트릭 으로 이동합니다. - Expression 필드에서 메트릭 이름을 입력하여 해당 결과를 볼 수 있습니다.
중요
높은 카디널리티는 Prometheus의 메모리 사용량에 영향을 미칠 수 있습니다. 네트워크 흐름 형식 참조 에서 특정 레이블의 카디널리티가 높은지 확인할 수 있습니다.