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 ExporterGrafana를 이용하기 위해선 아래의 값이 필요합니다.

  • 인증키
    • 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를 클릭하여, 대시보드를 추가합니다.

⑦ 대시보드 내용을 확인합니다.

데이터 수집 후, 일정 시간 지난 후 데이터를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...