Kubernetes Monitoring - Metrics exporter
시작하기 전에
네이버 클라우드 플랫폼의 Kubernetes Service는 Kubelet
으로 부터 리소스의 메트릭을 수집하고, 이를 Kubernete Apiserver
에
노출하는 Metrics Server
를 내장하고 있습니다. 해당 플랫폼에 대한 정보는 아래의 링크에서 확인할 수 있습니다.
Metrics Server
로 부터는 일정기간의 평균 CPU 사용량과 순간 메모리 사용량을 조회할 수 있으며, 과거 시간대의 사용량은 조회가 불가능합니다.
따라서 과거 데이터를 조회하기 위해서는, 일정 주기마다 리소스 사용량을 저장하는 것이 필요합니다.
네이버 클라우드 플랫폼의 쿠버네티스는 일정 주기마다 Metrics Server
의 데이터를 Cloud Insight
로 전송하는 Metric Exporter를 제공합니다.
수집된 데이터는 Cloud Insight
대시 보드 혹은 Grafana
를 통해 시각화되며, 사용자는 이를 통해 리스소 사용량 추이를 손쉽게 확인할 수 있습니다.
제약 사항
- Kubernetes Service(VPC) 전용으로 제공됩니다.
- 일부 지표에 대해서는, 상세 모니터링 신청이 필요합니다. 자세한 사항은 Cloud Insight 가이드를 참고하세요.
이용 요금
Cloud Insight에서 발생하는 이용 요금을 따릅니다.
필요값
Metrics Exporter
및 Grafana
를 이용하기 위해선 아래의 값이 필요합니다.
- 인증키
- Agent가 네이버 클라우드 플랫폼의 Cloud Insight와 연동하고, 서버 정보를 획득할 수 있도록 인증키(Auth Key)를 입력해야합니다.
- 인증키는 포털 > 마이페이지 > 인증키 관리에서 생성 및 조회할 수 있습니다.
- Sub Account 계정의 경우 아래의 권한이 요구됩니다
- Server - getServerInstanceList, getServerInstanceDetail
- Cloud Insight - All(Full)
- NRN
- Kubernetes Service에서 생성한 클러스터의 NRN을 입력해야합니다.
- Resource Manager의 Resource에서 NRN을 조회할 수 있습니다.
- 상품(Product) 항목을
Kubernetes Service(VPC)
을 선택하고, Resource Type으로Cluster
를 조회합니다. - 조회된 결과값을 클릭하여, NRN을 획득합니다.
Metrics Exporter
요약
네이버 클라우드 플랫폼의 Kubernetes Service에서 생성한 클러스터에 Metrics Server
로 부터 리소스 사용량을 수집하기 위한,
Agent를 배포하는것이 필요합니다. 이 Agent은 일정주기마다 Metrics Server
로 부터, Pod의 리소스 사용량을 수집하여, Cloud Insight로 전송합니다.
배포
Metrics Exporter
에서 사용할 설정값을 Kubernetes의 Configmap으로 만듭니다.
아래의 파일을 nks-insight-cm.yml
로 저장합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: nks-metrics-exporter
data:
baseurl: https://cw.apigw.ntruss.com
basepath: /cw_collector/real/data
dmn_cd: PUB
prodkey: "526115048926613504"
nrn: nrn:PUB:VPCKubernetesService:KR:NUM:Cluster/cluster-id-fix-me
accesskey: 2M1ACCESSKEYFIXME63rX7
secretkey: z3feSECRETKEYFIXMEhR6mTyl
ignore_namespaces: kube-system
저장한 내용을 수정합니다.
- nrn: Resource Manager 상품에서 획득한 Kubernetes Service(VPC) 클러스터의 nrn을 입력합니다.
- accesskey: 인증키에서 획득한 Access Key를 입력합니다.
- secretkey: 인증키에서 획득한 Secret Key를 입력합니다.
- ignore_namespaces: 특정 네임스페이스내 pod의 자원사용량을 집계하지 않으려면, 해당 필드에 네임스페이스 이름을 입력합니다. 복수의 값 입력이 필요시
,
콤마로 분리하여 기술할 수 있습니다.
수정 후 다음 명령어를 이용하여, Kubernetes Service 클러스터에 설정파일을 배포합니다.
kubectl --kubeconfig $KUBE_CONFIG apply -f ./nks-insight-cm.yml
Kubernetes Service에서 생성한 클러스터에 아래의 파일을 이용하여, Metrics Exporter
를 배포합니다.
kubectl --kubeconfig $KUBE_CONFIG apply -f https://nks.apigw.ntruss.com/static/v1/metrics-exporter/latest/nks-pub-real-insight.yml
아래의 명령어로 네임스페이스내 배포된 파드를 확인합니다.
kubectl --kubeconfig $KUBE_CONFIG get pod
NAME READY STATUS RESTARTS AGE
nks-metrics-exporter-96687bdc-6kqlx 1/1 Running 0 128m
Grafana
요약
Grafana는 시계열 데이터에 대한 시각화를 제공해주는 도구입니다.
앞서 Metrics Exporter
가 Cloud Insight로 전송한 데이터를 Grafana 대시보드에서 확인할 수 있습니다.
배포
아래의 명령어를 이용하여, Grafana
를 배포합니다.
kubectl --kubeconfig $KUBE_CONFIG apply -f https://nks.apigw.ntruss.com/static/v1/metrics-exporter/latest/nks-insight-real-grafana.yml
아래 명령어로 Grafana
대시보드에 접속하기 위한, 초기 비밀번호를 획득합니다.
kubectl --kubeconfig $KUBE_CONFIG get secret grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
대시보드 접속
배포한 Grafana
의 Pod가 Running
상태가되면, 아래의 명령어를 통해 대시보드에 접속합니다.
로컬 피시에서 다음의 명령어를 입력합니다.
kubectl --kubeconfig $KUBE_CONFIG port-forward svc/grafana 3000:80
위 명령어 수행 후, 로컬 피시의 웹 브라우저에서 http://localhost:3000 주소로 이동하여, Grafana
대시보드에 접속할 수 있습니다.
초기 아이디와 비밀번호는 다음과 같습니다.
- 아이디:
admin
- 비밀번호: 위 배포절에서 획득한, 초기 비밀번호를 입력
Server Admin
메뉴에서 아이디와 비밀번호를 변경하여 사용하시는것을 권장합니다.
대시보드 설정
아래의 절차를 통해, Cloud Insight에 저장된 Metrics Server의 데이터를 시각화할 수 있습니다.
① Data Source 추가
Configuration > Data Sources를 선택합니다.
② Add Data Source를 선택합니다.
③ 하단의 naver-cloud-insight-k8s를 선택합니다.
④ Settings에서 다음과 같이 입력합니다.
- domainCode: PUB
- regionCode: KR
- NRN: Kubernetes Service(VPC)의 nrn입력
- AccessKey, SecretKey: 인증키 입력
입력 후 Save & Test
를 클릭합니다.
⑤ 대시보드를 불러오기 위해, Create 탭의 Import를 선택합니다.
⑥ 아래 링크의 json 데이터를 다운로드 합니다. 파일의 내용을 복사하여 Import via panel json
에 붙여 넣습니다.
Load
를 클릭하여, 대시보드를 추가합니다.
⑦ 대시보드 내용을 확인합니다.
데이터 수집 후, 일정 시간 지난 후 데이터를 확인할 수 있습니다.