본문으로 건너뛰기

kube-apiserver 메트릭스 조회

홈 화면 > 클러스터 프로젝트 선택 > 클러스터 > kube-apiserver 메트릭스 조회

노트

요구 사항

  • 와탭 쿠버네티스 에이전트 1.5.6 버전 이상이 필요합니다.

  • 쿠버네티스 클러스터 프로젝트(CP)일 경우 해당 메뉴를 조회할 수 있습니다.

kube-apiserver는 컨트롤 플레인(Control Plane) 내/외부 요청을 처리하는 컴포넌트입니다. kube-apiserver 메트릭스 조회 메뉴를 통해 kube-apiserver에서 수집되는 지표의 원본 데이터 정합성(Data Consistency)을 확인할 수 있습니다.

기본 화면 안내

kube-apiserver 메트릭스 조회

kube-apiserver 메트릭스 조회 메뉴는 kube-apiserver 대상으로 수집한 모니터링 원본 데이터를 카테고리별로 조회하는 기능을 제공합니다. 최근 5분 동안 수집한 데이터가 1분 간격으로 반영됩니다.

  • 상단 왼쪽 시간 선택자를 통해 과거 특정 시점의 데이터를 조회할 수 있습니다. 과거 데이터 조회 시 원하는 옵션 선택 후 돋보기 아이콘 검색 아이콘을 클릭하세요.

  • 조회할 최대 개수를 설정할 수 있습니다.

  • 메트릭스를 필터링해 원본 데이터를 필요에 따라 가공할 수 있습니다.

  • 상단 오른쪽 다운로드 아이콘을 선택해 원하는 데이터를 CSV 형식의 파일로 다운로드할 수 있습니다.

필터

필터 옵션 활용 시 원하는 을 선택해 조회할 수 있습니다. and 조건을 통해 여러 개의 필터를 적용할 수 있습니다.

  1. 필터 아이콘 필터 입력 창에서 필터 더하기 아이콘 더하기 아이콘 선택 시 다음과 같이 필터 추가하기 창이 나타납니다.

    필터 추가

    • 필터 키조건을 선택하세요.

    • 조건에 맞는 값을 선택하세요.

  2. 필터 설정 후 적용 버튼을 선택해 해당 필터를 적용하세요.

  3. 여러 개의 필터를 추가하려면 필터 입력 창 또는 필터 추가하기 창에서 필터 더하기 아이콘 더하기 아이콘을 선택하세요.

kube-apiserver 모니터링 활성화

와탭 쿠버네티스 에이전트 설치 시 다운로드한 yaml 파일을 다음 안내에 따라 수정해 kube-apiserver 모니터링을 활성화하세요.

  1. whatap-master-agent deployment의 spec 하위에 kube-apiserver 모니터링을 위한 에이전트 컨테이너 spec을 추가하세요.

    containers:
    - name: whatap-control-plane-helper
    image: whatap/kube_mon
    imagePullPolicy: Always
    ports:
    - containerPort: 9496
    command: ["/data/agent/master/whatap_control_plane_helper"]
    args: ["-collect_control_plane_monitoring_enabled=true"]

    다음 예시를 참조하세요.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: whatap-master-agent
    namespace: whatap-monitoring
    spec:
    replicas: 1
    selector:
    matchLabels:
    name: whatap-master-agent
    template:
    metadata:
    labels:
    name: whatap-master-agent
    spec:
    containers:
    - name: whatap-control-plane-helper
    image: whatap/kube_mon
    imagePullPolicy: Always
    ports:
    - containerPort: 9496
    command: ["/data/agent/master/whatap_control_plane_helper"]
    args: ["-collect_control_plane_monitoring_enabled=true"]
    - name: whatap-master-agent
    image: whatap/kube_mon
    imagePullPolicy: Always
    resources:
    requests:
    memory: 300Mi
    cpu: 100m
    limits:
    memory: 350Mi
    cpu: 200m
    ports:
    - containerPort: 6600
    command: ['/bin/entrypoint.sh']
    env:
    - name: WHATAP_LICENSE
    value: "xxxxxxxx-12345xxxxxx-x00e000000xxx8"
    - name: WHATAP_HOST
    value: "13.124.11.223/13.209.172.35"
    - name: WHATAP_PORT
    value: "6600"
    - name: WHATP_MEM_LIMIT
    valueFrom:
    resourceFieldRef:
    containerName: whatap-master-agent
    resource: limits.memory
    volumeMounts:
    - name: start-script-volume
    mountPath: /bin/entrypoint.sh
    readOnly: true
    subPath: entrypoint.sh
    - mountPath: /whatap_conf
    name: whatap-config-volume
    volumes:
    - name: start-script-volume
    configMap:
    defaultMode: 0700
    name: master-start-script
    - name: whatap-config-volume
    emptyDir: {}
    serviceAccount: whatap
  2. whatap-master-agent deployment의 whatap-master-agent 컨테이너 spec에서 env 설정에 다음 내용을 추가하세요.

    env:
    - name: collect_control_plane_monitoring_enabled
    value: "true"

    다음 예시를 참조하세요.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: whatap-master-agent
    namespace: whatap-monitoring
    spec:
    replicas: 1
    selector:
    matchLabels:
    name: whatap-master-agent
    template:
    metadata:
    labels:
    name: whatap-master-agent
    spec:
    containers:
    - name: whatap-control-plane-helper
    image: whatap/kube_mon
    imagePullPolicy: Always
    ports:
    - containerPort: 9496
    command: ["/data/agent/master/whatap_control_plane_helper"]
    args: ["-collect_control_plane_monitoring_enabled=true"]
    - name: whatap-master-agent
    image: whatap/kube_mon
    imagePullPolicy: Always
    resources:
    requests:
    memory: 300Mi
    cpu: 100m
    limits:
    memory: 350Mi
    cpu: 200m
    ports:
    - containerPort: 6600
    command: ['/bin/entrypoint.sh']
    env:
    - name: collect_control_plane_monitoring_enabled
    value: "true"
    - name: WHATAP_LICENSE
    value: "xxxxxxxx-12345xxxxxx-x00e000000xxx8"
    - name: WHATAP_HOST
    value: "13.124.11.223/13.209.172.35"
    - name: WHATAP_PORT
    value: "6600"
    - name: WHATP_MEM_LIMIT
    valueFrom:
    resourceFieldRef:
    containerName: whatap-master-agent
    resource: limits.memory
    volumeMounts:
    - name: start-script-volume
    mountPath: /bin/entrypoint.sh
    readOnly: true
    subPath: entrypoint.sh
    - mountPath: /whatap_conf
    name: whatap-config-volume
    volumes:
    - name: start-script-volume
    configMap:
    defaultMode: 0700
    name: master-start-script
    - name: whatap-config-volume
    emptyDir: {}
    serviceAccount: whatap
  3. 컨트롤 플레인 모니터링 성능 지표를 수집하기 위해 whatap ClusterRole에 다음의 권한을 추가하세요.

    rules:
    - nonResourceURLs: ["/metrics"]
    verbs: ["*"]

    다음 예시를 참조하세요.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
    annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
    name: whatap
    namespace: whatap-monitoring
    rules:
    - apiGroups: ["*"]
    resources: ["namespaces", "pods", "pods/log", "configmaps","services", "endpoints","daemonsets","ingresses","deployments","nodes","persistentvolumes","persistentvolumeclaims", "events", "replicasets", "roles", "rolebindings", "clusterroles", "clusterrolebindings", "jobs", "cronjobs", "statefulsets", "serviceaccounts", "configmaps", "storageclasses", "horizontalpodautoscalers" ]
    verbs: ["get","list","watch"]
    - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create"]
    - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["*"]
    - nonResourceURLs: ["/metrics"]
    verbs: ["*"]
    ---
