Grafana Dashboard의 transform 기능 중 사용해 본 것들 정리
Merge
여러 개의 query 결과를 하나로 합치기 위한 기능

time stamp랑 label을 기준으로 합칩니다.

위의 화면처럼, 파드 정보를 하나의 테이블에서 표시하고 싶을 때,
- 어느 노드에 스케줄링 됐는지 ( kube_pod_info )
- cpu 사용량 ( container_cpu_usage_seconds_total )
- memory 사용량 ( container_memory_working_set_bytes )
이런 식으로 여러 개의 metric을 query한 다음
merge 를 이용해서 pod 이름을 기준으로 정렬 됩니다.
무엇을 기준으로 정렬되는지는 따로 설정하는 것은 없고, merge 를 하게 되면 자동으로 겹쳐지는 label을 기준으로 데이터가 합쳐집니다.
위의 metric을 보면, container 단위로 데이터가 나오는 것들이 있는데,
이런 데이터를 pod 기준으로 하려면, query용 metric을 작성할 때 미리 pod 기준으로 데이터가 나오도록 세팅해줘야 합니다.
즉, container_memory_working_set_bytes 이렇게 쓰면 container 기준으로 merge 를 수행하려고 하니까, sum(container_memory_working_set_bytes{container!="", pod!=""})by(pod) 이런 식으로 pod 기준으로 데이터가 나오도록 가공해야 합니다.
Labels to fields
Metric을 조회했을 때 나오는 데이터에는 label들이 있고 데이터 값이 있는데,
특정 label의 값들을 table에서 field로 사용하고 싶을 때 쓰는 기능

제가 이 기능을 활요한 부분은 pod가 node에 골고루 scheduling 되었는지 확인할 때,
각 pod가 어떤 node에 scheduling 되었는지를 표시하는 목적으로 사용했습니다.

Labels to fields 를 활성화 한 다음 Columns 를 선택하고,
밑에 Labels 에서 선택하는 내용들은 table에서 field로 사용할 label들입니다.
그리고 맨 마지막에 Value field name 을 node_ip 로 선택했기 때문에, table의 field를 보면 제가 구성한 cluster의 node ip 값들이 들어가 있습니다.
Organize fields
Query 결과 데이터의 label 이름을 바꾸거나, 순서를 바꾸는 기능
Query 결과의 데이터에 label이 많을 때, 주로 사용합니다. (table type에서 많이 사용)
이 기능은 전체적으로 빠르게 모든 field들을 수정하고 순서를 바꿀 수 있습니다.
적은 숫자의 field 이름을 바꾸거나, table에서 숨길 때에는 transform이 아닌 panel setting에서 override를 생성하여 적용할 수도 있습니다.

'Monitoring' 카테고리의 다른 글
Prometheus에 argoCD metric 연동하기 (0) | 2023.09.04 |
---|---|
Metric Join (0) | 2023.09.04 |
LGTM 특장점 (0) | 2023.09.04 |
Prometheus alertmanager (0) | 2023.08.31 |
Prometheus를 push 방식으로 쓰기 (0) | 2023.08.31 |