본문으로 건너뛰기

와탭 오퍼레이터 설치

이 가이드는 쿠버네티스 환경에 와탭 오퍼레이터를 설치하고, WhatapAgent CR을 설정하여 와탭 모니터링을 시작하는 방법을 설명합니다.

설치 전 확인 사항

  • 쿠버네티스 클러스터 (v1.19+)
  • Helm 3.2 이상
  • 와탭 계정 및 라이선스 키

설치 방법

다음 단계에 따라 와탭 오퍼레이터를 설치하고 WhatapAgent CR을 생성합니다.

  1. 와탭 operator를 설치합니다.

    • 에이전트를 처음 설치하는 사용자는 다음 명령어를 실행합니다.
    helm repo add whatap https://whatap.github.io/helm/
    helm repo update
    kubectl create ns whatap-monitoring
    export WHATAP_HOST=<수집서버 IP>
    export WHATAP_LICENSE=<와탭 라이센스>
    export WHATAP_PORT=<와탭 포트>
    kubectl create secret generic whatap-credentials --namespace whatap-monitoring --from-literal WHATAP_LICENSE=$WHATAP_LICENSE --from-literal WHATAP_HOST=$WHATAP_HOST --from-literal WHATAP_PORT=$WHATAP_PORT
    helm install whatap-operator whatap/whatap-operator --namespace whatap-monitoring
    • 기존 와탭 쿠버네티스 에이전트 사용자는 다음 명령어를 실행해 에이전트를 설치합니다.
    kubectl delete ns whatap-monitoring
    kubectl delete clusterrole whatap
    kubectl delete clusterrolebinding whatap
    kubectl create ns whatap-monitoring
    kubectl create secret generic whatap-credentials --namespace whatap-monitoring --from-literal license=$WHATAP_LICENSE --from-literal host=$WHATAP_HOST --from-literal port=$WHATAP_PORT
    helm install whatap-operator whatap/whatap-operator --namespace whatap-monitoring
    노트

    기존 yaml 파일 혹은 helm 방식으로 와탭 쿠버네티스 에이전트를 설치한 경우 Clean Install이 필요합니다. 기존 쿠버네티스 에이전트 삭제 후 Operator 사용을 권장합니다.

    • 오퍼레이터는 deployment로 배포됩니다. 아래의 명령어로 operator가 정상적으로 배포됐는지 확인합니다.
    kubectl get pods -n whatap-monitoring | grep -i operator
    • 명령어 실행 결과, whatap-operator 파드가 Running 상태여야 합니다.

      whatap-operator-pod

  2. WhatapAgent CR를 생성합니다.

    • 아래의 명령어로 whatapAgent 커스텀 리소스를 생성합니다.
    kubectl apply -f values.yaml
    • WhatapAgent CR은 와탭 에이전트의 배포와 구성을 정의합니다. K8s 에이전트, APM 자동 설치, 그리고 Open Agent를 통한 오픈메트릭 수집을 설정할 수 있습니다.

최소 구성

기본 Kubernetes 모니터링을 위해 Whatap 마스터 에이전트와 노드 에이전트를 활성화하는 최소 구성입니다.

values-min.yaml
apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
k8sAgent:
masterAgent:
enabled: true
nodeAgent:
enabled: true
gpuMonitoring:
enabled: false

최소 구성으로 설치하게 되면 아래와 같이 whatap-master-agent, whatap-node-agent가 추가로 설치됩니다.

whatap-master-agent, whatap-node-agent

기본 구성


apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
### APM 자동 설치 사용시 주석 해제 - APM 에이전트를 애플리케이션 Pod에 자동으로 주입하여 애플리케이션 성능 모니터링을 활성화합니다.
# apm:
# instrumentation:
# targets:
# - name: hello-world
# enabled: true
# language: "java" # 지원 언어: java, python, nodejs
# whatapApmVersions:
# java: "2.2.58" # 사용할 APM 에이전트 버전
# namespaceSelector:
# matchNames:
# - default # 모니터링할 애플리케이션이 있는 네임스페이스
# podSelector:
# matchLabels:
# app: "hello-world" # 모니터링할 애플리케이션 Pod의 라벨
# config:
# mode: default # APM 에이전트 모드 설정

### K8s 모니터링시 주석 해제 - Kubernetes 클러스터, 노드, 컨테이너 모니터링을 활성화합니다.
# k8sAgent:
# masterAgent:
# enabled: true # 마스터 에이전트 활성화 (클러스터 수준 메트릭 수집)
# nodeAgent:
# enabled: true # 노드 에이전트 활성화 (노드 및 컨테이너 수준 메트릭 수집)
### GPU 모니터링 사용 시 주석 해제 - NVIDIA GPU 메트릭 수집을 활성화합니다.
# gpuMonitoring:
# enabled: true # GPU 모니터링 활성화 (NVIDIA DCGM-EXPORTER 가 whatap-node-agent 사이드카로 설치됩니다)