노트

kubectl apply 또는 kubectl edit 명령을 통해 kube-apiserver 모니터링을 활성화할 수도 있습니다.

kube-apiserver 메트릭

분류메트릭설명
API GET 요청분당 GET 요청 현황kube-apiserver 의 GET 요청에 대한 분당 요청 수
초당 GET 요청 수 추이kube-apiserver 의 GET 요청에 대한 초당 요청 수 추이
Resource & Subresource 별 분당 GET 요청 수 추이kube-apiserver 에 들어온 GET 요청의 Resource 와 Subresource 별 분당 요청 수 추이
API POST 요청분당 POST 요청 현황kube-apiserver 의 POST 요청에 대한 분당 요청 수
초당 POST 요청 수 추이kube-apiserver 의 POST 요청에 대한 초당 요청 수 추이
Resource & Subresource 별 POST 분당 요청 수 추이kube-apiserver 에 들어온 POST 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이
API 응답 코드별 요청[ 2xx ] 분당 응답 요청 현황kube-apiserver 요청 중 200 이상 300 미만의 응답 코드가 내려진 요청 수에 대한 분당 현황
[ 2xx ] 분당 응답 코드별 요청 수 추이kube-apiserver 요청 중 200 이상 300 미만의 응답 코드가 내려진 요청 수에 대한 응답 코드별 분당 현황
[ 2xx ] 분당 Resource & Subresource 별 요청 수 추이kube-apiserver 요청 중 200 이상 300 미만의 응답 코드가 내려진 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이
[ 3xx ] 분당 응답 요청 현황kube-apiserver 요청 중 300 이상 400 미만의 응답 코드가 내려진 요청 수에 대한 분당 현황
[ 3xx ] 분당 응답 코드별 요청 수 추이kube-apiserver 요청 중 300 이상 400 미만의 응답 코드가 내려진 요청 수에 대한 응답 코드별 분당 현황
[ 3xx ] 분당 Resource & Subresource 별 요청 수 추이kube-apiserver 요청 중 300 이상 400 미만의 응답 코드가 내려진 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이
[ 400~ ] 분당 응답 요청 현황kube-apiserver 요청 중 400 이상의 응답 코드가 내려진 요청 수에 대한 분당 현황
[ 400~ ] 분당 응답 코드별 요청 수 추이kube-apiserver 요청 중 400 이상의 응답 코드가 내려진 요청 수에 대한 응답 코드별 분당 현황
[ 400~ ] 분당 Resource & Subresource 별 요청 수 추이kube-apiserver 요청 중 400 이상의 응답 코드가 내려진 요청에 대해 Resource 와 Subresource 별로 그룹화 한 분당 요청 수 추이
Go Metrics고루틴 수현재 존재하는 고루틴 수
스레드 수현재 존재하는 OS 스레드 수
현재 실행 중인 요청 수 (1초)최근 1초 내 실행 중인 요청 수데이터 수집 시 kube-apiserver 에서 1초 내에 진행되고 있던 요청 수