APM 자동 설치 구성
와탭 오퍼레이터 설치 후, WhatapAgent CR(Custom Resource)을 정의하면 쿠버네티스 파드나 네임스페이스에 APM 에이전트를 자동 주입합니다.
설치 전 요구사항
- Kubernetes 환경
- Helm 3.2 이상
- Whatap 라이선스 키(필수)
- Whatap 수집 서버 정보(IP 주소와 포트)
- whatap-operator(오퍼레이터 설치 가이드)
WhatapAgent CR 기본 구성
다음은 CR을 구성한 기본 샘플입니다. 추가 설정이 필요하면 APM 설정 예제를 참고하세요.
apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: default # 리소스 이름
namespace: whatap-monitoring # 설치 대상 네임스페이스
spec:
features:
apm:
instrumentation:
targets:
- name: "java-sample" # APM 대상 이름 (식별용)
enabled: "true" # 자동 주입 활성화 여부
language: "java" # 언어: java, python, nodejs 등
whatapApmVersions:
java: "2.2.58" # 해당 언어의 APM 에이전트 버전
namespaceSelector:
matchNames:
- default # APM 주입 대상 네임스페이스
podSelector:
matchLabels:
app: hello-world # APM 주입 대상 파드 라벨
config:
mode: default # 기본 설정 또는 configMap 참조 가능
envs:
WHATAP_JAVA_AGENT_PATH: /whatap-agent/whatap.agent.java.jar
OKIND: hello
APM 설정 예제
특정 네임스페이스 파드에 자동 주입
-
backend네임스페이스의app=shop라벨을 가진 파드에 Java APM을 자동 주입합니다. -
현재 Java는
latest버전만 지원하며, 다른 언어는 추후 지원 예정입니다. -
ConfigMapRef로 설정 정보를 전달합니다. ConfigMap은 대상 애플리케이션과 같은 네임스페이스에 있어야 합니다.
apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
namespace: whatap-monitoring
spec:
features:
apm:
instrumentation:
targets:
- name: shop-api
enabled: "true"
language: "java"
whatapApmVersions:
java: "latest"
namespaceSelector:
matchNames:
- backend
podSelector:
matchLabels:
app: shop
config:
mode: configMapRef
configMapRef:
name: shop-api-config
shop-api-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: shop-api-config
namespace: backend
data:
whatap.conf: |
mtrace_enabled=true
mtrace_basetime=0
trace_normalize_enabled=true
워크로드별 ConfigMap 분리 설정
system 네임스페이스의 app=router 파드와 backend 네임스페이스의 app=shop 파드에 각각 다른 ConfigMap(request-router-config, shop-api-config)을 주입합니다.
apiVersion: monitoring.whatap.com/v2alpha1
kind: WhatapAgent
metadata:
name: whatap
namespace: whatap-monitoring
spec:
features:
apm:
instrumentation:
targets:
- name: request-router
enabled: "true"
language: "java"
whatapApmVersions:
java: "latest"
namespaceSelector:
matchNames:
- system
podSelector:
matchLabels:
app: router
config:
mode: configMap
configMapRef:
name: request-router-config
- name: shop-api
enabled: "true"
language: "java"
whatapApmVersions:
java: "latest"
namespaceSelector:
matchNames:
- backend
podSelector:
matchLabels:
app: shop
config:
mode: configMapRef
configMapRef:
name: shop-api-config
shop-api-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: shop-api-config
namespace: backend
data:
whatap.conf: |
mtrace_enabled=true
mtrace_basetime=0
trace_normalize_enabled=true
request-router-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: request-router-config
namespace: backend
data:
whatap.conf: |
mtrace_enabled=false
mtrace_basetime=100
trace_normalize_enabled=true