RAN CN 테스트베드 구축/Free5GC on K8s (Core)

Free5GC의 metric을 한 눈에 보는 Grafana 대시보드 만들기

gksyb4235 2026. 1. 7. 15:30

1. 대시보드 생성 및 카테고리 추가


그라파나에 접속을 해서, Dashboard로 가보면, 여러 기본 Dashboard들이 있다.

여기서 Free5GC용 대시보드를 하나 만들건데, 이 대시보드에서 New를 눌러서 New folder를 하나 만든다

새 폴더 생성 (Home > Dashboards > New folder > [Free5GC] 입력 후 생성)

 

 

Dashboard 생성 및 카테고리(Row) 추가 (+Create dashboard > [Add] > Row 클릭)

그 다음 카테고리를 만들 건데, Create Dashboard를 하고, Add를 눌러서 Row를 추가한다.

- 항목 : Free5GC (아래 그림에서는 Resource & Pod Status)

 

 

그리고 Dashboard를 한 번 저장을 해본다.

 

 

 

 

2. 다른 Grafana Dashboard 참조해서 활용하기


 

Grafana Dashboard를 만들기 편한 이유는 외부 Dashboard의 항목을 가져다 쓸 수 있기 때문이다.

Dashboard에서 Ctrl + F“Kubernetes / Compute Resources / Multi-Cluster” 검색.

 

 

이 대시보드를 그대로 복사해서 사용할 수 있다.

 

 

이런 Default 대시보드 외에도, Grafana Dashboard 사이트에서 다양한 멋진 대시보드를 볼 수 있다. (복사 가능)

 

 

필요한 대시보드가 모두 모아졌다면 이를 조합해서 나만의 대시보드를 만들 차례이다.

기본적으로 Resource와 Pod의 상태를 모니터링하는 대시보드를 만드는 법은 아래와 같다.

 

우선, Request CPU를 만들어볼건데, 이 대시보드에서 Resource Kubernetes / Compute Resources / Multi-Cluster에서 CPU RequestsCPU LimitsMtrics를 가져올 것이다.

 

 

여기서 Copy / Paste 기능을 통해 나만의 대시보드의 다른 대시보드의 항목들을 붙여넣기 할 수 있다.

 

그러나 이 상태에서는 값이 나오지 않는데, 이는 현재 Prometheus로 이렇게 전역 변수가 있는데, 내 대시보드에는 전역변수가 설정이 되어 있지 않기 때문이다.

 

 

오른쪽의 Settings의 Variables 탭에 들어가 Datasource를 눌러 변수 Type, 변수로 지정할 이름과 라벨을 지정할 수 있다.

나의 데이터 소스는 Prometheus이므로, Prometheus로 설정한다.

 

 

이 작업을 다른 항목들에도 똑같이 적용을 하면 항목이 똑같이 조회됨을 확인할 수 있다.

 

 

sum(kube_pod_container_resource_requests{job="kube-state-metrics", resource="cpu"}) by (node) / sum(kube_node_status_allocatable{job="kube-state-metrics", resource="cpu"}) by (node)

위 명령어에서 Node별로 조회하기 위해 PromQL 명령어에 by(node)를 추가해주면, 노드별 CPU 사용량을 모니터링할 수 있다.

 

 

kube_pod_container_resource_requests에는 어떤 라벨들이 있고, 그 라벨마다 어떤 값이 있는지 이 화면에서 알고 싶으면 여기 metric browser를 누르면 세부 창이 나온다.

여기 metric을 넣고 클릭을 하면 어떤 label들이 있는지,  label에는 어떤 값들이 나오는지를 확인을 할 수 있다.

 

그리고 아래에 Options이 있는데, Legend에 여기 나오는 naming들이 label의 이름과 value가 모두 표시가 되도록 설정이 되어 있는 것이다. Custom을 해서 이렇게 node로 변경하면 깔끔하게 node 이름만 표시가 되도록 할 수 있다.

 

 

 

 

3. Node Status 모니터링 만들기


다음으로 노드의 상태를 모니터링할 건데, Container Status를 가져와서 Metricnode 부분을 삭제하고 by를 넣어서 conditionnode 별로 grouping한다legend에도 conditionnode를 추가하면 된다. 그리고 앞에 물결을 넣고 장애 값을 모두 넣어준다. 그럼 장애별로 어떤 노드에 문제가 있는지를 볼 수 있다.

 

ConditionReady인 경우 status=“false”여야지 장애 상황이기 때문에 이걸 복사해서 새로운 query로 만들어준다.

legendNotReady를 하드코딩한 내용으로 추가를 해준다.

 

그리고 Title만 변경을 해주면 Node의 장애 상태를 Monitoring할 수 있는 화면이 만들어진다.

 

 

다음으로 CPU와 메모리가 있는데, 이건 Node Exporter 대시보드에서 metric을 가져온다. 여기에도 다양한 대시보드가 많다.

이 값을 가져와 PromQL을 변경해서 나의 대시보드에 활용할 수 있다.

 

노드별 CPU 사용량을 조회해보면 아래와 같다.

 

메모리까지 추가하면 Node별로 현재 실시간으로 CPU와 메모리를 얼마나 쓰고 있는지 모니터링하는 화면이 만들 수 있다.

 

 

 

 

4. Free5GC Pod 모니터링 만들기


이제 본격적으로 Pod의 수치를 Tuning하기 위한 모니터링 화면을 만들 것이다.

먼저 이 Application Pod 카테고리에 넣을 서비스를 배포해야 하는데, 우리는 이미 Kubernetes 기반의 Service를 사용하고 있다.

 

 

그런 다음 Namespace 별로 Pod의 개수를 표시할 화면을 만들건데, Number of Nodes를 복붙하고,

이름을 Pod Count로 변경한다. 여기 metricpod_info인데, namespace를 딱 지정을 하면 된다.

그럼 이 free5gc라는 Namespace에는 Pod 12개가 있음을 확인할 수 있다.

 

 

그 다음으로 Pod별 CPU를 확인할 PromQL 명령어를 입력해야 한다.

Kubernetes / Compute Resources / Pod의 대시보드에서 CPU Usage metric을 가져온다.

 metric Pod가 사용하고 있는 실제 CPU 사용률이다.

여기 이 사용률을 가져와서 requests로 나눠준다. 그 다음 앞의 변수들은 모두 삭제를 해준다. 

정리를 하면 아래와 같이 된다.

 

그래서 조회를 해보면 containerpod의 사용률이 조회가 된다.

메모리도 위에서 한 것과 같이 똑같이 수행한다.

 

마지막으로 Traffic 수치를 볼 건데, 이건 Kubernetes / Networking / Pod Dashboard에서 가져온다. 여기 Chart들이 많은데,

이것이 Pod가 받은 패킷 수이다.

 

이 Metric을 가져오기 위해 Chart를 복사하고, PromQL에 namespace인 'free5gc'를 추가한다.

 

위 과정을 모두 끝내면 모든 free5gc의 Pod에 대한 CPU, 메모리, 트래픽과 관련된 리소스 모니터링이 완성된다.