### 오픈메트릭(프로메테우스 형태의 지표수집) 사용 시 주석 해제 - Prometheus 형식의 메트릭을 수집합니다.
# openAgent:
# enabled: true # OpenAgent 활성화
# targets:
# - targetName: kube-apiserver
# type: ServiceMonitor # 대상 유형: ServiceMonitor, PodMonitor, StaticEndpoints
# namespaceSelector:
# matchNames:
# - "default" # 메트릭을 수집할 네임스페이스
# selector:
# matchLabels:
# component: apiserver # 메트릭을 수집할 서비스/Pod의 라벨
# provider: kubernetes
# endpoints:
# - port: "https" # 메트릭 엔드포인트 포트
# path: "/metrics" # 메트릭 경로
# interval: "30s" # 이 엔드포인트의 스크래핑 간격
# scheme: "https" # HTTP 스키마 (http 또는 https)
# tlsConfig:
# insecureSkipVerify: true # TLS 인증서 검증 건너뛰기
# metricRelabelConfigs:
# - source_labels: ["__name__"]
# regex: "apiserver_request_total" # 수집할 메트릭 필터링
# action: "keep" # 일치하는 메트릭만 유지

다양한 구성 예제

와탭 오퍼레이터는 지원하는 K8s 에이전트와 더불어, APM 자동 설치, 커스텀 메트릭 에이전트 설치를 지원합니다. 아래의 구성예제를 통해 설치할 수 있습니다.

GPU 모니터링

Kubernetes 모니터링 에이전트를 설치하지 않고 와탭 노드 에이전트 파드에 DCGM-EXPORTER 컨테이너를 사이드카 형태로 배포합니다. 사용자는 별다른 구성없이 아래 yaml을 적용하여 수집되는 메트릭스는 GPU 대시보드에서 확인할 수 있습니다.

노트

노드 에이전트에 내장된 사이드카가 아니라 직접 DCGM-EXPORTER를 구성한 경우, OpenAgent(오픈에이전트) 구성 문서를 참고하여 dcgm 오픈메트릭을 수집할 수 있습니다.

GPU 모니터링 자동 설치

GPU 모니터링 자동 설치
    apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
openAgent:
enabled: true # Open Agent 활성화
k8sAgent:
masterAgent:
enabled: true
nodeAgent:
enabled: true
gpuMonitoring:
enabled: true # GPU 모니터링 활성화

참고. 자동 설치 시 Open Agent가 자동으로 DCGM Exporter를 발견하고 스크래핑합니다.

GPU 노드 톨러레이션 설정

GPU 노드에 테인트가 있는 경우 톨러레이션을 추가해야 합니다.

GPU 노드 톨러레이션 설정
    apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
k8sAgent:
nodeAgent:
enabled: true
tolerations:
- key: "nvidia.com/gpu"
operator: "Exists"
effect: "NoSchedule"
- key: "gpu"
operator: "Exists"
effect: "NoSchedule"
gpuMonitoring:
enabled: true

APM 자동 설치

Kubernetes 모니터링 에이전트를 활성화하지 않고 쿠버네티스 클러스터에 존재하는 APM을 자동 설치합니다.

노트

자세한 내용은 APM 자동 설치 구성 문서를 참고하세요.

APM 자동 설치
apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
apm:
instrumentation:
targets:
- name: hello-world
enabled: true
language: "java"
whatapApmVersions:
java: "2.2.58"
namespaceSelector:
matchNames:
- default
podSelector:
matchLabels:
app: "hello-world"
config:
mode: default

OpenAgent

Kubernetes 모니터링 에이전트나 APM 계측을 활성화하지 않고 Prometheus 스타일 메트릭을 수집하기 위한 OpenAgent 컴포넌트만 구성합니다.

노트

자세한 내용은 오픈에이전트 구성 문서를 참고하세요.

apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
openAgent:
enabled: true
targets:
- targetName: kube-apiserver
type: ServiceMonitor
namespaceSelector:
matchNames:
- "default"
selector:
matchLabels:
component: apiserver
provider: kubernetes
endpoints:
- port: "https"
path: "/metrics"
interval: "30s"
scheme: "https"
tlsConfig:
insecureSkipVerify: true
metricRelabelConfigs:
- source_labels: ["__name__"]
regex: "apiserver_request_total"
action: "keep"

Kubernetes 모니터링과 APM 계측 함께 사용

apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
spec:
features:
apm:
instrumentation:
targets:
- name: hello-world
enabled: true
language: "java"
whatapApmVersions:
java: "2.2.58"
namespaceSelector:
matchNames:
- default
podSelector:
matchLabels:
app: "hello-world"
config:
mode: default
k8sAgent:
masterAgent:
enabled: true
nodeAgent:
enabled: true
openAgent:
enabled: true
targets:
- targetName: kube-apiserver
type: ServiceMonitor
namespaceSelector:
matchNames:
- "default"
selector:
matchLabels:
component: apiserver
provider: kubernetes
endpoints:
- port: "https"
path: "/metrics"
interval: "30s"
scheme: "https"
tlsConfig:
insecureSkipVerify: true
metricRelabelConfigs:
- source_labels: ["__name__"]
regex: "apiserver_request_total"
action: "keep"